# FR24 API — Особенности и ограничения Исследовано: 2026-04-24. Тариф: **Explorer**. --- ## Endpoint: `/api/flight-summary/full` ### Explorer tier — жёсткий лимит 20 результатов на запрос Независимо от значения параметра `limit` (даже `limit=20000`) — Explorer всегда возвращает **максимум 20 записей** за один запрос. Это hard limit тарифа, не баг. ### Параметр `offset` не существует В документации FR24 API нет параметра `offset`. Если его передать — он молча игнорируется, и каждый запрос возвращает одни и те же первые 20 рейсов. ❌ **Неправильно** (так мы сожгли все кредиты первый раз): ``` ?airports=both:SVO&limit=20&offset=0 → 20 рейсов ?airports=both:SVO&limit=20&offset=20 → те же 20 рейсов (offset игнорируется) ?airports=both:SVO&limit=20&offset=40 → те же 20 рейсов ``` ### Правильная пагинация — временны́е окна Данные отсортированы по `first_seen`. Для получения всех рейсов за сутки нужно разбить день на часовые окна: ✅ **Правильно**: ``` ?airports=inbound:SVO&flight_datetime_from=2026-04-23T00:00:00&flight_datetime_to=2026-04-23T01:00:00 ?airports=inbound:SVO&flight_datetime_from=2026-04-23T01:00:00&flight_datetime_to=2026-04-23T02:00:00 ...и т.д. ``` Если в окне >20 рейсов — нужно уменьшать окно (30 мин) или разделять на `inbound:` + `outbound:`. --- ## Параметр `airports` — правильные prefixes | Prefix | Значение | Работает | |--------|----------|---------| | `both:SVO` | прилёты + вылеты SVO | ✅ | | `inbound:SVO` | только прилёты | ✅ | | `outbound:SVO` | только вылеты | ✅ | | `departure:SVO` | — | ❌ не существует | | `arrival:SVO` | — | ❌ не существует | Принимает IATA (`SVO`), ICAO (`UUEE`) и ISO коды стран (`RU`). До 15 аэропортов через запятую. --- ## Стоимость | Endpoint | Данные | Кредитов/запись | |----------|--------|-----------------| | `/flight-summary/light` | Live | 1 | | `/flight-summary/light` | История < 30 дней | 2 | | `/flight-summary/light` | История > 30 дней | 3 | | `/flight-summary/full` | Live | 2 | | `/flight-summary/full` | История < 30 дней | **3** | | `/flight-summary/full` | История > 30 дней | **6** | | `/flight-tracks` | любые | 40 | Стоимость считается за каждую **возвращённую** запись, не за запрос. --- ## Поля ответа `/full` Все поля `light` плюс: - `orig_iata` / `dest_iata` / `dest_iata_actual` - `orig_icao` / `dest_icao` / `dest_icao_actual` - `flight_time` (секунды) - `runway_takeoff` / `runway_landed` - `circle_distance` / `actual_distance` (км) - `category` (Passenger, Cargo, ...) Поля могут быть `null` если рейс ещё в воздухе или данные не обнаружены. --- ## Оценка объёма SVO (23.04.2026) | Окно | `inbound:SVO` | `outbound:SVO` | `both:SVO` | |------|---------------|----------------|------------| | 00:00–01:00 | 17 рейсов | 2 рейса | 19 рейсов | Типичный день SVO: ~400 рейсов (прилёты + вылеты). --- ## Рекомендуемая стратегия загрузки ``` Для 4 аэропортов (SVO, DME, VKO, ZIA) за 1 день: 24 окна × inbound: × 4 аэропорта = 96 запросов 24 окна × outbound: × 4 аэропорта = 96 запросов Итого: 192 запроса × ~10 рейсов × 3 кредита ≈ 5 760 кредитов/день При остатке 51 000 кредитов: ~9 дней данных ``` > **Важно**: дедупликация по `fr24_id` обязательна — один рейс может попасть > в два смежных временных окна.