Save up to 17% with yearly billing

See pricing

Расписания

Расписания вылетов и прилётов аэропорта за заданный интервал времени. Обе операции возвращают строки рейсов одинаковой структуры с полем-дискриминатором direction (departures или arrivals). По умолчанию API возвращает предстоящие рейсы примерно на ближайшие 12 часов и может незаметно для вас подгружать дополнительные страницы.

Подходит для табло аэропортов, диспетчерских дашбордов и пакетных ETL-процессов. Передавайте ровно один идентификатор аэропорта (icao или iata) в каждом запросе.

Важно: ключи строк рейсов пишутся с заглавной буквы — Time, Flight, Status, а не time, flight, status. Обращение к ключам в нижнем регистре вернёт undefined.

Запрос

Требования

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

Вылеты

GEThttps://data.skylinkapi.com/v3.1/schedules/departures

Прилёты

GEThttps://data.skylinkapi.com/v3.1/schedules/arrivals
ПараметрТипОбязательныйПо умолчаниюОписание
icaostringОдин из icao / iata-4-буквенный код аэропорта ICAO, например KJFK, EGLL
iatastringОдин из icao / iata-3-буквенный код аэропорта IATA, например JFK, LHR
datestringНеттекущая датаДата в формате DD-MM-YYYY. Диапазон: от 5 дней назад до 1 дня вперёд
timestringНеттекущее времяВремя в формате HH:MM. Если указано, требуется также date
tsintegerНет-Метка времени Unix в миллисекундах. Если задана, переопределяет date и time

Для программного опроса предпочтительнее ts — так вы избежите ошибок форматирования, связанных с локалью и часовыми поясами, в cron-задачах и бессерверных воркерах.

Ответ

Обе операции используют одинаковую обёртку ответа. Поле direction соответствует вызванной операции.

Пример вылетов

{
  "iata": "MXP",
  "direction": "departures",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:05",
      "Date": "11 Feb",
      "IATA": "ICN",
      "Destination": "Seoul",
      "Flight": "C84093",
      "Airline": "Federal Airlines",
      "Status": "Estimated 16:39"
    }
  ],
  "total_flights": 85,
  "pages_fetched": 3
}

Пример прилётов

{
  "iata": "MXP",
  "direction": "arrivals",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:20",
      "Date": "11 Feb",
      "IATA": "RAK",
      "Origin": "Marrakech",
      "Flight": "EC3929",
      "Airline": "easyJet Europe",
      "Status": "Landed 16:15"
    }
  ],
  "total_flights": 72,
  "pages_fetched": 3
}

Поля обёртки ответа

ПолеТипОбязательныйОписание
iatastringДаIATA-код запрошенного аэропорта, если известен
directionstringДаdepartures или arrivals
airport_codestringДаЭхо вашего запроса — ICAO, если вы передали icao, и IATA, если передали iata
flightsarrayДаСтроки расписания (может быть пустым)
total_flightsintegerДаОбщее число рейсов в запрошенном интервале
pages_fetchedintegerДаЧисло страниц, загруженных в фоновом режиме

Объект строки рейса (flights[])

Путь в JSON: flights[]. Имена ключей пишутся с заглавной буквы.

ПолеТипОбязательныйОписание
TimestringДаМестное время по расписанию
DatestringДаМетка местной даты, например 11 Feb
IATAstringДаIATA-код аэропорта на другом конце маршрута
DestinationstringТолько для вылетовГород/аэропорт назначения
OriginstringТолько для прилётовГород/аэропорт отправления
FlightstringДаНомер рейса в том виде, в каком он отображается на табло
AirlinestringДаОтображаемое название авиакомпании
StatusstringДаСтатус в свободной текстовой форме, например Estimated 16:39, Landed 16:15

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

