Bus delay and bus lanes
For every stretch between two timepoint stops, how slow buses are, how much time they lose, and how much of it has a bus lane.
- Rows
- 4,219
- Size
- 153 KB
- Covers
- Weekdays over the latest six months the MTA has published
- Updated
- Nightly (the MTA publishes monthly)
- Source
- MTA bus speeds between timepoints, NYC DOT bus lanes, MTA bus GTFS
- License
- CC BY 4.0
https://data.transitlab.nyc/v1/bus_lanes.parquetRows and size from catalog.json, 2026-10-06.
What a row is
Section titled “What a row is”One stretch of one route in one direction, between two timepoint stops (the stops the MTA times buses at). For each we compare the daytime speed (7 am to 7 pm) with the speed in its fastest hour, roughly how fast buses go when the street is clear. The gap, times the buses that run it, is the bus-hours lost each weekday.
lane_share is the share of the stretch within 15 m of a bus lane on NYC DOT’s map. Lanes are mapped on street centre lines, so a lane in either direction counts, and so do lanes that run only at rush hour.
Query it
Section titled “Query it”-- The stretches where buses lose the most time, with no bus laneSELECT route_id, a_name, b_name, borough, round(mph, 1) AS mph, round(best_mph, 1) AS best_mph, round(bus_hours_lost, 1) AS bus_hours_lostFROM 'https://data.transitlab.nyc/v1/bus_lanes.parquet'WHERE NOT coveredORDER BY bus_hours_lost DESCLIMIT 15;For totals by street, use bus delay by street.
Columns
Section titled “Columns”route_idvarcharMTA route.
directionvarcharDirection letter: N, S, E or W.
a_namevarcharTimepoint stop where the stretch starts, e.g. 2 AV/E 95 ST.
b_namevarcharTimepoint stop where it ends.
streetvarcharThe street, when both stops are on the same one; empty otherwise.
boroughvarcharBorough.
route_typevarcharMTA route type, e.g. LCL/LTD, SBS, EXP.
milesdoubleLength of the stretch.
mphdoubleAverage speed, 7 am to 7 pm.
best_mphdoubleSpeed in its fastest hour of the day (hours with 20+ buses).
delay_mindoubleMinutes per bus over the best hour's time.
buses_per_weekdaydoubleBuses a weekday, 7 am to 7 pm.
bus_hours_lostdoubledelay_min × buses, in hours per weekday.
lane_sharedoubleShare of the stretch within 15 m of a DOT bus lane, 0 to 1.
coveredbooleanTrue if most of the stretch has a bus lane.
Good to know
Section titled “Good to know”- “Best hour” is not free flow. It is the fastest hour with at least 20 buses, which on busy streets may still be slow.
- Stretches can be long. A Select Bus stretch can run 6 miles over local streets and highway.
- The lane map is not the street. A painted lane with cars parked in it still counts as a lane.
- Method and results: Where buses lose time.