Save up to 17% with yearly billing

See pricing

Аэропорты

Получайте полные сведения об аэропорте по коду ICAO (4-буквенный указатель местоположения, уникальный в мире) или IATA (3-буквенный пассажирский код — не всегда уникальный). Ответ включает взлётно-посадочные полосы, радиочастоты, ближайшие радионавигационные средства (VOR, NDB, ILS и аналогичные средства радионавигации), а также разрешённые объекты страны и региона. Вызывайте этот эндпоинт после того, как пользователь выбрал аэропорт в результатах поиска, или когда код у вас уже есть и нужны данные об объекте для экранов брифинга, анализа ВПП или меток на карте.

Передавайте либо icao, либо iata в качестве query-параметра — никогда оба сразу.

Запрос

Требования

Авторизация
x-api-key в каждом запросе (прямая подписка). Подробнее →
GEThttps://data.skylinkapi.com/v3.1/airports/search
ПараметрТипОбязательныйПо умолчаниюОписание
icaostringОдин из icao / iata-4-буквенный код ICAO, например KJFK
iatastringОдин из icao / iata-3-буквенный код IATA, например JFK

Ответ

API возвращает один объект аэропорта (не обёрнутый в список).

{
  "id": 3622,
  "ident": "KJFK",
  "type": "large_airport",
  "name": "John F. Kennedy International Airport",
  "latitude_deg": 40.639447,
  "longitude_deg": -73.779317,
  "elevation_ft": 13.0,
  "municipality": "New York",
  "iso_country": "US",
  "iso_region": "US-NY",
  "icao_code": "KJFK",
  "iata_code": "JFK",
  "scheduled_service": "yes",
  "search_code": "KJFK",
  "search_type": "ICAO",
  "runways": [
    {
      "length_ft": 12079.0,
      "width_ft": 200.0,
      "surface": "PEM",
      "le_ident": "04L",
      "he_ident": "22R"
    }
  ],
  "frequencies": [
    {
      "type": "TWR",
      "description": "JFK TOWER",
      "frequency_mhz": 119.1
    }
  ],
  "navaids": [
    {
      "ident": "JFK",
      "name": "Kennedy",
      "type": "VOR-DME",
      "frequency_khz": 115900,
      "associated_airport": "KJFK"
    }
  ],
  "country": {
    "code": "US",
    "name": "United States"
  },
  "region": {
    "code": "US-NY",
    "name": "New York",
    "iso_country": "US"
  }
}

Поля верхнего уровня

ПолеТипОбязательныйМожет быть null?Описание
idintegerДаНикогдаЧисловой идентификатор записи
identstringДаНикогдаОсновной идентификатор (обычно ICAO)
typestringДаНикогдаКласс аэропорта — см. таблицу ниже
namestringДаНикогдаОфициальное название аэропорта
latitude_degnumberДаНикогдаШирота WGS-84
longitude_degnumberДаНикогдаДолгота WGS-84
elevation_ftnumber | nullНетДаПревышение аэродрома в футах над MSL (над средним уровнем моря)
municipalitystring | nullНетДаОбслуживаемый город или населённый пункт
iso_countrystring | nullНетДаКод страны ISO 3166-1 alpha-2
iso_regionstring | nullНетДаКод региона ISO, например US-NY
icao_codestring | nullНетДаУказатель местоположения ICAO
iata_codestring | nullНетДаКод местоположения IATA
scheduled_servicestring | nullНетДаyes / no, если известно
search_codestring | nullНетДаЗапрошенный вами код (эхо)
search_typestring | nullНетДаICAO или IATA
runwaysarrayДаНикогдаЗаписи о ВПП (может быть [])
frequenciesarrayДаНикогдаРадиочастоты (может быть [])
navaidsarrayДаНикогдаБлижайшие радионавигационные средства (может быть [])
countryobject | nullНетДаРазрешённые метаданные страны
regionobject | nullНетДаРазрешённые метаданные региона

Значения type для аэропорта

ЗначениеЧто означает
large_airportКрупный коммерческий аэропорт
medium_airportРегиональный коммерческий аэропорт
small_airportАвиация общего назначения
heliportВертодром
seaplane_baseБаза гидросамолётов
closedЗакрытый объект (по-прежнему в базе данных)
balloonportПлощадка для запуска аэростатов

