Save up to 17% with yearly billing

See pricing

Трафик аэропорта

Восстанавливайте исторические прилёты и вылеты в аэропорту за заданное временное окно. Используйте этот эндпоинт для операционной аналитики, планирования пропускной способности и дашбордов эффективности авиакомпаний, но не для расписаний в реальном времени (см. Расписания).

Уровни тарифов: главная страница исторических данных ADS-B.

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
Тариф

Pro, Ultra или Mega — используйте префикс пути, соответствующий нужному окну.

Подробнее →

Запрос

GEThttps://data.skylinkapi.com/v3.1/ultra/history/airport/{icao}/traffic
ПараметрТипОбязательныйПо умолчаниюОписание
icaostringДа-ICAO-код аэропорта (4 символа)
startstringНет24 ч назадНачало окна — ISO 8601
endstringНетсейчасКонец окна — ISO 8601
directionstringНетbothdep, arr или both
limitintegerНет100Макс. количество возвращаемых рейсов (не более 1000 на пути ULTRA)

Окно запроса не может превышать 90 дней на /ultra/history/....

Путь MEGA (`/mega/history/...`)Развернуть раздел
GEThttps://data.skylinkapi.com/v3.1/mega/history/airport/{icao}/traffic
ПараметрТипОбязательныйПо умолчаниюОписание
icaostringДа-ICAO-код аэропорта
startstringНет24 ч назадНачало окна — ISO 8601 (на пути MEGA охват не более 365 дней)
endstringНетсейчасКонец окна
directionstringНетbothdep, arr или both
limitintegerНет200Макс. количество возвращаемых рейсов (не более 2000 на пути MEGA)

Требуется тариф Ultra или Mega. Структура ответа та же, что и для ULTRA.

Ответ

{
  "icao": "EGLL",
  "direction": "both",
  "count": 1,
  "flights": [
    {
      "flight_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "icao24": "4006f2",
      "callsign": "BAW117",
      "flight_number": "BAW117",
      "aircraft_type_icao": "B77W",
      "airline_name": "British Airways",
      "departure_airport_icao": "EGLL",
      "departure_airport_iata": "LHR",
      "arrival_airport_icao": "KJFK",
      "arrival_airport_iata": "JFK",
      "flight_state": "ARCHIVED",
      "takeoff_time": "2026-05-12T09:10:00Z",
      "landing_time": "2026-05-12T09:28:00Z",
      "flight_duration_min": 18.0,
      "distance_nm": 205.7
    }
  ]
}
ПолеТипОбязательныйОписание
icaostringДаICAO-код запрошенного аэропорта
directionstringДаПрименённый фильтр — dep, arr или both
countintegerДаКоличество элементов в flights
flightsarrayДаПодходящие прилёты и вылеты

Рейс в трафике (flights[])

Каждый элемент использует те же поля аэропортов и времени, что и сводка рейса.

ПолеТипОбязательныйNull?Описание
flight_idstringДаНикогдаUUID для запросов деталей и трека
icao24string | nullНетДаHex-код воздушного судна
callsignstring | nullНетДаПозывной ADS-B
flight_numberstring | nullНетДаНормализованный номер рейса, если удалось определить
aircraft_type_icaostring | nullНетДаКод типа ICAO
airline_namestring | nullНетДаОтображаемое название авиакомпании
departure_airport_icaostring | nullНетДаICAO-код аэропорта вылета
departure_airport_iatastring | nullНетДаIATA-код аэропорта вылета
arrival_airport_icaostring | nullНетДаICAO-код аэропорта прилёта
arrival_airport_iatastring | nullНетДаIATA-код аэропорта прилёта
flight_statestring | nullНетДаСостояние в архиве (например, ARCHIVED)
takeoff_timestring | nullНетДаВремя взлёта (ISO 8601)
landing_timestring | nullНетДаВремя посадки (ISO 8601)
flight_duration_minnumber | nullНетДаПродолжительность в минутах
distance_nmnumber | nullНетДаРасстояние в морских милях

Клиентские типы

