Bus API
Israeli public transport arrivals as JSON. The timetable is the Ministry of Transport's GTFS feed, reloaded every night and trimmed to yesterday, today and tomorrow. Live positions come from the ministry's SIRI feed, updated about once a minute. Each bus is matched to its timetable trip, and its delay is carried forward to the stops ahead.
All endpoints are GET, return JSON, and send Access-Control-Allow-Origin: *. Add pretty to any URL for indented output and lang=en or lang=ar for translated names where the feed has them. Times are ISO 8601 in Israel time.
Stops
- /api/stops?q=text
- Search by stop code (exact first, then prefix) or by name and city words.
limitdefaults to 30. - /api/stops/near?lat=&lon=
- Closest stops with
distance_m.radiusin metres (default 500, max 5000),limit(default 20). - /api/stops/code
- One stop by the number on its sign, with every line that calls there in the loaded days. Stations also list their
platforms. - /api/stops/code/arrivals
- Upcoming buses, soonest first.
minutesahead (default 90),limit(default 30),line=5,480to filter by line number,allto include buses that end at this stop.
Lines and trips
- /api/lines?q=line
- Routes by line number (exact, then prefix) or by words in the route's long name. Each direction and alternative is its own route. Only routes running in the loaded days unless
all. - /api/routes/route_id
- Route details and its stops (from the day's longest trip), with minutes from the first stop. Add
shapefor the path as[lat, lon]pairs. - /api/routes/route_id/vehicles
- Buses on the route right now.
- /api/routes/route_id/departures?date=
- Every departure from the first stop on a day (default today) with its live status.
- /api/trips/trip_id?date=
- One trip, stop by stop, with scheduled and predicted times and whether each stop has been passed.
Vehicles and status
- /api/vehicles?bbox=minLon,minLat,maxLon,maxLat
- Every bus in the latest snapshot, optionally inside a box or on one
route(route_id). Without filters this is the whole country, about 7,000 buses at midday. - /api/status
- Feed dates, snapshot age, how many buses matched the timetable, and the last errors.
Arrival fields
statuslive: the time comes from the bus's position.at_stop: the bus is within 50 m of the stop.at_origin: the bus is waiting at the first stop and the time assumes it leaves now if it's already late.stale: the bus's last position is over 10 minutes old, so the time is the timetable's.scheduled: no bus is reporting for this trip yet.scheduled,predicted,minutespredictedis null when there is no live position.minutescounts to the predicted time if there is one, otherwise to the scheduled time.delay_s,stops_away,vehicle- The delay in seconds (negative means early), how many stops the bus still has to make before this one, and the bus itself: position, bearing, speed, and how old the position is.
Sources
Timetable: Ministry of Transport GTFS. Live positions: the ministry's SIRI StopMonitoring feed, read from the per-minute archive kept by Hasadna's Open Bus project until direct access is set up. The source in use is shown in /api/status.