https://github.com/data-creative/next-train-api
Serves any GTFS feed as a JSON API! :train: :train:
https://github.com/data-creative/next-train-api
Last synced: 22 days ago
JSON representation
Serves any GTFS feed as a JSON API! :train: :train:
- Host: GitHub
- URL: https://github.com/data-creative/next-train-api
- Owner: data-creative
- License: other
- Created: 2017-05-30T03:42:36.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-29T02:31:44.000Z (almost 7 years ago)
- Last Synced: 2025-01-30T17:38:46.506Z (9 months ago)
- Language: Ruby
- Homepage:
- Size: 316 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
- trackawesomelist - Next Train API (⭐3) - Serves any GTFS feed as a JSON API. Transit agencies and developers alike can deploy the open source code to their own Heroku server. (Recently Updated / [Oct 02, 2024](/content/2024/10/02/README.md))
README
# 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:
```js
{
"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"
}
]
}
]
}
```
## [Contributing](/CONTRIBUTING.md)
## [Deploying](/DEPLOYING.md)
## [License](/LICENSE.md)