This documentation is for the deprecated Transitland v1 platform.
Query schedules using the Datastore API
The Transitland Datastore schedule API collapses the many elements of a schedule into an entity. Transitland models each trip between two stops as an edge, called a ScheduleStopPair
(SSP). Each SSP contains an origin stop, a destination stop, a route, an operator, and arrival and departure times. Each edge also includes a service calendar, describing which days a trip is possible. Accessibility information for wheelchair and bicycle riders is included, if available.
Some of this data is normally split across multiple GTFS tables, but is here denormalized for simpler access: each edge contains enough information to get from one stop to another, to another, and finally to your destination.
ScheduleStopPair Data Model
These are the attributes and data types of a ScheduleStopPair.
Attribute | Type | Description |
---|---|---|
feed_onestop_id | Onestop ID | Feed |
feed_version_sha | String | Feed Version |
route_onestop_id | Onestop ID | Route |
route_stop_pattern_onestop_id | Onestop ID | Route Stop Pattern |
operator_onestop_id | Onestop ID | Operator |
origin_onestop_id | Onestop ID | Origin stop |
origin_timezone | String | Origin stop timezone |
origin_arrival_time | Time | Time vehicle arrives at origin from previous stop |
origin_departure_time | Time | Time vehicle leaves origin |
origin_timepoint_source | Enum | Origin timepoint source |
origin_dist_traveled | Number | Distance in meters along the associated Route Stop Pattern line geometry |
destination_onestop_id | Onestop ID | Destination stop |
destination_timezone | String | Destination stop timezone |
destination_arrival_time | Time | Time vehicle arrives at destination |
destination_departure_time | Time | Time vehicle leaves destination for next stop |
destination_timepoint_source | Enum | Destination timepoint source |
destination_dist_traveled | Number | Distance in meters along the associated Route Stop Pattern line geometry |
window_start | Time | The previous known exact timepoint |
window_end | Time | The next known exact timepoint |
trip | String | A text label for a sequence of edges |
trip_headsign | String | A human-friendly description of the ultimate destination |
trip_short_name | String | A commonly known human-readable trip identifier, such as a train number |
block_id | String | A block of trips made by the same vehicle |
service_start_date | Date | Date service begins |
service_end_date | Date | Date service ends |
service_days_of_week | Boolean Array | Scheduled service, in ISO order (Monday to Sunday) |
service_added_dates | Date Array | Array of additional dates service is scheduled |
service_except_dates | Date Array | Array of dates service is not scheduled (for example, holidays) |
wheelchair_accessible | Boolean | Wheelchair accessible: true, false, or null (unknown) |
bikes_allowed | Boolean | Bike accessible: true, false, or null (unknown) |
drop_off_type | Enum | Passenger drop-off |
pickup_type | Enum | Passenger pickup |
frequency_type | Enum | Frequency-based schedule |
frequency_headway_seconds | Integer | Frequency-based schedule headway, in seconds |
frequency_start_time | Time | Start of frequency-based schedule |
frequency_end_time | Time | End of frequency-based schedule |
Data types
Times can be specified with more than 24 hours, as indicated by GTFS. For example, 25:10 is 1:10am the day after the trip begins.
Timepoint source
gtfs_exact
: An exact timepoint in the GTFSgtfs_interpolated
: An interpolated timepoint in the GTFStransitland_interpolated_linear
: Interpolated based on linear stop sequencetransitland_interpolated_geometric
: Interpolated based on straight-line distancetransitland_interpolated_shape
: Interpolated based onshape_dist_traveled
Pickup (origin) and drop-off (destination)
null
: Regularly scheduled pickup and drop-offunavailable
: Pickup or drop-off not availableask_driver
: Ask the driver for pickup or drop-offask_agency
: Phone the agency to schedule in advance
Frequency-based schedules
A frequency-based schedule runs at an interval, instead of at specific departure and arrival times. When frequency_type
is present, the trip is repeated every frequency_headway_seconds
beginning at frequency_start_time
and ending at frequency_end_time
. See the GTFS documentation for frequencies.txt for more information.
The values for frequency_type
are:
exact
: service is exactly scheduled.not_exact
: service repeats, but timepoints are not exact
Query parameters
The main ScheduleStopPair API endpoint is /api/v1/schedule_stop_pairs. It accepts the following query parameters, which may be freely combined.
Query parameter | Type | Description | Example |
---|---|---|---|
origin_onestop_id | Onestop ID | Origin Stop. Accepts multiple separated by commas. | from Embarcadero BART |
destination_onestop_id | Onestop ID | Destination Stop. Accepts multiple separated by commas. | to Montgomery St. BART |
route_onestop_id | Onestop ID | Route. Accepts multiple separated by commas. | on Muni N |
route_stop_pattern_onestop_id | Onestop ID | Route Stop Pattern. Accepts multiple separated by commas. | with Route Stop Pattern |
operator_onestop_id | Onestop ID | Operator. Accepts multiple separated by commas. | on BART |
date | Date | Service operates on a date | valid on 2015-10-26 |
service_from_date | Date | Service operates on a date, or in the future | valid on and after 2015-10-26 |
service_before_date | Date | Service operates up to and including date | valid on and before 2015-11-30 |
origin_departure_between | Time,Time | Origin departure time between two times | departing between 07:00 - 09:00 |
trip | String | Trip identifier | on trip '03SFO11SUN' |
bbox | Lon1,Lat1,Lon2,Lat2 | Origin Stop within bounding box | in the Bay Area |
The date
and origin_departure_between
query parameters accept special values.
date=today
: Use the current local date.time=now
: Use the current time. You can also specifynow+<seconds>
ornow-<seconds>
. Example:time=now-600,now+600
.
For both of these options, a local timezone must be specified by providing one of the following parameters: origin_onestop_id
, destination_onestop_id
, or operator_onestop_id
.
Note: When you query schedule_stop_pair
, the origin and destination must be directly connected without any stops between them. For example, you can query stops that are next to each other or are coupled as an express route. To find all the trips that travel between certain stops, use the Mapzen Turn-by-Turn API with multimodal costing, which can extract the intermediate stops and do route planning.
Response format
{
"schedule_stop_pairs": [{
"origin_onestop_id": "s-69y7pexjtx-plazademayo<1076s",
"destination_onestop_id": "s-69y7pesyw0-perú<1075s",
"route_onestop_id": "r-69y7n-a",
"route_stop_pattern_onestop_id": "r-69y7n-a-f48841-3c4d66",
"operator_onestop_id": "o-69y7-sbase",
"feed_onestop_id": "f-69y7-recursosdatabuenosairesgobar",
"feed_version_sha1": "95742a1a65826abfa23f5aeaeeb082e45f066801",
"origin_timezone": "America/Argentina/Buenos_Aires",
"destination_timezone": "America/Argentina/Buenos_Aires",
"trip": "A01",
"trip_headsign": "San Pedrito",
"block_id": null,
"trip_short_name": null,
"wheelchair_accessible": null,
"bikes_allowed": null,
"pickup_type": null,
"drop_off_type": null,
"shape_dist_traveled": 0.34,
"origin_arrival_time": "05:00:00",
"origin_departure_time": "05:00:24",
"destination_arrival_time": "05:00:58",
"destination_departure_time": "05:01:22",
"origin_dist_traveled": 58.7,
"destination_dist_traveled": 343.2,
"service_start_date": "2014-03-01",
"service_end_date": "2017-12-31",
"service_added_dates": [],
"service_except_dates": ["2015-01-01", "2015-02-16"],
"service_days_of_week": [true, true, true, true, true, false, false],
"window_start": "05:00:24",
"window_end": "05:00:58",
"origin_timepoint_source": "gtfs_exact",
"destination_timepoint_source": "gtfs_exact",
"frequency_start_time": "05:00:00",
"frequency_end_time": "05:56:00",
"frequency_headway_seconds": 480,
"frequency_type": "exact",
"created_at": "2017-02-22T03:42:22.827Z",
"updated_at": "2017-02-22T03:42:22.827Z"
}],
"meta": {
"sort_key": "id",
"sort_order": "asc",
"offset": 0,
"per_page": 1,
"next": "https://transit.land/api/v1/schedule_stop_pairs?feed_onestop_id=f-69y7-recursosdatabuenosairesgobar&offset=1&per_page=1&sort_key=id&sort_order=asc"
}
}