Трафик аэропорта
Восстанавливайте исторические прилёты и вылеты в аэропорту за заданное временное окно. Используйте этот эндпоинт для операционной аналитики, планирования пропускной способности и дашбордов эффективности авиакомпаний, но не для расписаний в реальном времени (см. Расписания).
Уровни тарифов: главная страница исторических данных ADS-B.
Требования
x-api-key в каждом запросе (прямая подписка). Подробнее →Pro, Ultra или Mega — используйте префикс пути, соответствующий нужному окну.
Подробнее →Запрос
https://data.skylinkapi.com/v3.1/ultra/history/airport/{icao}/traffic| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
icao | string | Да | - | ICAO-код аэропорта (4 символа) |
start | string | Нет | 24 ч назад | Начало окна — ISO 8601 |
end | string | Нет | сейчас | Конец окна — ISO 8601 |
direction | string | Нет | both | dep, arr или both |
limit | integer | Нет | 100 | Макс. количество возвращаемых рейсов (не более 1000 на пути ULTRA) |
Окно запроса не может превышать 90 дней на /ultra/history/....
Путь MEGA (`/mega/history/...`)Развернуть раздел
https://data.skylinkapi.com/v3.1/mega/history/airport/{icao}/traffic| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
icao | string | Да | - | ICAO-код аэропорта |
start | string | Нет | 24 ч назад | Начало окна — ISO 8601 (на пути MEGA охват не более 365 дней) |
end | string | Нет | сейчас | Конец окна |
direction | string | Нет | both | dep, arr или both |
limit | integer | Нет | 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
}
]
}| Поле | Тип | Обязательный | Описание |
|---|---|---|---|
icao | string | Да | ICAO-код запрошенного аэропорта |
direction | string | Да | Применённый фильтр — dep, arr или both |
count | integer | Да | Количество элементов в flights |
flights | array | Да | Подходящие прилёты и вылеты |
Рейс в трафике (flights[])
Каждый элемент использует те же поля аэропортов и времени, что и сводка рейса.
| Поле | Тип | Обязательный | Null? | Описание |
|---|---|---|---|---|
flight_id | string | Да | Никогда | UUID для запросов деталей и трека |
icao24 | string | null | Нет | Да | Hex-код воздушного судна |
callsign | string | null | Нет | Да | Позывной ADS-B |
flight_number | string | null | Нет | Да | Нормализованный номер рейса, если удалось определить |
aircraft_type_icao | string | null | Нет | Да | Код типа ICAO |
airline_name | string | null | Нет | Да | Отображаемое название авиакомпании |
departure_airport_icao | string | null | Нет | Да | ICAO-код аэропорта вылета |
departure_airport_iata | string | null | Нет | Да | IATA-код аэропорта вылета |
arrival_airport_icao | string | null | Нет | Да | ICAO-код аэропорта прилёта |
arrival_airport_iata | string | null | Нет | Да | IATA-код аэропорта прилёта |
flight_state | string | null | Нет | Да | Состояние в архиве (например, ARCHIVED) |
takeoff_time | string | null | Нет | Да | Время взлёта (ISO 8601) |
landing_time | string | null | Нет | Да | Время посадки (ISO 8601) |
flight_duration_min | number | null | Нет | Да | Продолжительность в минутах |
distance_nm | number | 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/..."
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Filter direction: 'dep', 'arr', or 'both'
"both"Max records (default 100, max 1000)
1001 <= value <= 1000Response 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": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
'dep', 'arr', or 'both'
"both"Max records (default 200, max 2000)
2001 <= value <= 2000Response 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": {}
}
]
}История местоположений
Исторические снимки местоположения ADS-B по hex-коду ICAO24 или бортовому номеру — от новых к старым, с привязкой к окнам рейсов.
Определение маршрутов
Сопоставление позывных рейсов с парами городов, маршрутные сети аэропортов и статистика по парам маршрутов: авиакомпании, расстояние, блочное время.