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.
| Endpoint | Einsatzzweck |
|---|---|
GET /airports/search/text | Autovervollständigung — der Benutzer tippt einen Namen, eine Stadt oder einen Teilcode |
GET /airports/search/location | Kartenmarkierung 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
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/airports/search/text| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
q | string | Ja | - | Suchbegriff — mindestens 2 Zeichen |
limit | integer | Nein | 10 | Maximale 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
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
query | string | Ja | Echo des Suchbegriffs |
airports | array | Ja | Nach Relevanz sortierte Treffer (kann leer sein) |
airports_found | integer | Ja | Anzahl der Einträge in airports |
Flughafeneintrag (airports[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
ident | string | Ja | Nie | Primäre Kennung (meist ICAO) |
name | string | Ja | Nie | Name des Flughafens |
type | string | Ja | Nie | Flughafenklasse (gleiche Werte wie bei Flughäfen) |
latitude_deg | number | Ja | Nie | Breitengrad nach WGS-84 |
longitude_deg | number | Ja | Nie | Längengrad nach WGS-84 |
municipality | string | null | Nein | Ja | Bediente Stadt |
iso_country | string | null | Nein | Ja | ISO-Ländercode |
iata_code | string | null | Nein | Ja | IATA-Code, sofern vergeben |
relevance_score | integer | Ja | Nie | Höher = bessere Übereinstimmung (100 = exakter Code-Treffer) |
Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Search query
2 <= length <= 100Maximum results to return
201 <= value <= 100Filter 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
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/airports/search/location| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
lat | number | Ja | - | Breitengrad (-90 bis 90, Dezimalgrad WGS-84) |
lon | number | Ja | - | Längengrad (-180 bis 180, Dezimalgrad WGS-84) |
radius | number | Nein | 50 | Suchradius in Kilometern (muss > 0 sein) |
type | string | Nein | alle Typen | Nach 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
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
search_location | object | Ja | Echo der Abfrageparameter |
airports | array | Ja | Nach Entfernung sortierte Treffer |
airports_found | integer | Ja | Anzahl der zurückgegebenen Einträge (≤ 50) |
Flughafeneintrag (airports[])
Dieselben Kernfelder wie bei der Textsuche, zusätzlich distance_km (Großkreisentfernung vom Abfragepunkt in Kilometern).
Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Latitude in decimal degrees
-90 <= value <= 90Longitude in decimal degrees
-180 <= value <= 180Search radius in kilometers
500 < value <= 500Filter by airport type
Maximum results to return
501 <= value <= 200Response 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
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →https://data.skylinkapi.com/v3.1/airports/search/ip| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
ip | string | Nein | IP des Aufrufers | IPv4/IPv6-Adresse für die Standortbestimmung. Weglassen, um die IP des Anfragenden zu verwenden (RapidAPI leitet die Client-Adresse weiter) |
radius | number | Nein | 50 | Suchradius 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
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
ip_address | string | Ja | Nie | IP, deren Standort bestimmt wurde |
location | object | null | Nein | Ja | Ermittelter Standort; null, wenn die Abfrage fehlschlägt |
search_radius_km | number | Ja | Nie | Angewendeter Suchradius |
airports | array | Ja | Nie | Nach Entfernung sortierte Flughäfen (gleiche Struktur wie bei der Standortsuche) |
airports_found | integer | Ja | Nie | Anzahl der zurückgegebenen Einträge |
error | string | null | Nein | Ja | Fehlermeldung, 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.
Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
IP address to geolocate (defaults to requester's IP)
Search radius in kilometers
1000 < value <= 500Filter by airport type
Maximum results to return
501 <= value <= 200Response 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: intIntegration
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"
}
]
}GeoIP-Abfrage fehlgeschlagen (IP-Suche)
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"
}Flughäfen
Detaillierte Flughafendaten per ICAO- oder IATA-Code – Start- und Landebahnen, Funkfrequenzen und Funknavigationsanlagen in der Nähe.
Funknavigationsanlagen (Navaids)
Funknavigationsanlagen (VOR, NDB, ILS, DME, TACAN) nach Kennung, Flughafen, Typ, Land oder Begrenzungsrahmen suchen – mit kartenfertigen Koordinaten.