Объект ВПП (runways[])

ПолеТипОбязательныйМожет быть null?Описание
length_ftnumber | nullНетДаДлина ВПП в футах
width_ftnumber | nullНетДаШирина ВПП в футах
surfacestring | nullНетДаКод покрытия — ASP (асфальт), PEM (твёрдое покрытие), GRS (гравий) и т. д.
lightedinteger | nullНетДа1, если ВПП оборудована освещением
closedinteger | nullНетДа1, если ВПП закрыта
le_identstring | nullНетДаОбозначение торца ВПП с меньшим номером (low end)
he_identstring | nullНетДаОбозначение торца ВПП с большим номером (high end)

Объект частоты (frequencies[])

ПолеТипОбязательныйОписание
typestringДаТип службы — ATIS (автоматическая передача метеоинформации), GND (руление), TWR (вышка), APP (подход), DEP (вылет) и т. д.
descriptionstring | nullНетПонятная человеку метка
frequency_mhznumberДаЧастота в MHz
ПолеТипОбязательныйМожет быть null?Описание
identstringДаНикогдаИдентификатор средства
namestringДаНикогдаНазвание средства
typestringДаНикогдаНапример, VOR, VOR-DME, NDB
frequency_khzinteger | nullНетДаЧастота в kHz
latitude_degnumberДаНикогдаШирота средства
longitude_degnumberДаНикогдаДолгота средства
associated_airportstring | nullНетДаКод ICAO связанного аэропорта, если известен

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

