Flughafenverkehr
Rekonstruieren Sie historische Ankünfte und Abflüge an einem Flughafen für ein bestimmtes Zeitfenster. Verwenden Sie diesen Endpoint für Betriebsanalysen, Kapazitätsplanung und Dashboards zur Leistung von Fluggesellschaften — nicht für Echtzeit-Flugpläne (siehe Flugpläne).
Tarifstufen: Hub für historische ADS-B-Daten.
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →Pro, Ultra oder Mega — verwenden Sie das Pfadpräfix, das zum benötigten Zeitfenster passt.
Mehr erfahren →Anfrage
https://data.skylinkapi.com/v3.1/ultra/history/airport/{icao}/traffic| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao | string | Ja | - | ICAO-Code des Flughafens (4 Zeichen) |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 |
end | string | Nein | jetzt | Ende des Zeitfensters — ISO 8601 |
direction | string | Nein | both | dep, arr oder both |
limit | integer | Nein | 100 | Max. Anzahl zurückgegebener Flüge (max. 1.000 auf dem ULTRA-Pfad) |
Das Abfragefenster darf bei /ultra/history/... 90 Tage nicht überschreiten.
MEGA-Pfad (`/mega/history/...`)Abschnitt aufklappen
https://data.skylinkapi.com/v3.1/mega/history/airport/{icao}/traffic| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao | string | Ja | - | ICAO-Code des Flughafens |
start | string | Nein | vor 24 h | Beginn des Zeitfensters — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad) |
end | string | Nein | jetzt | Ende des Zeitfensters |
direction | string | Nein | both | dep, arr oder both |
limit | integer | Nein | 200 | Max. Anzahl zurückgegebener Flüge (max. 2.000 auf dem MEGA-Pfad) |
Erfordert den Tarif Ultra oder Mega. Gleiche Antwortstruktur wie bei ULTRA.
Antwort
{
"icao": "EGLL",
"direction": "both",
"count": 1,
"flights": [
{
"flight_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"icao24": "4006f2",
"callsign": "BAW117",
"flight_number": "BAW117",
"aircraft_type_icao": "B77W",
"airline_name": "British Airways",
"departure_airport_icao": "EGLL",
"departure_airport_iata": "LHR",
"arrival_airport_icao": "KJFK",
"arrival_airport_iata": "JFK",
"flight_state": "ARCHIVED",
"takeoff_time": "2026-05-12T09:10:00Z",
"landing_time": "2026-05-12T09:28:00Z",
"flight_duration_min": 18.0,
"distance_nm": 205.7
}
]
}| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
icao | string | Ja | ICAO-Code des abgefragten Flughafens |
direction | string | Ja | Angewendeter Filter — dep, arr oder both |
count | integer | Ja | Anzahl der Elemente in flights |
flights | array | Ja | Passende Ankünfte/Abflüge |
Verkehrsflug (flights[])
Jedes Element verwendet dieselben Flughafen- und Zeitfelder wie die Flugzusammenfassung.
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
flight_id | string | Ja | Nie | UUID für Detail- und Track-Abfragen |
icao24 | string | null | Nein | Ja | Hex-Code des Luftfahrzeugs |
callsign | string | null | Nein | Ja | ADS-B-Rufzeichen |
flight_number | string | null | Nein | Ja | Normalisierte Flugnummer, sofern ermittelt |
aircraft_type_icao | string | null | Nein | Ja | ICAO-Typcode |
airline_name | string | null | Nein | Ja | Anzeigename der Fluggesellschaft |
departure_airport_icao | string | null | Nein | Ja | ICAO-Code des Abflughafens |
departure_airport_iata | string | null | Nein | Ja | IATA-Code des Abflughafens |
arrival_airport_icao | string | null | Nein | Ja | ICAO-Code des Zielflughafens |
arrival_airport_iata | string | null | Nein | Ja | IATA-Code des Zielflughafens |
flight_state | string | null | Nein | Ja | Archivstatus (z. B. ARCHIVED) |
takeoff_time | string | null | Nein | Ja | Startzeit (ISO 8601) |
landing_time | string | null | Nein | Ja | Landezeit (ISO 8601) |
flight_duration_min | number | null | Nein | Ja | Dauer in Minuten |
distance_nm | number | null | Nein | Ja | Entfernung in nautischen Meilen |
Client-Typen
"""Typed models for Historical ADS-B - matches historical-adsb.mdx field tables."""from __future__ import annotationsfrom dataclasses import dataclassfrom typing import Literal@dataclassclass HistoricalFlightSummary: flight_id: str icao24: str | None callsign: str | None flight_number: str | None tail_number: str | None departure_airport_icao: str | None arrival_airport_icao: str | None flight_start: str flight_end: str takeoff_time: str | None landing_time: str | None flight_duration_min: float | None distance_nm: float | None@dataclassclass HistoricalPosition: timestamp: str icao24: str latitude: float longitude: float altitude_baro: float | None ground_speed: float | None track: float | None vertical_rate: float | None is_on_ground: bool@dataclassclass HistoricalFlightWindow: flight_id: str callsign: str | None departure_airport_icao: str | None arrival_airport_icao: str | None takeoff_time: str | None landing_time: str | None flight_start: str flight_end: str flight_state: str | None@dataclassclass AirportTrafficFlight: flight_id: str icao24: str | None callsign: str | None departure_airport_icao: str | None arrival_airport_icao: str | None takeoff_time: str | None landing_time: str | None flight_duration_min: float | None distance_nm: float | None@dataclassclass AirportTrafficResponse: icao: str direction: Literal["dep", "arr", "both"] count: int flights: list[AirportTrafficFlight]Integration
Rekonstruieren Sie Ankünfte und Abflüge an einem Drehkreuz-Flughafen für ein gewähltes Zeitfenster. Das folgende Beispiel ruft 48 Stunden Verkehr in beide Richtungen in EGLL ab, filtert nur die Abflüge heraus und gruppiert sie nach Fluggesellschaft. Für rollierende 90-Tage-Fenster, die direction: arr und limit: 2000 pro Batch benötigen, erweitern Sie es auf den MEGA-Pfad.
import osfrom datetime import datetime, timedelta, timezoneimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY") or os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_airport_traffic(icao: str, *, direction: str = "both", tier: str = "ultra", hours: int = 24) -> dict: now = datetime.now(timezone.utc) start = (now - timedelta(hours=hours)).strftime("%Y-%m-%dT%H:%M:%SZ") end = now.strftime("%Y-%m-%dT%H:%M:%SZ") r = requests.get( f"{BASE}/{tier}/history/airport/{icao.upper()}/traffic", headers=HEADERS, params={"start": start, "end": end, "direction": direction, "limit": 50}, timeout=(10, 30), ) r.raise_for_status() return r.json()if __name__ == "__main__": import json data = fetch_airport_traffic("EGLL") print(json.dumps({"icao": data.get("icao"), "count": data.get("count")}, indent=2))Hinweise zur Implementierung
Wichtig: Bei direction: both leiten Sie die Bewegungsrichtung ab, indem Sie departure_airport_icao und arrival_airport_icao mit dem abgefragten icao vergleichen — entspricht departure_airport_icao dem abgefragten Flughafen, handelt es sich um einen Abflug; entspricht arrival_airport_icao ihm, handelt es sich um eine Ankunft. Verlassen Sie sich nicht auf die Reihenfolge der Liste.
Filterung nach Richtung. Fragen Sie dep oder arr statt both an, wenn Sie nur eine Bewegungsart benötigen — die Antwort ist kleiner und leichter zu paginieren.
Paginierung. Wenn count dem angefragten limit entspricht, verkleinern Sie das start/end-Fenster oder erhöhen Sie limit (bis 1.000 bei ULTRA, 2.000 bei MEGA) und führen Sie die Ergebnisse über sich überlappende Fenster zusammen.
Fehlerantworten
401/403 durch Tarifbeschränkungen: Hub für historische ADS-B-Daten. Endpoint-spezifisch:
422 — Zeitfenster zu groß
Wird zurückgegeben, wenn die Spanne zwischen start und end das Maximum des Pfads überschreitet — 90 Tage bei /ultra/history/... oder 365 Tage bei /mega/history/...:
{
"detail": "Query window exceeds maximum of 90 days for your plan on /ultra/history/..."
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
Filter direction: 'dep', 'arr', or 'both'
"both"Max records (default 100, max 1000)
1001 <= value <= 1000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/ultra/history/airport/KJFK/traffic"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Path Parameters
Query Parameters
Start datetime ISO 8601. Defaults to 24 h ago.
End datetime ISO 8601. Defaults to now.
'dep', 'arr', or 'both'
"both"Max records (default 200, max 2000)
2001 <= value <= 2000Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/mega/history/airport/KJFK/traffic"null{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Positionsverlauf
Historische ADS-B-Positionsdaten nach ICAO24-Hex-Code oder Kennzeichen — neueste zuerst, mit zugeordneten Flugfenstern.
Routenerkennung
Rufzeichen in Städtepaare auflösen, Routennetze von Flughäfen auflisten und Statistiken zu Routenpaaren mit Fluggesellschaften, Entfernung und Blockzeit abfragen.