<!-- https://api.ibusisrael.online/docs/ru/ -->
# Транспортный API iBus

Остановки, линии, расписания, прибытия в реальном времени и официальные сообщения об изменениях движения общественного транспорта Израиля в JSON по HTTPS. Те же данные, что использует приложение iBus, - для проектов с одобренной заявкой.

```bash
curl -H "Authorization: Bearer $IBUS_API_KEY" "https://api.ibusisrael.online/api/transport/v2/stop/21472/arrivals?limit=6&lang=en"
```

Пример ответа (сохранён, не живой)

```json
{
  "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"
}
```

## Что можно получить

- **Остановки.** Поиск по названию или коду, остановка с адресом и тарифной зоной, остановки рядом с точкой, железнодорожные станции.
- **Реальное время.** Транспорт, который едет к остановке. Каждая строка сообщает, насколько она свежая.
- **Расписание.** Все отправления остановки или маршрута на служебную дату.
- **Линии.** Маршруты линии по номеру, их остановки, варианты и геометрия на дороге.
- **Сообщения о нарушениях.** Объезды, перенесённые или отменённые остановки и работы, которые публикует Министерство транспорта.

## Доступ

Интеграции обращаются к API со своего сервера с ключом одобренного проекта: `Authorization: Bearer <ключ>`. [Как получить доступ](/ru/access/). Личные функции приложения iBus (избранное, уведомления, ассистент Лиор) в этот API не входят; см. [доступ, ключи и приватность](/docs/ru/access/).

> [!NOTE]
> Ключ обязателен: с 24.10.2026 методы `/api/transport/` отвечают только запросам с ключом (без ключа - `401 KEY_REQUIRED`). Старые адреса без `/transport` пока отвечают и без ключа (переходный режим); об окончании объявим на [странице доступа](/ru/access/) заранее.

## Первый запрос

```bash
curl -H "Authorization: Bearer $IBUS_API_KEY" "https://api.ibusisrael.online/api/transport/stops/search?q=Azrieli&limit=3&lang=en"
```

Храните ключ на сервере, например в переменной окружения `IBUS_API_KEY`, которую используют все примеры.

В ответе - остановки с публичным кодом, названием и координатами. С этим кодом можно запросить прибытия: руководство [«Первый запрос»](/docs/ru/quickstart/) проводит по шагам.

## Данные, на которые можно опираться

> [!NOTE]
> Каждая строка реального времени несёт `freshness`. Прогнозом в реальном времени считаются только строки с `freshness.state = "live"`. Старое наблюдение никогда не выдаётся за живое, а время по расписанию так и подписано.

Время в расписании - это время GTFS служебной даты, оно бывает позже 24:00. Об этом и об идентификаторах - в разделе [«Данные и время»](/docs/ru/data/).

## Ограничения

Лимиты принадлежат проекту: запросы в минуту (с коротким всплеском), в сутки и в месяц, одновременные запросы и отдельный бюджет тяжёлых методов. При превышении ответ - `429` с `Retry-After`. Подробнее: [ограничения и ошибки](/docs/ru/limits/).

## Для инструментов и ИИ-ассистентов

- OpenAPI 3.1 опубликованных операций: [openapi.json](https://api.ibusisrael.online/openapi.json)
- Краткая карта для языковых моделей: [llms.txt](https://api.ibusisrael.online/llms.txt)
- Каждое руководство в Markdown, например [эта страница](/docs/md/ru/index.md)

## Все опубликованные операции

| Метод | Операция | Данные |
|---|---|---|
| GET | Состояние сервиса — `/api/transport/healthz` (`getHealth`) | справочник |
| GET | Правила свежести данных реального времени — `/api/transport/contract/freshness` (`getFreshnessContract`) | справочник |
| GET | Поиск остановок по названию или коду — `/api/transport/stops/search` (`searchStops`) | справочник |
| GET | Остановка: место, адрес, тарифная зона — `/api/transport/stop/{stopCode}` (`getStop`) | справочник |
| GET | Остановки рядом с точкой — `/api/transport/nearby_stops` (`listNearbyStops`) | справочник |
| GET | Названия и координаты до 50 остановок — `/api/transport/gw/stops/brief` (`getStopsBrief`) | справочник |
| GET | Ближайшие прибытия на остановку (реальное время) — `/api/transport/v2/stop/{stopCode}/arrivals` (`getStopArrivals`) | реальное время |
| GET | Расписание остановки на служебную дату — `/api/transport/stop/{stopCode}/day_schedule` (`getStopDaySchedule`) | расписание |
| GET | Станции Израильских железных дорог — `/api/transport/gw/rail/stations` (`listRailStations`) | справочник |
| GET | Поиск линий по номеру — `/api/transport/routes/search` (`searchLines`) | справочник |
| GET | Маршрут и его остановки — `/api/transport/line/{routeId}/full` (`getLine`) | справочник |
| GET | Геометрия маршрута на дату — `/api/transport/gw/line/{routeId}/shape` (`getLineShape`) | справочник |
| GET | Все варианты линии, к которой относится маршрут — `/api/transport/gw/line/{routeId}/variants` (`getLineVariants`) | справочник |
| GET | Варианты линии по номеру — `/api/transport/gw/line/variants` (`findLineVariantsByNumber`) | справочник |
| GET | Отправления маршрута на служебную дату — `/api/transport/line/{routeId}/day_schedule` (`getLineDaySchedule`) | расписание |
| GET | Сообщения о нарушениях движения — `/api/transport/alerts` (`listAlerts`) | сообщения |
| GET | Одно сообщение — `/api/transport/alerts/{alertId}` (`getAlert`) | сообщения |
| GET | Сообщения по остановке — `/api/transport/alerts/by-stop/{stopCode}` (`listAlertsByStop`) | сообщения |
| GET | Сообщения по маршруту — `/api/transport/alerts/by-line/{agencyId}/{routeId}` (`listAlertsByLine`) | сообщения |
| GET | Перевозчики — `/api/transport/agencies` (`listAgencies`) | справочник |
| GET | Версия списка остановок — `/api/transport/stops/version` (`getStopsVersion`) | справочник |
| GET | Есть ли дата в расписании и обычный ли это день — `/api/transport/gw/service-day` (`getServiceDay`) | справочник |
| GET | Что сервер видит о вашем запросе (адрес, ключ, проект) — `/api/access/whoami` (`whoami`) | Доступ |
