Bus route speeds
Our own bus speeds by route, direction and hour, worked out each night from every bus's reported position.
- Rows
- 11,120
- Size
- 120 KB
- Covers
- October 2026 to about two days ago
- Updated
- Nightly
- Source
- MTA bus GTFS-realtime vehicle positions and bus GTFS
- License
- CC BY 4.0
https://data.transitlab.nyc/v1/bus_route_speeds.parquetRows and size from catalog.json, 2026-10-06.
What a row is
Section titled “What a row is”One route, direction and New York hour on one day. We snap each bus’s reported position to its route’s shape, then add up the distance it covered and the time it took between reports. Time spent at stops and lights counts, as in the MTA’s own figures.
To combine rows, add up meters and seconds, then divide:
sum(meters) / sum(seconds) * 2.23694 -- miles per hourAveraging the mph column instead would give a quiet hour as much weight as a busy one.
Query it
Section titled “Query it”-- Speed by hour of day on the M15 Select Bus, weekdaysSELECT hour, round(sum(meters) / sum(seconds) * 2.23694, 2) AS mphFROM 'https://data.transitlab.nyc/v1/bus_route_speeds.parquet'WHERE route_id = 'M15+' AND dayofweek(service_date::DATE) BETWEEN 1 AND 5GROUP BY hourORDER BY hour;Columns
Section titled “Columns”service_datevarcharNew York date, YYYY-MM-DD.
route_idvarcharMTA route, e.g. M15+ for the M15 Select Bus.
direction_idintegerGTFS direction, 0 or 1.
hourintegerNew York hour of day, 0 to 23.
metersdoubleDistance buses covered along the route shape.
secondsdoubleTime they took. Stops and lights count; layovers don't.
tripsintegerTrips that contributed.
intervalsintegerPairs of position reports that contributed.
computed_attimestampWhen the row was worked out (UTC).
mphdoublemeters over seconds, in miles per hour. To combine rows, add up meters and seconds instead.
Good to know
Section titled “Good to know”- Left out: reports within 150 m of either end of the route (buses waiting to start), more than 60 m off the route, gaps over 5 minutes, and jumps faster than 56 mph.
- A day appears about two days later. A New York day runs to 04:00 UTC the next day, and positions are added the morning after that.
- One row per key. If a day was worked out twice, the file keeps the latest.
- On one Sunday in October 2026 our citywide speed was 8.66 mph against the MTA’s 8.59 for the month, and 91% of routes were within 10%. See Bus speeds.