Save up to 17% with yearly billing

See pricing

Flughafensuche

Drei Suchmodi helfen Benutzern, einen Flughafen zu finden, bevor Sie vollständige Datensätze über Flughäfen abrufen: Typeahead nach Name oder Code, nächstgelegene Flughäfen zu einer Kartenmarkierung oder GPS-Position und nächstgelegene Flughäfen, ermittelt aus der IP eines Besuchers. Alle drei liefern dasselbe Kernschema für Flughafeneinträge; die Standort- und IP-Modi ergänzen distance_km.

EndpointEinsatzzweck
GET /airports/search/textAutovervollständigung — der Benutzer tippt einen Namen, eine Stadt oder einen Teilcode
GET /airports/search/locationKartenmarkierung oder GPS-Koordinaten — Flughäfen innerhalb eines Radius
GET /airports/search/ip„Flughäfen in meiner Nähe“ ohne Berechtigung zur Standortbestimmung im Browser

Suche nach Text

Freitextsuche über ICAO-Codes, IATA-Codes, Flughafennamen und Städte. Die Ergebnisse werden nach relevance_score sortiert — exakte Code-Treffer erhalten die höchste Bewertung.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/airports/search/text
ParameterTypErforderlichStandardBeschreibung
qstringJa-Suchbegriff — mindestens 2 Zeichen
limitintegerNein10Maximale Anzahl zurückgegebener Ergebnisse

Antwort

{
  "query": "jfk",
  "airports": [
    {
      "id": 3622,
      "ident": "KJFK",
      "type": "large_airport",
      "name": "John F. Kennedy International Airport",
      "latitude_deg": 40.639447,
      "longitude_deg": -73.779317,
      "municipality": "New York",
      "iso_country": "US",
      "iata_code": "JFK",
      "relevance_score": 100
    }
  ],
  "airports_found": 1
}
FeldTypErforderlichBeschreibung
querystringJaEcho des Suchbegriffs
airportsarrayJaNach Relevanz sortierte Treffer (kann leer sein)
airports_foundintegerJaAnzahl der Einträge in airports

Flughafeneintrag (airports[])

FeldTypErforderlichNull?Beschreibung
identstringJaNiePrimäre Kennung (meist ICAO)
namestringJaNieName des Flughafens
typestringJaNieFlughafenklasse (gleiche Werte wie bei Flughäfen)
latitude_degnumberJaNieBreitengrad nach WGS-84
longitude_degnumberJaNieLängengrad nach WGS-84
municipalitystring | nullNeinJaBediente Stadt
iso_countrystring | nullNeinJaISO-Ländercode
iata_codestring | nullNeinJaIATA-Code, sofern vergeben
relevance_scoreintegerJaNieHöher = bessere Übereinstimmung (100 = exakter Code-Treffer)
GET
/airports/search/text
x-api-key<token>

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

In: header

Query Parameters

q*Q

Search query

Length2 <= length <= 100
limit?Limit

Maximum results to return

Default20
Range1 <= value <= 100
type?|

