iBus Transport API
Stops, lines, timetables, live arrivals and official service alerts of Israel's public transport, as JSON over HTTPS. The same data the iBus app uses, for projects with an approved application.
- 271Yerushalayim Boulevard/Mifrats Shlomolive אגדnow
- 42ת.רק''ל הקוממיות/דרך בגיןtimetable דן17:01
Show the JSON of this answer
{
"stopId": "21472",
"updatedAt": "2026-10-21T17:16:22+03:00",
"stale": false,
"arrivals": [
{
"vehicle_ref": "AVEexampleVehicle01",
"line_ref": "9877",
"route_short_name": "271",
"agency_id": "3",
"agency_name": "אגד",
"stop_point_ref": "21472",
"direction_ref": "1",
"dated_vehicle_journey_ref": "9719820",
"data_frame_ref": "2026-10-21",
"item_identifier": "1433250322",
"confidence_level": "probablyReliable",
"call_order": 17,
"distance_from_stop_m": 6887,
"latitude": 32.0769,
"longitude": 34.792049,
"bearing": 206.0,
"velocity": 0.0,
"motion": "stopped",
"destination_name": "Yerushalayim Boulevard/Mifrats Shlomo",
"destination_ref": "35810",
"direction_text": null,
"current_stop_name": null,
"current_stop_code": "21472",
"origin_aimed_departure_utc": "2026-10-21T13:45:00Z",
"expected_arrival_utc": "2026-10-21T14:17:00Z",
"aimed_arrival_utc": null,
"recorded_at_utc": "2026-10-21T14:16:05Z",
"expected_in_min": 0,
"wheelchair_accessible": 1,
"stops_remaining": 16,
"freshness": {
"state": "live",
"age_sec": 17,
"observed_at_utc": "2026-10-21T14:16:05Z"
},
"observation_age_sec": 17,
"gtfs_trip_id": "8947270_211026",
"gtfs_stop_sequence": 17,
"dest_code": "35810",
"dest_names": {
"he": "שדרות ירושלים/מפרץ שלמה",
"en": "Yerushalayim Boulevard/Mifrats Shlomo",
"ar": "جادة يروشلايم/خليج شلومو"
},
"trust": {
"v": 1,
"observed_at_utc": "2026-10-21T14:16:05Z",
"received_at_utc": "2026-10-21T14:16:22Z",
"age_sec": 17,
"freshness": "live",
"identity": "exact",
"position": "ok",
"checks": {
"motion": "ok",
"time": "ok",
"geometry": "unknown",
"direction": "unknown"
},
"issues": [],
"forecast": "source",
"verdict": "live"
},
"vtok": "EXAMPLEpass1"
},
{
"vehicle_ref": "AVEexampleVehicle02",
"line_ref": "2454",
"route_short_name": "42",
"agency_id": "5",
"agency_name": "דן",
"stop_point_ref": "21472",
"direction_ref": "1",
"dated_vehicle_journey_ref": "3019375",
"data_frame_ref": "2026-10-21",
"item_identifier": "1433250318",
"confidence_level": "probablyReliable",
"call_order": 24,
"distance_from_stop_m": 8190,
"latitude": 32.080585,
"longitude": 34.79604,
"bearing": 248.0,
"velocity": 0.0,
"motion": "stopped",
"destination_name": "ת.רק''ל הקוממיות/דרך בגין",
"destination_ref": "36108",
"direction_text": null,
"current_stop_name": null,
"current_stop_code": "21472",
"origin_aimed_departure_utc": "2026-10-21T13:35:00Z",
"expected_arrival_utc": "2026-10-21T14:17:00Z",
"aimed_arrival_utc": null,
"recorded_at_utc": "2026-10-21T14:14:15Z",
"expected_in_min": 0,
"wheelchair_accessible": 1,
"stops_remaining": 23,
"freshness": {
"state": "scheduled_confirmed",
"age_sec": 127,
"observed_at_utc": "2026-10-21T14:14:15Z",
"basis": "gtfs_confirmed_stale_observation",
"scheduled_arrival_utc": "2026-10-21T14:01:54Z"
},
"observation_age_sec": 127,
"stale_observation": true,
"schedule_confirmed": true,
"gtfs_trip_id": "3019266_211026",
"gtfs_stop_sequence": 24,
"gtfs_scheduled_arrival_utc": "2026-10-21T14:01:54Z",
"gtfs_scheduled_departure_utc": "2026-10-21T14:01:54Z",
"dest_code": "36108",
"dest_names": {
"he": "ת.רק''ל הקוממיות/דרך בגין",
"en": "ת.רק''ל הקוממיות/דרך בגין",
"ar": "ת.רק''ל הקוממיות/דרך בגין"
},
"trust": {
"v": 1,
"observed_at_utc": "2026-10-21T14:14:15Z",
"received_at_utc": "2026-10-21T14:16:22Z",
"age_sec": 127,
"freshness": "scheduled_confirmed",
"identity": "exact",
"position": "ok",
"checks": {
"motion": "ok",
"time": "ok",
"geometry": "unknown",
"direction": "unknown"
},
"issues": [],
"forecast": "timetable",
"verdict": "schedule"
},
"vtok": "EXAMPLEpass2"
}
],
"source": "siri",
"server_now_utc": "2026-10-21T14:16:22Z",
"freshness_contract": 1,
"source_state": "ok"
}What you can get#
- Stops. Search by name or code, one stop with its address and fare zone, stops around a point, rail stations.
- Realtime. Vehicles expected at a stop. Each row says how fresh it is.
- Timetable. Every departure of a stop or a route on a service date.
- Lines. The routes of a line number, their stops, variants and road geometry.
- Service alerts. Detours, moved or cancelled stops and works published by the Ministry of Transport.
Access#
Integrations call the API from a server with the key of an approved project: Authorization: Bearer <key>. How to get access. Personal functions of the iBus app (favourites, notifications, the Lior assistant) are not part of this API; see access, keys and privacy.
A key is required: since 24.10.2026 the /api/transport/ operations answer only requests with a key (without one: 401 KEY_REQUIRED). The older addresses without /transport still answer without a key for now (transition); their end will be announced on the access page in advance.
Your first request#
curl -H "Authorization: Bearer $IBUS_API_KEY" "https://api.ibusisrael.online/api/transport/stops/search?q=Azrieli&limit=3&lang=en"Keep the key on your server, for example in the environment variable IBUS_API_KEY used in every example.
The answer lists stops with their public code, name and position. With the code, ask for arrivals: the first request guide goes step by step.
Data you can rely on#
Every realtime row carries freshness. Only rows with freshness.state = "live" are realtime predictions. An old observation is never presented as live, and a timetable time is labelled as such.
Timetable times are GTFS times of the service date and can be later than 24:00. The data and time guide explains this and the identifiers.
Limits#
Limits belong to the project: requests per minute (with a short burst), per day and per month, at the same time, and a separate budget for heavy operations. Over a limit the answer is 429 with Retry-After. Details: limits and errors.
For tools and AI assistants#
- OpenAPI 3.1 of the published operations: openapi.json
- A short map for language models: llms.txt
- Every guide as Markdown, for example this page
All published operations#
| Method | Operation | Data |
|---|---|---|
| GET | Service health /api/transport/healthz | reference |
| GET | Freshness rules of realtime data /api/transport/contract/freshness | reference |
| GET | Search stops by name or code /api/transport/stops/search | reference |
| GET | One stop: position, address, fare zone /api/transport/stop/{stopCode} | reference |
| GET | Stops around a point /api/transport/nearby_stops | reference |
| GET | Names and positions of up to 50 stops /api/transport/gw/stops/brief | reference |
| GET | Expected arrivals at a stop (realtime) /api/transport/v2/stop/{stopCode}/arrivals | realtime |
| GET | Timetable of a stop for a service date /api/transport/stop/{stopCode}/day_schedule | timetable |
| GET | Israel Railways stations /api/transport/gw/rail/stations | reference |
| GET | Search lines by public number /api/transport/routes/search | reference |
| GET | A route with its stops /api/transport/line/{routeId}/full | reference |
| GET | Road geometry of a route on a date /api/transport/gw/line/{routeId}/shape | reference |
| GET | All variants of the line of a route /api/transport/gw/line/{routeId}/variants | reference |
| GET | Variants of a public line number /api/transport/gw/line/variants | reference |
| GET | Departures of a route for a service date /api/transport/line/{routeId}/day_schedule | timetable |
| GET | Service alerts /api/transport/alerts | alerts |
| GET | One service alert /api/transport/alerts/{alertId} | alerts |
| GET | Alerts affecting a stop /api/transport/alerts/by-stop/{stopCode} | alerts |
| GET | Alerts affecting a route /api/transport/alerts/by-line/{agencyId}/{routeId} | alerts |
| GET | Transport operators /api/transport/agencies | reference |
| GET | Version of the stop list /api/transport/stops/version | reference |
| GET | Is a date in the timetable, and is it a usual day /api/transport/gw/service-day | reference |
| GET | What the server sees about your request (address, key, project) /api/access/whoami | Access |