"""Schedules response models for /schedules/departures and /schedules/arrivals."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass SchedulesRequest:    """Query input shared by both schedules endpoints."""    icao: str | None = None    iata: str | None = None    date: str | None = None    time: str | None = None    ts: int | None = None@dataclassclass ScheduleFlight:    Time: str    Date: str    IATA: str    Flight: str    Airline: str    Status: str    Destination: str | None = None    Origin: str | None = None@dataclassclass SchedulesResponse:    iata: str    direction: str    airport_code: str    flights: list[ScheduleFlight]    total_flights: int    pages_fetched: int

Интеграция

Получите вылеты и приведите ключи с заглавной буквы к плоской структуре элемента табло.

Пример ниже требует ровно один из параметров icao или iata (исключающее ИЛИ), использует запросы с тайм-аутами для пакетного опроса и сопоставляет строки со стабильными внутренними ключами.

import osimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_schedules(direction: str, *, icao: str | None = None, iata: str | None = None) -> dict:    """Fetch airport schedules for arrivals or departures."""    if bool(icao) == bool(iata):        raise ValueError("Provide exactly one of icao or iata")    if direction not in {"arrivals", "departures"}:        raise ValueError("direction must be arrivals or departures")    code = icao.upper() if icao else (iata or "").upper()    params = {"icao": code} if icao else {"iata": code}    r = requests.get(f"{BASE}/schedules/{direction}", headers=HEADERS, params=params, timeout=(10, 20))    r.raise_for_status()    return r.json()if __name__ == "__main__":    import json    data = fetch_schedules("departures", icao="KJFK")    flights = data.get("flights") or []    print(json.dumps({"count": len(flights), "sample": flights[:3]}, indent=2, default=str))

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

Разбор статуса. Status — это отображаемый текст из источника расписаний. Если вам нужны структурированные состояния, разбирайте его осторожно.

Пагинация. Начинайте с интервала по умолчанию; более длинные интервалы вперёд увеличивают задержку.

Подробности по одному рейсу. Чтобы узнать выход на посадку и терминал для конкретного рейса, используйте Статус рейса.

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

Общие ошибки см. в разделе Обработка ошибок. Ошибки, специфичные для эндпоинта:

422 - недопустимые дата/время или отсутствует код аэропорта

{
  "detail": [
    {
      "type": "value_error",
      "loc": ["query", "date"],
      "msg": "Invalid date format. Expected DD-MM-YYYY."
    }
  ]
}
GET
/schedules/departures
x-api-key<token>

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

In: header

Query Parameters

icao?|

4-letter ICAO airport code (e.g. KJFK, EGLL)

iata?|

3-letter IATA airport code (e.g. JFK, LHR)

date?|

Date in DD-MM-YYYY format (e.g. 11-02-2026). Range: 5 days back to 1 day forward.

time?|

Time in HH:MM format (e.g. 14:30). Requires date parameter.

ts?|

Unix timestamp in milliseconds (alternative to date/time).

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/schedules/departures"
{
  "iata": "MXP",
  "direction": "departures",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:05",
      "Date": "11 Feb",
      "IATA": "ICN",
      "Destination": "Seoul",
      "Flight": "C84093",
      "Airline": "Federal Airlines",
      "Status": "Estimated 16:39"
    }
  ],
  "total_flights": 85,
  "pages_fetched": 3
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
GET
/schedules/arrivals
x-api-key<token>

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

In: header

Query Parameters

icao?|

4-letter ICAO airport code (e.g. KJFK, EGLL)

iata?|

3-letter IATA airport code (e.g. JFK, LHR)

date?|

Date in DD-MM-YYYY format (e.g. 11-02-2026). Range: 5 days back to 1 day forward.

time?|

Time in HH:MM format (e.g. 14:30). Requires date parameter.

ts?|

Unix timestamp in milliseconds (alternative to date/time).

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/schedules/arrivals"
{
  "iata": "MXP",
  "direction": "arrivals",
  "airport_code": "LIMC",
  "flights": [
    {
      "Time": "16:20",
      "Date": "11 Feb",
      "IATA": "RAK",
      "Origin": "Marrakech",
      "Flight": "EC3929",
      "Airline": "easyJet Europe",
      "Status": "Landed 16:15"
    }
  ],
  "total_flights": 72,
  "pages_fetched": 3
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

См. также: Статус рейса · Аэропорты · Авиакомпании