"""Typed models for Historical ADS-B - matches historical-adsb.mdx field tables."""from __future__ import annotationsfrom dataclasses import dataclassfrom typing import Literal@dataclassclass HistoricalFlightSummary:    flight_id: str    icao24: str | None    callsign: str | None    flight_number: str | None    tail_number: str | None    departure_airport_icao: str | None    arrival_airport_icao: str | None    flight_start: str    flight_end: str    takeoff_time: str | None    landing_time: str | None    flight_duration_min: float | None    distance_nm: float | None@dataclassclass HistoricalPosition:    timestamp: str    icao24: str    latitude: float    longitude: float    altitude_baro: float | None    ground_speed: float | None    track: float | None    vertical_rate: float | None    is_on_ground: bool@dataclassclass HistoricalFlightWindow:    flight_id: str    callsign: str | None    departure_airport_icao: str | None    arrival_airport_icao: str | None    takeoff_time: str | None    landing_time: str | None    flight_start: str    flight_end: str    flight_state: str | None@dataclassclass AirportTrafficFlight:    flight_id: str    icao24: str | None    callsign: str | None    departure_airport_icao: str | None    arrival_airport_icao: str | None    takeoff_time: str | None    landing_time: str | None    flight_duration_min: float | None    distance_nm: float | None@dataclassclass AirportTrafficResponse:    icao: str    direction: Literal["dep", "arr", "both"]    count: int    flights: list[AirportTrafficFlight]

Интеграция

Восстановите прилёты и вылеты в хабовом аэропорту за выбранное временное окно. Пример ниже получает трафик в обоих направлениях за 48 часов в EGLL, отбирает только вылеты и группирует их по авиакомпаниям. Для скользящих 90-дневных окон, которым нужны direction: arr и limit: 2000 на пакет, переходите на путь MEGA.

import osfrom datetime import datetime, timedelta, timezoneimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY") or os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_airport_traffic(icao: str, *, direction: str = "both", tier: str = "ultra", hours: int = 24) -> dict:    now = datetime.now(timezone.utc)    start = (now - timedelta(hours=hours)).strftime("%Y-%m-%dT%H:%M:%SZ")    end = now.strftime("%Y-%m-%dT%H:%M:%SZ")    r = requests.get(        f"{BASE}/{tier}/history/airport/{icao.upper()}/traffic",        headers=HEADERS,        params={"start": start, "end": end, "direction": direction, "limit": 50},        timeout=(10, 30),    )    r.raise_for_status()    return r.json()if __name__ == "__main__":    import json    data = fetch_airport_traffic("EGLL")    print(json.dumps({"icao": data.get("icao"), "count": data.get("count")}, indent=2))

Примечания по реализации

Важно: при direction: both определяйте направление движения, сравнивая departure_airport_icao и arrival_airport_icao с запрошенным icao: если departure_airport_icao совпадает с запрошенным аэропортом, это вылет; если с ним совпадает arrival_airport_icao, это прилёт. Не полагайтесь на порядок элементов в списке.

Фильтрация по направлению. Запрашивайте dep или arr вместо both, когда нужен только один тип движения, — ответ будет меньше, и его проще разбивать на страницы.

Пагинация. Если count равен запрошенному limit, сузьте окно start/end или увеличьте limit (до 1000 на ULTRA, до 2000 на MEGA) и объедините результаты перекрывающихся окон.

Ответы с ошибками

Ограничение по тарифу 401/403: главная страница исторических данных ADS-B. Ошибки, специфичные для эндпоинта:

422 — слишком широкое окно

Возвращается, если интервал start/end превышает максимум для пути — 90 дней на /ultra/history/... или 365 дней на /mega/history/...:

{
  "detail": "Query window exceeds maximum of 90 days for your plan on /ultra/history/..."
}
GET
/ultra/history/airport/{icao}/traffic
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Path Parameters

icao*Icao

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

direction?Direction

Filter direction: 'dep', 'arr', or 'both'

Default"both"
limit?Limit

Max records (default 100, max 1000)

Default100
Range1 <= value <= 1000

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/ultra/history/airport/KJFK/traffic"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
GET
/mega/history/airport/{icao}/traffic
x-api-key<token>

Your SkyLink licence key, for keys bought direct from skylinkapi.com.

In: header

Path Parameters

icao*Icao

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

direction?Direction

'dep', 'arr', or 'both'

Default"both"
limit?Limit

Max records (default 200, max 2000)

Default200
Range1 <= value <= 2000

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/mega/history/airport/KJFK/traffic"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}