Skip to content
Docs

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
Fileshttps://data.transitlab.nyc/v1/bus_lanes.parquetOne file. In the database as transitlab.bus_lanes.

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

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.

-- The stretches where buses lose the most time, with no bus lane
SELECT 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_lost
FROM 'https://data.transitlab.nyc/v1/bus_lanes.parquet'
WHERE NOT covered
ORDER BY bus_hours_lost DESC
LIMIT 15;

For totals by street, use bus delay by street.

route_idvarchar

MTA route.

directionvarchar

Direction letter: N, S, E or W.

a_namevarchar

Timepoint stop where the stretch starts, e.g. 2 AV/E 95 ST.

b_namevarchar

Timepoint stop where it ends.

streetvarchar

The street, when both stops are on the same one; empty otherwise.

boroughvarchar

Borough.

route_typevarchar

MTA route type, e.g. LCL/LTD, SBS, EXP.

milesdouble

Length of the stretch.

mphdouble

Average speed, 7 am to 7 pm.

best_mphdouble

Speed in its fastest hour of the day (hours with 20+ buses).

delay_mindouble

Minutes per bus over the best hour's time.

buses_per_weekdaydouble

Buses a weekday, 7 am to 7 pm.

bus_hours_lostdouble

delay_min × buses, in hours per weekday.

lane_sharedouble

Share of the stretch within 15 m of a DOT bus lane, 0 to 1.

coveredboolean

True if most of the stretch has a bus lane.

  • “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.