"""Airport lookup response types - matches airports.mdx field tables."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass AirportLookupRequest:    """Query input for GET /airports/search - provide icao or iata, not both."""    icao: str | None = None    iata: str | None = None@dataclassclass Runway:    id: int    airport_ident: str    length_ft: float | None    width_ft: float | None    surface: str | None    lighted: int | None    closed: int | None    le_ident: str | None    he_ident: str | None@dataclassclass Frequency:    id: int    type: str    description: str | None    frequency_mhz: float    airport_ref: int@dataclassclass Navaid:    ident: str    name: str    type: str    frequency_khz: int | None    latitude_deg: float    longitude_deg: float    associated_airport: str | None@dataclassclass CountryRef:    code: str    name: str@dataclassclass RegionRef:    code: str    name: str    iso_country: str@dataclassclass AirportDetail:    id: int    ident: str    type: str    name: str    latitude_deg: float    longitude_deg: float    elevation_ft: float | None    municipality: str | None    iso_country: str | None    icao_code: str | None    iata_code: str | None    scheduled_service: str | None    runways: list[Runway]    frequencies: list[Frequency]    navaids: list[Navaid]    country: CountryRef | None = None    region: RegionRef | None = None    search_code: str | None = None    search_type: str | None = None@dataclassclass AirportSummary:    """Shape returned by airport_summary() in the lookup example."""    icao: str | None    iata: str | None    name: str    municipality: str | None    country: str | None    latitude: float    longitude: float    elevation_ft: float | None    airport_type: str    longest_runway_ft: int | None

Интеграция

Найдите аэропорт по коду ICAO и верните готовые для интерфейса сводные поля, включая самую длинную ВПП.

В примере ниже каждый результат поиска кэшируется на 24 часа, поскольку метаданные аэропортов меняются редко. Каждый HTTP-вызов использует тайм-ауты на подключение и чтение, чтобы медленный вышестоящий сервис не заблокировал интерфейс брифинга.

import osimport timefrom dataclasses import dataclassfrom typing import Literalimport requests# AirportSummary - helper return type. Full wire types are in the Client types section.AirportType = Literal[    "large_airport",    "medium_airport",    "small_airport",    "heliport",    "seaplane_base",    "closed",    "balloonport",]HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}AIRPORT_TTL = 86_400  # 24 h - OurAirports metadata changes slowly@dataclassclass AirportSummary:    icao: str | None    iata: str | None    name: str    municipality: str | None    country: str | None    latitude: float    longitude: float    elevation_ft: float | None    airport_type: str    longest_runway_ft: int | Nonedef fetch_airport(*, icao: str | None = None, iata: str | None = None) -> dict | None:    if bool(icao) == bool(iata):        raise ValueError("Provide exactly one of icao or iata")    code = icao or iata or ""    cache_key = f"airport:{icao or ''}:{iata or ''}"    cached = CACHE.get(cache_key)    if cached and time.time() < cached[1]:        return cached[0]    params: dict[str, str] = {}    if icao:        params["icao"] = icao    else:        params["iata"] = iata or ""    try:        r = requests.get(            f"{BASE}/airports/search",            headers=HEADERS,            params=params,            timeout=(10, 20),        )    except requests.Timeout as exc:        raise RuntimeError(f"SkyLink timeout fetching airport {code}") from exc    if r.status_code == 404:        return None    r.raise_for_status()    data = r.json()    CACHE[cache_key] = (data, time.time() + AIRPORT_TTL)    return datadef airport_summary(icao: str) -> AirportSummary | None:    airport = fetch_airport(icao=icao)    if not airport:        return None    runways = airport.get("runways") or []    longest = max((int(rw.get("length_ft") or 0) for rw in runways), default=0)    country = airport.get("country") or {}    return AirportSummary(        icao=airport.get("icao_code"),        iata=airport.get("iata_code"),        name=airport["name"],        municipality=airport.get("municipality"),        country=country.get("code") if isinstance(country, dict) else airport.get("iso_country"),        latitude=airport["latitude_deg"],        longitude=airport["longitude_deg"],        elevation_ft=airport.get("elevation_ft"),        airport_type=airport["type"],        longest_runway_ft=longest or None,    )if __name__ == "__main__":    import json    from dataclasses import asdict    summary = airport_summary("KJFK")    print(json.dumps(asdict(summary), indent=2) if summary else "Airport not found")

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

Неполные данные. У площадок авиации общего назначения и вертодромов часто нет данных о ВПП или частотах. Проверяйте длину массивов перед выводом таблиц ВПП.

Связанные данные. Определив здесь код ICAO, переходите с тем же кодом к METAR, TAF, NOTAM или аэронавигационным картам.

Слои радионавигационных средств. Встроенные navaids охватывают окрестности аэропорта. Для фильтрации по bbox или по типу в пределах региона используйте Радионавигационные средства.

ICAO и IATA, закрытые аэропортыРазвернуть раздел

ICAO или IATA. Для внутреннего хранения предпочтительнее ICAO — этот код уникален в мире. Поиск по IATA удобен для пассажирских кодов (JFK → полная запись), но такие коды могут совпадать в разных регионах.

Закрытые аэропорты. Записи с type: "closed" остаются в базе данных для исторической справки. При необходимости отфильтровывайте их в списках выбора действующих аэропортов.

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

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

404 - аэропорт не найден

{
  "detail": "Airport not found for ICAO code: XXXX"
}

Такого кода нет в базе аэропортов SkyLink.

400 - указаны оба кода

{
  "detail": "Provide either ICAO or IATA code, not both"
}

400 - не указан ни один код

{
  "detail": "Either ICAO or IATA code must be provided"
}
GET
/airports/search
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)

ident?|

Any airport identifier as returned by the /airports/search/location, /airports/search/text or /airports/search/ip endpoints' ident field — including OurAirports pseudo-codes for airports without a real ICAO code (e.g., 'GB-0888')

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/airports/search"
{
  "id": 3682,
  "ident": "KJFK",
  "type": "large_airport",
  "name": "John F Kennedy International Airport",
  "latitude_deg": 40.63980103,
  "longitude_deg": -73.77890015,
  "elevation_ft": 13,
  "continent": "NA",
  "iso_country": "US",
  "iso_region": "US-NY",
  "municipality": "New York",
  "scheduled_service": "yes",
  "gps_code": "KJFK",
  "iata_code": "JFK",
  "local_code": "JFK",
  "runways": [
    {
      "length_ft": 14511,
      "width_ft": 150,
      "surface": "ASP",
      "lighted": 1,
      "closed": 0,
      "le_ident": "04L",
      "he_ident": "22R"
    }
  ],
  "frequencies": [
    {
      "type": "TWR",
      "description": "JFK TWR",
      "frequency_mhz": 119.1
    }
  ],
  "navaids": [
    {
      "ident": "JFK",
      "name": "Kennedy",
      "type": "VOR-DME",
      "frequency_khz": "115900"
    }
  ],
  "search_code": "KJFK",
  "search_type": "ICAO"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

См. также: Поиск аэропортов · METAR · NOTAM