Next Train API
Serves any GTFS feed as a JSON API. Transit agencies and developers alike can deploy the open source code to their own Heroku server.
NextTrain API
The Next Train API provides a JSON web service for any GTFS feed. Deploy this source code to your own Heroku server to set up an API for your own agency's feed. Let me know how it goes. I'm happy to support you!
Example request URL: /api/v1/trains.json?date=2017-12-17&origin=BRN&destination=NHV
Example response:
{
"query": {"origin": "BRN", "destination": "NHV", "date": "2017-12-17"},
"received_at": "2017-12-17 18:00:14 -0500",
"response_type": "Api::V1::TrainsResponse",
"errors": [],
"results": [
{
"schedule_id": 22,
"service_guid": "WE",
"route_guid": "SLE",
"trip_headsign": "Westbound",
"trip_guid": "3613",
"origin_departure": "2017-12-17T07:24:00-0500",
"destination_arrival": "2017-12-17T07:40:00-0500",
"stops": [
{
"stop_sequence": 378,
"stop_guid": "NLC",
"arrival_time": "2017-12-17T06:30:00-0500",
"departure_time": "2017-12-17T06:30:00-0500"
},
{
"stop_sequence": 379,
"stop_guid": "OSB",
"arrival_time": "2017-12-17T06:55:00-0500",
"departure_time": "2017-12-17T06:55:00-0500"
},
{
"stop_sequence": 380,
"stop_guid": "WES",
"arrival_time": "2017-12-17T07:00:00-0500",
"departure_time": "2017-12-17T07:00:00-0500"
},
{
"stop_sequence": 381,
"stop_guid": "CLIN",
"arrival_time": "2017-12-17T07:05:00-0500",
"departure_time": "2017-12-17T07:05:00-0500"
},
{
"stop_sequence": 382,
"stop_guid": "MAD",
"arrival_time": "2017-12-17T07:10:00-0500",
"departure_time": "2017-12-17T07:10:00-0500"
},
{
"stop_sequence": 383,
"stop_guid": "GUIL",
"arrival_time": "2017-12-17T07:16:00-0500",
"departure_time": "2017-12-17T07:16:00-0500"
},
{
"stop_sequence": 384,
"stop_guid": "BRN",
"arrival_time": "2017-12-17T07:24:00-0500",
"departure_time": "2017-12-17T07:24:00-0500"
},
{
"stop_sequence": 385,
"stop_guid": "ST",
"arrival_time": "2017-12-17T07:37:00-0500",
"departure_time": "2017-12-17T07:37:00-0500"
},
{
"stop_sequence": 386,
"stop_guid": "NHV",
"arrival_time": "2017-12-17T07:40:00-0500",
"departure_time": "2017-12-17T07:40:00-0500"
}
]
},
// ... etc. ...
{
"schedule_id": 22,
"service_guid": "WE",
"route_guid": "SLE",
"trip_headsign": "Westbound",
"trip_guid": "3621",
"origin_departure": "2017-12-17T09:19:00-0500",
"destination_arrival": "2017-12-17T09:35:00-0500",
"stops": [
{
"stop_sequence": 402,
"stop_guid": "NLC",
"arrival_time": "2017-12-17T08:25:00-0500",
"departure_time": "2017-12-17T08:25:00-0500"
},
{
"stop_sequence": 403,
"stop_guid": "OSB",
"arrival_time": "2017-12-17T08:50:00-0500",
"departure_time": "2017-12-17T08:50:00-0500"
},
{
"stop_sequence": 404,
"stop_guid": "WES",
"arrival_time": "2017-12-17T08:55:00-0500",
"departure_time": "2017-12-17T08:55:00-0500"
},
{
"stop_sequence": 405,
"stop_guid": "CLIN",
"arrival_time": "2017-12-17T09:00:00-0500",
"departure_time": "2017-12-17T09:00:00-0500"
},
{
"stop_sequence": 406,
"stop_guid": "MAD",
"arrival_time": "2017-12-17T09:05:00-0500",
"departure_time": "2017-12-17T09:05:00-0500"
},
{
"stop_sequence": 407,
"stop_guid": "GUIL",
"arrival_time": "2017-12-17T09:11:00-0500",
"departure_time": "2017-12-17T09:11:00-0500"
},
{
"stop_sequence": 408,
"stop_guid": "BRN",
"arrival_time": "2017-12-17T09:19:00-0500",
"departure_time": "2017-12-17T09:19:00-0500"
},
{
"stop_sequence": 409,
"stop_guid": "ST",
"arrival_time": "2017-12-17T09:32:00-0500",
"departure_time": "2017-12-17T09:32:00-0500"
},
{
"stop_sequence": 410,
"stop_guid": "NHV",
"arrival_time": "2017-12-17T09:35:00-0500",
"departure_time": "2017-12-17T09:35:00-0500"
}
]
}
]
}