Filter by airport type

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/airports/search/text?q=string"
{
  "query": "London",
  "airports": [
    {
      "ident": "EGLL",
      "type": "large_airport",
      "name": "London Heathrow Airport",
      "latitude_deg": 51.4706,
      "longitude_deg": -0.4619,
      "municipality": "London",
      "iso_country": "GB",
      "iata_code": "LHR",
      "relevance_score": 80
    }
  ],
  "airports_found": 1
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Suche nach Standort

Liefert Flughäfen innerhalb eines Radius um eine Koordinate, sortiert nach Entfernung (nächster zuerst). Jedes Ergebnis enthält distance_km.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/airports/search/location
ParameterTypErforderlichStandardBeschreibung
latnumberJa-Breitengrad (-90 bis 90, Dezimalgrad WGS-84)
lonnumberJa-Längengrad (-180 bis 180, Dezimalgrad WGS-84)
radiusnumberNein50Suchradius in Kilometern (muss > 0 sein)
typestringNeinalle TypenNach Flughafen-type filtern, z. B. large_airport

Liefert bis zu 50 Flughäfen. In dicht besiedelten Stadtgebieten können Hubschrauberlandeplätze und geschlossene Flugplätze erscheinen, sofern Sie nicht type übergeben.

Antwort

{
  "search_location": {
    "latitude": 40.64,
    "longitude": -73.78,
    "radius_km": 50.0,
    "type_filter": null
  },
  "airports": [
    {
      "ident": "KJFK",
      "name": "John F. Kennedy International Airport",
      "type": "large_airport",
      "latitude_deg": 40.639447,
      "longitude_deg": -73.779317,
      "municipality": "New York",
      "iso_country": "US",
      "iata_code": "JFK",
      "distance_km": 0.08
    }
  ],
  "airports_found": 42
}
FeldTypErforderlichBeschreibung
search_locationobjectJaEcho der Abfrageparameter
airportsarrayJaNach Entfernung sortierte Treffer
airports_foundintegerJaAnzahl der zurückgegebenen Einträge (≤ 50)

Flughafeneintrag (airports[])

Dieselben Kernfelder wie bei der Textsuche, zusätzlich distance_km (Großkreisentfernung vom Abfragepunkt in Kilometern).

GET
/airports/search/location
x-api-key<token>

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

In: header

Query Parameters

lat*Lat

Latitude in decimal degrees

Range-90 <= value <= 90
lon*Lon

Longitude in decimal degrees

Range-180 <= value <= 180
radius?Radius

Search radius in kilometers

Default50
Range0 < value <= 500
type?|

Filter by airport type

limit?Limit

Maximum results to return

Default50
Range1 <= value <= 200

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/airports/search/location?lat=-90&lon=-180"
{
  "search_location": {
    "latitude": 40.64,
    "longitude": -73.78,
    "radius_km": 50
  },
  "airports": [
    {
      "id": 3682,
      "ident": "KJFK",
      "type": "large_airport",
      "name": "John F Kennedy International Airport",
      "latitude_deg": 40.6398,
      "longitude_deg": -73.7789,
      "elevation_ft": 13,
      "municipality": "New York",
      "iso_country": "US",
      "iso_region": "US-NY",
      "iata_code": "JFK",
      "distance_km": 0.15
    }
  ],
  "airports_found": 1
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Suche nach IP

Ermittelt den Standort einer IP-Adresse und liefert nahegelegene Flughäfen in derselben nach Entfernung sortierten Liste wie die Standortsuche.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/airports/search/ip
ParameterTypErforderlichStandardBeschreibung
ipstringNeinIP des AufrufersIPv4/IPv6-Adresse für die Standortbestimmung. Weglassen, um die IP des Anfragenden zu verwenden (RapidAPI leitet die Client-Adresse weiter)
radiusnumberNein50Suchradius in Kilometern

Lassen Sie ip für serverseitiges „Flughäfen in meiner Nähe“ weg, wenn RapidAPI die IP des Endbenutzers erhält. Übergeben Sie die IP des Besuchers explizit, wenn Ihr Backend Anfragen weiterleitet.

Antwort

{
  "ip_address": "203.0.113.10",
  "location": {
    "latitude": 40.7128,
    "longitude": -74.006,
    "city": "New York",
    "region": "New York",
    "country": "United States",
    "country_code": "US"
  },
  "search_radius_km": 50.0,
  "airports": [
    {
      "ident": "KJFK",
      "name": "John F. Kennedy International Airport",
      "distance_km": 20.5
    }
  ],
  "airports_found": 38
}
FeldTypErforderlichNull?Beschreibung
ip_addressstringJaNieIP, deren Standort bestimmt wurde
locationobject | nullNeinJaErmittelter Standort; null, wenn die Abfrage fehlschlägt
search_radius_kmnumberJaNieAngewendeter Suchradius
airportsarrayJaNieNach Entfernung sortierte Flughäfen (gleiche Struktur wie bei der Standortsuche)
airports_foundintegerJaNieAnzahl der zurückgegebenen Einträge
errorstring | nullNeinJaFehlermeldung, wenn die Standortbestimmung fehlschlägt

Hinweis zur Genauigkeit. IP-Adressen von Privatanschlüssen werden auf Stadtebene aufgelöst; VPN- und Rechenzentrums-IPs können ungenau sein. Zeigen Sie die ermittelte Stadt an und lassen Sie den Benutzer sie überschreiben.

GET
/airports/search/ip
x-api-key<token>

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

In: header

Query Parameters

ip?|

IP address to geolocate (defaults to requester's IP)

radius?Radius

Search radius in kilometers

Default100
Range0 < value <= 500
type?|

Filter by airport type

limit?Limit

Maximum results to return

Default50
Range1 <= value <= 200

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/airports/search/ip"
{
  "ip_address": "8.8.8.8",
  "location": {
    "latitude": 37.751,
    "longitude": -97.822,
    "city": "Wichita",
    "region": "Kansas",
    "country": "United States",
    "country_code": "US",
    "postal": "67202",
    "timezone": "America/Chicago",
    "ip": "8.8.8.8"
  },
  "airports": [],
  "search_radius_km": 100,
  "airports_found": 0
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}

Client-Typen

"""Text search response types - matches airport-search.mdx field tables."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass TextSearchRequest:    q: str    limit: int = 10@dataclassclass TextSearchAirport:    ident: str    name: str    type: str    latitude_deg: float    longitude_deg: float    municipality: str | None    iso_country: str | None    iata_code: str | None    relevance_score: int@dataclassclass TextSearchResponse:    query: str    airports: list[TextSearchAirport]    airports_found: int@dataclassclass LocationSearchRequest:    lat: float    lon: float    radius: float = 50.0    type: str | None = None@dataclassclass LocationAirport:    ident: str    name: str    type: str    latitude_deg: float    longitude_deg: float    municipality: str | None    iso_country: str | None    iata_code: str | None    distance_km: float@dataclassclass LocationSearchResponse:    search_location: dict    airports: list[LocationAirport]    airports_found: int@dataclassclass AirportSuggestion:    """Shape returned by autocomplete_suggestions() in the text-search example."""    icao: str | None    iata: str | None    name: str    municipality: str | None    country: str | None    relevance_score: int

Integration

Betreiben Sie ein Autovervollständigungsfeld für Flughäfen mit nach Relevanz sortierten Ergebnissen der Textsuche.

Das folgende Beispiel cacht Antworten der Textsuche eine Stunde lang und verwendet Verbindungs-/Lese-Timeouts, damit die Eingabe in einem Suchfeld Ihre UI nicht blockieren kann.

import osimport timefrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"CACHE: dict[str, tuple[dict, float]] = {}TEXT_SEARCH_TTL = 3600  # 1 h - airport names/codes are stable@dataclassclass AirportSuggestion:    icao: str | None    iata: str | None    name: str    municipality: str | None    country: str | None    relevance_score: intdef search_airports_text(query: str, limit: int = 10) -> dict:    cache_key = f"text:{query.lower()}:{limit}"    cached = CACHE.get(cache_key)    if cached and time.time() < cached[1]:        return cached[0]    r = requests.get(        f"{BASE}/airports/search/text",        headers=HEADERS,        params={"q": query, "limit": limit},        timeout=(10, 15),    )    r.raise_for_status()    data = r.json()    CACHE[cache_key] = (data, time.time() + TEXT_SEARCH_TTL)    return datadef autocomplete_suggestions(query: str, limit: int = 8) -> list[AirportSuggestion]:    payload = search_airports_text(query, limit=limit)    out: list[AirportSuggestion] = []    for row in payload.get("airports", []):        out.append(            AirportSuggestion(                icao=row.get("ident"),                iata=row.get("iata_code"),                name=row["name"],                municipality=row.get("municipality"),                country=row.get("iso_country"),                relevance_score=int(row.get("relevance_score") or 0),            )        )    return outif __name__ == "__main__":    import json    result = search_airports_text("JFK", limit=5)    print(json.dumps(result, indent=2, default=str))

Hinweise zur Implementierung

Benutzereingaben entprellen (Debounce). Warten Sie nach dem letzten Tastendruck ~300 ms, bevor Sie die API aufrufen. Verlangen Sie mindestens 2 Zeichen, um 422-Validierungsfehler zu vermeiden.

Relevanz-Ranking. relevance_score: 100 kennzeichnet eine exakte ICAO-/IATA-Übereinstimmung — heften Sie diese oben an Autovervollständigungslisten an.

Flughafentypen filtern. Filtern Sie für Airline-Apps nach dem Abruf auf large_airport / medium_airport oder übergeben Sie type=large_airport bei der Standortsuche.

Mit der vollständigen Abfrage verketten. Rufen Sie nach der Auswahl Flughäfen mit icao auf, um Start- und Landebahnen sowie Frequenzen zu erhalten.

Datenschutz bei der IP-Suche. Legen Sie die IP-Geolokalisierung in Ihrer Datenschutzerklärung offen. Bevorzugen Sie die Standortbestimmung im Browser + Standortsuche, wenn der Benutzer die Berechtigung erteilt.

Fehlerantworten

Gemeinsame Validierungs- und Plattformfehler: Fehlerbehandlung. Endpoint-spezifisch:

422 - Suchbegriff zu kurz

{
  "detail": [
    {
      "type": "string_too_short",
      "loc": ["query", "q"],
      "msg": "String should have at least 2 characters"
    }
  ]
}

Wenn die IP-Geolokalisierung fehlschlägt, liefert die API HTTP 200 mit location: null, airports: [] und einem befüllten error-String. Behandeln Sie dies als weichen Fehler — fordern Sie eine manuelle Eingabe an oder greifen Sie auf die Standortbestimmung im Browser zurück.

{
  "ip_address": "203.0.113.10",
  "location": null,
  "search_radius_km": 50.0,
  "airports": [],
  "airports_found": 0,
  "error": "Unable to geolocate IP address"
}

Siehe auch: Flughäfen · METAR · Länder