Skip to content
Docs

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
Fileshttps://data.transitlab.nyc/v1/bus_predictions/year=YYYY/month=MM/YYYY-MM-DD.parquetOne file a day, 3 so far. In the database as transitlab.bus_predictions.

Rows and size from catalog.json, 2026-10-06.

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.

-- 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_away
FROM transitlab.bus_predictions
WHERE 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.

row_idvarchar

Stable ID of the row. If a row appears twice, keep one.

observed_attimestamp

When we fetched the feed snapshot this row came from (UTC).

eventvarchar

baseline, added, changed or removed. See reading change events.

trip_idvarchar

GTFS trip.

start_datevarchar

Trip start date, YYYYMMDD.

route_idvarchar

MTA route.

direction_idinteger

GTFS direction, 0 or 1.

vehicle_idvarchar

Bus serving the trip.

stop_idvarchar

Stop the prediction is for.

stop_sequenceinteger

Order of the stop on the trip.

arrivaltimestamp

Predicted arrival (UTC).

departuretimestamp

Predicted departure (UTC).

update_tstimestamp

When the MTA made the prediction (UTC).

  • removed usually 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.