RTD Open Data
RTD publishes the following data:
- Schedule data, including full schedule and route configuration as a:
- GTFS dataset for all RTD services
- Real-time data for RTD bus services, including information about arrival/departure predictions and vehicle locations as GTFS realtime feeds:
- Alerts
- Trip Updates
- Vehicle Positions
The release of real-time data feeds for RTD bus services is the first phase of an initiative which will make similar information available for RTD light rail and commuter rail services in the future.
Concepts and IDs are consistent across data feeds wherever possible.
Use of RTD Data
Access to the RTD data feeds is governed by the language in the RTD License Agreement in addition to the following conditions:
- RTD does not guarantee technical support of any kind to users.
- No user may execute polling commands more often than every 30 seconds. A user that polls more often than that or otherwise overtaxes RTD’s system may be suspended or terminated from the data feed.
Getting Help and Updates
RTD is happy to answer developer questions at [email protected].
Developers are encouraged to join the RTD Developers discussion forum at https://groups.google.com/forum/#!forum/rtd-developers to get the latest updates.
GTFS Schedule Dataset
RTD schedule data is available in General Transit Feed Specification (GTFS) for use in developing applications and other mobile tools for RTD riders. If you plan on using our GTFS data, please follow these rules:
- Keep your data up-to-date. Major changes to RTD schedules typically happen three times a year in January, May and August. Visit Service Changes to get more information.
- Do not use the RTD logo, RTD maps or any other RTD content found on the RTD website without permission in advance from RTD. To request permission, please email [email protected].
You must read and agree to the License Agreement before you download the data.
Learn more about General Transit Feed Specification.
GTFS Realtime Feeds
RTD provides real-time data feeds for arrival predictions and vehicle locations in GTFS realtime format.
*Realtime data is accurate within 2 minutes.
You must read and agree to the License Agreement before you download the data.
Learn more about General Transit Feed Specification.
GTFS-RT feeds are provided in separate protocol buffer files:
- Alerts - this feed includes alerts about route disruptions and stop closures.
- Trip Updates – this feed includes trip progress and arrival/departure predictions.
- Vehicle Positions – this feed includes vehicle positions.
Relationship with Other RTD Data Feeds
GTFS-RT feeds have to be linked to GTFS schedule data for most applications.
Format Documentation
The GTFS-realtime specification is detailed at https://developers.google.com/transit/gtfs-realtime/.
The Protocol Buffer format is detailed at http://code.google.com/p/protobuf/.
The GTFS-realtime feeds have the following format:
- header
-
- gtfs_realtime_version: “1.0” (TripUpdate, VehiclePositions) or “2.0” (Alerts)
- incrementality: FULL_DATASET
- timestamp
- entity
-
- id
- alert. Included if alert entity is provided. See alert below.
- trip_update. Included if trip_update entity is provided. See trip_update below.
- vehicle. Included if vehicle entity is provided. See vehicle below.
- alert
-
- active_period
- start
- end (optional)
- informed_entity
-
agency_id
- route_id
-
route_type
-
stop_id
-
- stop_time_update
- stop_sequence
- stop_id
- arrival
- time. see additional information
- departure
- time. see additional information
- schedule_relationship. SCHEDULED if stop is a scheduled stop, SKIPPED if stop is skipped.
- cause
- effect
- header_text
- translation
- text
- language
- translation
- description_text
- translation
- text
- language
- translation
- active_period
- trip_update
-
- trip
- trip_id
- route_id
- direction_id
- schedule_relationship. SCHEDULED if trip is running as scheduled, ADDED if trip is an added trip, or CANCELED if trip has been canceled.
- vehicle
- id
- label
- stop_time_update
- stop_sequence
- stop_id
- arrival
- time. see additional information
- departure
- time. see additional information
- schedule_relationship. SCHEDULED if stop is a scheduled stop, SKIPPED if stop is skipped.
- timestamp. the latest time this vehicle’s position was recorded.
- trip
- vehicle
-
- trip
- trip_id
- route_id
- direction_id
- schedule_relationship. SCHEDULED if trip is running as scheduled, ADDED if trip is an added trip, or CANCELED if trip has been canceled.
- vehicle
- id
- label
- position
- latitude
- longitude
- bearing
- stop_id
- current_status. Will have either a 0, 1, or 2.
- 0 = INCOMING_AT
- 1 = STOPPED_AT - if vehicle is stopped at the stop_id
- 2 = IN_TRANSIT_TO - if vehicle is on its way to the stop_id
- timestamp
- trip
Additional Information
- Arrival and departure prediction information:
- Both arrival and departure prediction information will be provided for all stops in stop_time_update.
- For many trips, departure prediction information will only be provided at the origin stop and arrival prediction information will only be provided at the destination stop.
- There are cases where an origin stop will have arrival prediction information if the trip originates at a non-public stop.
- There are cases where a destination stop will have departure prediction information if the trip terminates at a non-public stop.
- Detours:
- Stops that are not served will have schedule_relationship set to SKIPPED.
- stop_time_update, including arrival/departure predictions, will not be provided for any replacement stops.
Samples
Sample of the Trip Updates Feed
header { gtfs_realtime_version: "1.0" incrementality: FULL_DATASET timestamp: 1449176392 } entity { id: "1449176392_109470943" trip_update { trip { trip_id: "109470943" schedule_relationship: SCHEDULED route_id: "0" direction_id: 0 } stop_time_update { stop_sequence: 6 arrival { time: 1449176381 } departure { time: 1449176381 } stop_id: "25676" schedule_relationship: SCHEDULED } stop_time_update { stop_sequence: 7 arrival { time: 1449176479 } departure { time: 1449176479 } stop_id: "22454" schedule_relationship: SCHEDULED } stop_time_update { stop_sequence: 8 arrival { time: 1449176585 } departure { time: 1449176585 } stop_id: "20378" schedule_relationship: SCHEDULED } vehicle { id: "6010" label: "6010" } timestamp: 1449042054 } }
Sample of the Vehicle Positions Feed
header { gtfs_realtime_version: "1.0" incrementality: FULL_DATASET timestamp: 1449042263 } entity { id: "1449042263_1505" vehicle { trip { trip_id: "109486700" schedule_relationship: SCHEDULED route_id: "AB" direction_id: 1 } position { latitude: 39.8419 longitude: -104.676231 bearing: 161 } current_status: 2 timestamp: 1449042245 stop_id: "22903" vehicle { id: "1505" label: "1505" } } }
Sample of the Alerts Feed
header { gtfs_realtime_version: "2.0" incrementality: FULL_DATASET timestamp: 1602010651 } entity { id: "7102" alert { active_period { start: 1602599400 end: 1602624600 } informed_entity { agency_id: "RTD" route_id: "3" route_type: 3 stop_id: "33212" } informed_entity { agency_id: "RTD" route_id: "1" route_type: 3 stop_id: "33212" } cause: CONSTRUCTION effect: NO_SERVICE header_text { translation { text: "The following closed from 8:30 AM to 3:30 PM on Tue Oct 13 due to construction: W Virginia Ave & S Saulsbury St (#33212) (westbound)." language: "en" } } description_text { translation { text: "Affected routes:\r\n1\r\n3" language: "en" } } }