Station
Embarcadero
Loading the next train…
Scheduled times are the timetable. Bold rows are live predictions.
String
Stations down the page, time across. Each train is a line. Solid is this direction. Dashed is the return.
API
Canonical door transit-departures.over9000.cc. Responses are JSON. CORS is open. GET, HEAD, and OPTIONS only.
/v1/departures is the compiled timetable. /v1/realtime and /v1/alerts are BART GTFS-Realtime, fetched here so a browser can read them.
| Method | Path | Returns |
|---|---|---|
| GET | /v1 | Endpoint index |
| GET | /v1/feed | Feed, timezone, coverage |
| GET | /v1/routes | Routes |
| GET | /v1/routes/{route_id} | One route |
| GET | /v1/stops | Search or nearest stops |
| GET | /v1/stops/{stop_id} | Stop and its routes |
| GET | /v1/departures | Next departures |
| GET | /v1/realtime | Trip updates |
| GET | /v1/alerts | Service alerts |
| GET | /health | Liveness |
| GET | /openapi.json | OpenAPI 3.0 |
Departures query
stop_id- Required. Parent station id from
/v1/stops. when- ISO time.
Zor an offset is absolute. Without a zone, the clock is America/Los_Angeles. Default is now. route_id- Only this route.
limit- 1–40. Default 10.
within- Horizon in minutes. Default 2160 (36 hours), max 2880.
Example
Yellow south leaves Embarcadero (EMBR) at 15:52 on Thursday 22 Oct 2026.
curl "https://transit-departures.over9000.cc/v1/departures?stop_id=EMBR&route_id=1&when=2026-10-22T15:50:00&limit=1"
Feed
Bundled schedule: BART GTFS. Predictions: trip updates and alerts. Rebuild another zip with pnpm compile -- feed.zip. This deployment does not fetch a GTFS zip on request.
Transit Departures is not affiliated with BART.