Service alerts
Every MTA bus, subway and rail service alert, with each change to its text or timing, since October 2026.
- Rows
- 125,174
- Size
- 4.9 MB
- Covers
- October 2026 onward
- Updated
- Daily
- Source
- MTA GTFS-realtime alert feeds
- License
- CC BY 4.0
https://data.transitlab.nyc/v1/transit_alerts/year=YYYY/month=MM/YYYY-MM.parquetRows and size from catalog.json, 2026-10-06.
What a row is
Section titled “What a row is”One change to one alert: it appeared, its text or details changed, or it ended. Alerts come from two MTA feeds, bus_alerts and mta_alerts (subway and rail). content_hash changes whenever anything in the alert does. event works as for bus positions.
Query it
Section titled “Query it”-- Subway and rail alerts that first appeared yesterdaySELECT alert_id, header, cause, effectFROM transitlab.transit_alertsWHERE source = 'mta_alerts' AND event IN ('added', 'baseline') AND observed_at >= current_date - 1 AND observed_at < current_dateQUALIFY row_number() OVER (PARTITION BY alert_id ORDER BY observed_at) = 1ORDER BY header;informed_entities is JSON. To find alerts about one route:
SELECT DISTINCT alert_id, headerFROM transitlab.transit_alertsWHERE json_contains(informed_entities, '{"routeId": "A"}');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.
sourcevarcharWhich feed: bus_alerts or mta_alerts (subway and rail).
alert_idvarcharMTA alert ID.
content_hashvarcharChanges whenever the alert's text or details change.
headervarcharHeadline, in English.
descriptionvarcharBody text, in English.
causevarcharGTFS cause, e.g. CONSTRUCTION.
effectvarcharGTFS effect, e.g. DETOUR.
active_periodsvarcharList of start and end times.
informed_entitiesvarcharRoutes, stops and trips the alert is about.
alertvarcharThe whole alert as the feed gave it.
Good to know
Section titled “Good to know”- One alert, many rows. Planned work alerts are often edited many times; group by
alert_id. active_periodsholds when the alert applies, which can be days after it first appears.