Bus arrival predictions
Every arrival time the MTA predicted for each bus at each stop, the feed behind countdown clocks and apps, since October 2026.
- Rows
- 47,536,889
- Size
- 529 MB
- Covers
- 2026-10-02 onward
- Updated
- Daily
- Source
- MTA bus GTFS-realtime trip updates
- License
- CC BY 4.0
https://data.transitlab.nyc/v1/bus_predictions/year=YYYY/month=MM/YYYY-MM-DD.parquetRows and size from catalog.json, 2026-10-06.
What a row is
Section titled “What a row is”One change to the prediction for one trip at one stop. We fetch the MTA’s bus trip updates and store a prediction again only once its arrival or departure time moves by 30 seconds or more from the last one we stored. Small drifts add up until they cross that line, so the stored times never stray more than 30 seconds from the feed.
event works as for bus positions: baseline each hour, then added, changed and removed.
Query it
Section titled “Query it”-- How did the predicted arrival change as one bus neared one stop?SELECT observed_at, event, arrival, round(date_diff('second', observed_at, arrival) / 60.0, 1) AS minutes_awayFROM transitlab.bus_predictionsWHERE trip_id = '…' AND stop_id = '…' AND observed_at >= '2026-10-06' AND observed_at < '2026-10-07'ORDER BY observed_at;Pick a trip_id and stop_id from a first look at one day’s file. To score predictions, compare them with when the bus reached the stop in bus positions; Bus countdown accuracy does this.
Columns
Section titled “Columns”row_idvarcharStable ID of the row. If a row appears twice, keep one.
observed_attimestampWhen we fetched the feed snapshot this row came from (UTC).
eventvarcharbaseline, added, changed or removed. See reading change events.
trip_idvarcharGTFS trip.
start_datevarcharTrip start date, YYYYMMDD.
route_idvarcharMTA route.
direction_idintegerGTFS direction, 0 or 1.
vehicle_idvarcharBus serving the trip.
stop_idvarcharStop the prediction is for.
stop_sequenceintegerOrder of the stop on the trip.
arrivaltimestampPredicted arrival (UTC).
departuretimestampPredicted departure (UTC).
update_tstimestampWhen the MTA made the prediction (UTC).
Good to know
Section titled “Good to know”removedusually means the bus passed the stop and the MTA stopped predicting it, but it can also mean the trip was cancelled or the feed dropped it.- Large. Always filter on
observed_at, or read single days from their files.