Flugpläne
Abflug- und Ankunftspläne eines Flughafens für ein Zeitfenster. Beide Operationen liefern dieselbe Struktur für Flugzeilen mit einem direction-Diskriminator (departures oder arrivals). Standardmäßig liefert die API anstehende Flüge für etwa die nächsten 12 Stunden und kann im Hintergrund weitere Seiten abrufen.
Geeignet für Flughafen-Anzeigetafeln, Dispatch-Dashboards und Batch-ETL. Geben Sie pro Anfrage genau eine Flughafenkennung an (icao oder iata).
Wichtig: Die Schlüssel der Flugzeilen verwenden Title Case — Time, Flight, Status, nicht time, flight, status. Der Zugriff auf kleingeschriebene Schlüssel liefert undefined.
Anfrage
Voraussetzungen
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →Abflüge
https://data.skylinkapi.com/v3.1/schedules/departuresAnkünfte
https://data.skylinkapi.com/v3.1/schedules/arrivals| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao | string | Eines von icao / iata | - | Vierstelliger ICAO-Flughafencode, z. B. KJFK, EGLL |
iata | string | Eines von icao / iata | - | Dreistelliger IATA-Flughafencode, z. B. JFK, LHR |
date | string | Nein | aktuelles Datum | Datum im Format DD-MM-YYYY. Bereich: 5 Tage zurück bis 1 Tag voraus |
time | string | Nein | aktuelle Uhrzeit | Uhrzeit im Format HH:MM. Erfordert date, wenn angegeben |
ts | integer | Nein | - | Unix-Zeitstempel in Millisekunden. Überschreibt date und time, wenn gesetzt |
Bevorzugen Sie ts für programmatisches Polling — so vermeiden Sie Formatierungsfehler durch Gebietsschema und Zeitzone in Cronjobs und Serverless-Workern.
Antwort
Beide Operationen verwenden dieselbe Antwortstruktur. Das Feld direction entspricht der aufgerufenen Operation.
Beispiel für Abflüge
{
"iata": "MXP",
"direction": "departures",
"airport_code": "LIMC",
"flights": [
{
"Time": "16:05",
"Date": "11 Feb",
"IATA": "ICN",
"Destination": "Seoul",
"Flight": "C84093",
"Airline": "Federal Airlines",
"Status": "Estimated 16:39"
}
],
"total_flights": 85,
"pages_fetched": 3
}Beispiel für Ankünfte
{
"iata": "MXP",
"direction": "arrivals",
"airport_code": "LIMC",
"flights": [
{
"Time": "16:20",
"Date": "11 Feb",
"IATA": "RAK",
"Origin": "Marrakech",
"Flight": "EC3929",
"Airline": "easyJet Europe",
"Status": "Landed 16:15"
}
],
"total_flights": 72,
"pages_fetched": 3
}Felder der Antwortstruktur
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
iata | string | Ja | IATA-Code des angefragten Flughafens, sofern bekannt |
direction | string | Ja | departures oder arrivals |
airport_code | string | Ja | Echo Ihrer Anfrage — ICAO, wenn Sie icao übergeben, IATA, wenn Sie iata übergeben |
flights | array | Ja | Flugplanzeilen (kann leer sein) |
total_flights | integer | Ja | Gesamtzahl der Flüge im abgefragten Zeitfenster |
pages_fetched | integer | Ja | Im Hintergrund abgerufene Seiten |
Flugzeilen-Objekt (flights[])
JSON-Pfad: flights[]. Schlüsselnamen sind in Title Case geschrieben.
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
Time | string | Ja | Planmäßige Ortszeit |
Date | string | Ja | Lokale Datumsangabe, z. B. 11 Feb |
IATA | string | Ja | IATA-Code des Gegenflughafens |
Destination | string | Nur Abflüge | Bezeichnung von Zielstadt/-flughafen |
Origin | string | Nur Ankünfte | Bezeichnung von Herkunftsstadt/-flughafen |
Flight | string | Ja | Flugnummer wie auf Anzeigetafeln |
Airline | string | Ja | Anzeigename der Fluggesellschaft |
Status | string | Ja | Status als Freitext, z. B. Estimated 16:39, Landed 16:15 |
Client-Typen
"""Schedules response models for /schedules/departures and /schedules/arrivals."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass SchedulesRequest: """Query input shared by both schedules endpoints.""" icao: str | None = None iata: str | None = None date: str | None = None time: str | None = None ts: int | None = None@dataclassclass ScheduleFlight: Time: str Date: str IATA: str Flight: str Airline: str Status: str Destination: str | None = None Origin: str | None = None@dataclassclass SchedulesResponse: iata: str direction: str airport_code: str flights: list[ScheduleFlight] total_flights: int pages_fetched: intIntegration
Rufen Sie Abflüge ab und normalisieren Sie die Schlüssel in Title Case in eine flache Struktur für Anzeigetafeleinträge.
Das folgende Beispiel erzwingt icao xor iata, verwendet timeoutsichere Anfragen für Batch-Polling und bildet Zeilen auf stabile interne Schlüssel ab.
import osimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = { "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}def fetch_schedules(direction: str, *, icao: str | None = None, iata: str | None = None) -> dict: """Fetch airport schedules for arrivals or departures.""" if bool(icao) == bool(iata): raise ValueError("Provide exactly one of icao or iata") if direction not in {"arrivals", "departures"}: raise ValueError("direction must be arrivals or departures") code = icao.upper() if icao else (iata or "").upper() params = {"icao": code} if icao else {"iata": code} r = requests.get(f"{BASE}/schedules/{direction}", headers=HEADERS, params=params, timeout=(10, 20)) r.raise_for_status() return r.json()if __name__ == "__main__": import json data = fetch_schedules("departures", icao="KJFK") flights = data.get("flights") or [] print(json.dumps({"count": len(flights), "sample": flights[:3]}, indent=2, default=str))Hinweise zur Implementierung
Status-Parsing. Status ist Anzeigetext aus der Flugplanquelle. Parsen Sie ihn zurückhaltend, wenn Sie strukturierte Zustände benötigen.
Paginierung. Beginnen Sie mit dem Standardzeitfenster; größere Vorausschau-Bereiche erhöhen die Latenz.
Details zu einzelnen Flügen. Für Gate und Terminal eines einzelnen Flugs verwenden Sie Flugstatus.
Fehlerantworten
Zu allgemeinen Fehlern siehe Fehlerbehandlung. Endpoint-spezifisch:
422 - ungültiges Datum/ungültige Uhrzeit oder fehlender Flughafencode
{
"detail": [
{
"type": "value_error",
"loc": ["query", "date"],
"msg": "Invalid date format. Expected DD-MM-YYYY."
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
4-letter ICAO airport code (e.g. KJFK, EGLL)
3-letter IATA airport code (e.g. JFK, LHR)
Date in DD-MM-YYYY format (e.g. 11-02-2026). Range: 5 days back to 1 day forward.
Time in HH:MM format (e.g. 14:30). Requires date parameter.
Unix timestamp in milliseconds (alternative to date/time).
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/schedules/departures"{
"iata": "MXP",
"direction": "departures",
"airport_code": "LIMC",
"flights": [
{
"Time": "16:05",
"Date": "11 Feb",
"IATA": "ICN",
"Destination": "Seoul",
"Flight": "C84093",
"Airline": "Federal Airlines",
"Status": "Estimated 16:39"
}
],
"total_flights": 85,
"pages_fetched": 3
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
4-letter ICAO airport code (e.g. KJFK, EGLL)
3-letter IATA airport code (e.g. JFK, LHR)
Date in DD-MM-YYYY format (e.g. 11-02-2026). Range: 5 days back to 1 day forward.
Time in HH:MM format (e.g. 14:30). Requires date parameter.
Unix timestamp in milliseconds (alternative to date/time).
Response Body
application/json
application/json
curl -X GET "https://data.skylinkapi.com/v3.1/schedules/arrivals"{
"iata": "MXP",
"direction": "arrivals",
"airport_code": "LIMC",
"flights": [
{
"Time": "16:20",
"Date": "11 Feb",
"IATA": "RAK",
"Origin": "Marrakech",
"Flight": "EC3929",
"Airline": "easyJet Europe",
"Status": "Landed 16:15"
}
],
"total_flights": 72,
"pages_fetched": 3
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}Siehe auch: Flugstatus · Flughäfen · Fluggesellschaften