Save up to 17% with yearly billing

See pricing

Flughäfen

Rufen Sie vollständige Flughafendetails per ICAO (vierstellige Ortskennung, weltweit eindeutig) oder IATA (dreistelliger Passagiercode — nicht immer eindeutig) ab. Die Antwort enthält Start- und Landebahnen, Funkfrequenzen, Funknavigationsanlagen in der Nähe (VOR, NDB, ILS und ähnliche Funknavigationshilfen) sowie aufgelöste Länder- und Regionsobjekte. Rufen Sie diesen Endpoint auf, nachdem der Nutzer einen Flughafen aus den Suchergebnissen ausgewählt hat, oder wenn Sie bereits einen Code haben und Anlagendaten für Briefing-Ansichten, Bahnanalysen oder Kartenmarkierungen benötigen.

Geben Sie als Query-Parameter entweder icao oder iata an — niemals beide.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/airports/search
ParameterTypErforderlichStandardBeschreibung
icaostringEines von icao / iata-Vierstelliger ICAO-Code, z. B. KJFK
iatastringEines von icao / iata-Dreistelliger IATA-Code, z. B. JFK

Antwort

Die API liefert ein einzelnes Flughafenobjekt (nicht in eine Liste eingebettet).

{
  "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"
  }
}

Felder der obersten Ebene

FeldTypErforderlichNull?Beschreibung
idintegerJaNieNumerische Datensatzkennung
identstringJaNiePrimäre Kennung (meist ICAO)
typestringJaNieFlughafenklasse — siehe Tabelle unten
namestringJaNieOffizieller Flughafenname
latitude_degnumberJaNieBreitengrad (WGS-84)
longitude_degnumberJaNieLängengrad (WGS-84)
elevation_ftnumber | nullNeinJaFlugplatzhöhe in Fuß MSL (über mittlerem Meeresspiegel)
municipalitystring | nullNeinJaAngebundene Stadt oder Gemeinde
iso_countrystring | nullNeinJaLändercode nach ISO 3166-1 alpha-2
iso_regionstring | nullNeinJaISO-Regionscode, z. B. US-NY
icao_codestring | nullNeinJaICAO-Ortskennung
iata_codestring | nullNeinJaIATA-Ortscode
scheduled_servicestring | nullNeinJayes / no, sofern bekannt
search_codestring | nullNeinJaEcho des abgefragten Codes
search_typestring | nullNeinJaICAO oder IATA
runwaysarrayJaNieDatensätze der Start- und Landebahnen (kann [] sein)
frequenciesarrayJaNieFunkfrequenzen (kann [] sein)
navaidsarrayJaNieFunknavigationsanlagen in der Nähe (kann [] sein)
countryobject | nullNeinJaAufgelöste Ländermetadaten
regionobject | nullNeinJaAufgelöste Regionsmetadaten

Werte von type (Flughafen)

WertBedeutung
large_airportGroßer Verkehrsflughafen
medium_airportRegionaler Verkehrsflughafen
small_airportAllgemeine Luftfahrt
heliportHubschrauberlandeplatz
seaplane_baseWasserflugzeugbasis
closedGeschlossene Anlage (weiterhin in der Datenbank)
balloonportBallonstartplatz

Objekt für Start- und Landebahnen (runways[])

FeldTypErforderlichNull?Beschreibung
length_ftnumber | nullNeinJaLänge der Bahn in Fuß
width_ftnumber | nullNeinJaBreite der Bahn in Fuß
surfacestring | nullNeinJaBelagscode — ASP (Asphalt), PEM (befestigte Oberfläche), GRS (Schotter) usw.
lightedinteger | nullNeinJa1, wenn befeuert
closedinteger | nullNeinJa1, wenn gesperrt
le_identstring | nullNeinJaBezeichnung des niedrigen Bahnendes
he_identstring | nullNeinJaBezeichnung des hohen Bahnendes

Frequenzobjekt (frequencies[])

FeldTypErforderlichBeschreibung
typestringJaDiensttyp — ATIS (automatische Wetterdurchsage), GND (Rollkontrolle), TWR (Turm), APP (Anflug), DEP (Abflug) usw.
descriptionstring | nullNeinLesbare Bezeichnung
frequency_mhznumberJaFrequenz in MHz
FeldTypErforderlichNull?Beschreibung
identstringJaNieKennung der Funknavigationsanlage
namestringJaNieName der Funknavigationsanlage
typestringJaNiez. B. VOR, VOR-DME, NDB
frequency_khzinteger | nullNeinJaFrequenz in kHz
latitude_degnumberJaNieBreitengrad der Anlage
longitude_degnumberJaNieLängengrad der Anlage
associated_airportstring | nullNeinJaICAO des zugeordneten Flughafens, sofern bekannt

Client-Typen

"""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

Integration

Lösen Sie einen Flughafen per ICAO auf und geben Sie UI-fertige Zusammenfassungsfelder einschließlich der längsten Start- und Landebahn zurück.

Das folgende Beispiel speichert jede Abfrage 24 Stunden lang im Cache, da sich Flughafenmetadaten selten ändern. Jeder HTTP-Aufruf verwendet Verbindungs- und Lese-Timeouts, damit ein langsamer Upstream Ihre Briefing-UI nicht blockieren kann.

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")

Hinweise zur Implementierung

Unvollständige Daten. GA-Plätze und Hubschrauberlandeplätze haben oft keine Angaben zu Start- und Landebahnen oder Frequenzen. Prüfen Sie die Array-Längen, bevor Sie Bahntabellen rendern.

Nachgelagerte Daten. Nachdem Sie hier die ICAO aufgelöst haben, fahren Sie mit demselben Code mit METAR, TAF, NOTAMs oder Flugplatzkarten fort.

Navaid-Overlays. Die eingebetteten Funknavigationsanlagen decken die Umgebung des Flughafens ab. Für Bbox- oder Typfilter über eine ganze Region verwenden Sie Funknavigationsanlagen.

ICAO vs. IATA und geschlossene FlughäfenAbschnitt aufklappen

ICAO vs. IATA. Bevorzugen Sie ICAO für die interne Speicherung — der Code ist weltweit eindeutig. Die IATA-Abfrage ist praktisch für passagierorientierte Codes (JFK → vollständiger Datensatz), kann aber regionsübergreifend kollidieren.

Geschlossene Flughäfen. Datensätze mit type: "closed" bleiben zu historischen Referenzzwecken in der Datenbank. Filtern Sie sie gegebenenfalls aus Auswahllisten für aktive Flughäfen heraus.

Fehlerantworten

Nur Endpoint-spezifische Fehler. Zu Authentifizierung, Validierung, Rate Limits und Serverfehlern siehe Fehlerbehandlung.

404 - Flughafen nicht gefunden

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

Der Code existiert nicht in der SkyLink-Flughafendatenbank.

400 - beide Codes angegeben

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

400 - kein Code angegeben

{
  "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": {}
    }
  ]
}

Siehe auch: Flughafensuche · METAR · NOTAMs