Save up to 17% with yearly billing

See pricing

Suche im Flugverlauf

Durchsuchen Sie archivierte Flüge nach Kennzeichen, Rufzeichen (das über ADS-B ausgestrahlte Rufzeichen des Flugs, z. B. BAW178), Route oder Hex-Code und erhalten Sie eine Liste von Flügen mit flight_id-UUIDs. Mindestens ein Filter ist erforderlich. Dies ist der obligatorische erste Schritt in jedem Workflow mit historischen ADS-B-Daten — ohne eine flight_id aus der Suche können die Endpoints für Details und Track nicht aufgerufen werden.

Tarifstufen und Regeln für Pfadpräfixe: Übersicht Historical ADS-B.

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
Tarif

Pro, Ultra oder Mega — verwenden Sie das Pfadpräfix, das zum benötigten Zeitfenster passt (siehe Vergleichstabelle in der Übersicht).

Mehr erfahren →

Anfrage

GEThttps://data.skylinkapi.com/v3.1/ultra/history/flights
ParameterTypErforderlichStandardBeschreibung
startstringNeinvor 24 hBeginn des Abfragefensters — ISO 8601-Datum/Uhrzeit
endstringNeinjetztEnde des Abfragefensters — ISO 8601-Datum/Uhrzeit
icao24stringEin Filter erforderlich-ICAO24-Hex-Adresse (6 Zeichen)
registrationstringEin Filter erforderlich-Kennzeichen (z. B. N12345, G-XWBA). Wird serverseitig in icao24 aufgelöst
callsignstringEin Filter erforderlich-Exakte Übereinstimmung des Rufzeichens (z. B. BAW117)
departure_icaostringEin Filter erforderlich-ICAO-Code des Abflughafens (4 Zeichen)
arrival_icaostringEin Filter erforderlich-ICAO-Code des Zielflughafens (4 Zeichen)
limitintegerNein100Maximale Anzahl zurückgegebener Flüge (max. 1.000 auf dem ULTRA-Pfad)

Werden sowohl registration als auch icao24 angegeben, müssen sie sich auf dasselbe Luftfahrzeug beziehen. Auf dem ULTRA-Pfad darf das Abfragefenster 90 Tage nicht überschreiten.

MEGA-Pfad (`/mega/history/...`)Abschnitt aufklappen
GEThttps://data.skylinkapi.com/v3.1/mega/history/flights
ParameterTypErforderlichStandardBeschreibung
startstringNeinvor 24 hFensterbeginn — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad)
endstringNeinjetztFensterende — ISO 8601
icao24stringEin Filter erforderlich-ICAO24-Hex (6 Zeichen)
registrationstringEin Filter erforderlich-Kennzeichen
callsignstringEin Filter erforderlich-Exaktes Rufzeichen
departure_icaostringEin Filter erforderlich-ICAO des Abflughafens
arrival_icaostringEin Filter erforderlich-ICAO des Zielflughafens
limitintegerNein200Maximale Anzahl Flüge (max. 2.000 auf dem MEGA-Pfad)

Erfordert den RapidAPI-Tarif Ultra oder Mega. Gleiche Parameter und gleiche Antwortstruktur wie ULTRA — nur die Obergrenzen für Fenster und Limit unterscheiden sich. Siehe die Vergleichstabelle in der Übersicht.

Antwort

{
  "filters": {
    "icao24": null,
    "registration": null,
    "resolved_icao24": null,
    "callsign": null,
    "departure_icao": "EGLL",
    "arrival_icao": null
  },
  "count": 1,
  "flights": [
    {
      "flight_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "icao24": "40621d",
      "callsign": "BAW178",
      "flight_number": "BAW178",
      "tail_number": "G-XWBA",
      "aircraft_type_icao": "B77W",
      "aircraft_type_name": "Boeing 777-300ER",
      "airline_icao": "BAW",
      "airline_iata": "BA",
      "airline_name": "British Airways",
      "departure_airport_icao": "EGLL",
      "departure_airport_iata": "LHR",
      "departure_airport_name": "London Heathrow Airport",
      "arrival_airport_icao": "KJFK",
      "arrival_airport_iata": "JFK",
      "arrival_airport_name": "John F Kennedy International Airport",
      "flight_state": "ARCHIVED",
      "flight_start": "2026-05-12T19:42:05Z",
      "flight_end": "2026-05-13T03:11:10Z",
      "takeoff_time": "2026-05-12T19:45:00Z",
      "landing_time": "2026-05-13T03:08:00Z",
      "flight_duration_min": 443.0,
      "distance_nm": 2998.4,
      "confidence": 1.0,
      "route_source": "vrs_confirmed",
      "gps_spoofing_suspected": false,
      "diversion_suspected": false
    }
  ]
}
FeldTypErforderlichBeschreibung
filtersobjectJaEcho der angewendeten Suchfilter (siehe unten)
countintegerJaAnzahl der Einträge in flights
flightsarrayJaZusammenfassungen der passenden Flüge (kann leer sein)

Angewendete Filter (filters)

FeldTypErforderlichNull?Beschreibung
icao24string | nullJaJaAbgefragter ICAO24-Hex, falls vorhanden
registrationstring | nullJaJaAbgefragtes Kennzeichen, falls vorhanden
resolved_icao24string | nullJaJaAus registration aufgelöster ICAO24, falls angegeben
callsignstring | nullJaJaAbgefragtes Rufzeichen, falls vorhanden
departure_icaostring | nullJaJaAbgefragter Abflughafen, falls vorhanden
arrival_icaostring | nullJaJaAbgefragter Zielflughafen, falls vorhanden

Flugzusammenfassung (flights[])

FeldTypErforderlichNull?Beschreibung
flight_idstringJaNieUUID für Detail- und Track-Abfragen
icao24string | nullNeinJaHex-Adresse des Luftfahrzeugs, sofern bekannt
callsignstring | nullNeinJaADS-B-Rufzeichen während des Flugs
flight_numberstring | nullNeinJaNormalisierte Flugnummer, sofern aufgelöst
tail_numberstring | nullNeinJaKennzeichen, sofern bekannt
aircraft_type_icaostring | nullNeinJaICAO-Typcode (z. B. B77W)
aircraft_type_namestring | nullNeinJaLesbare Bezeichnung des Luftfahrzeugtyps
airline_icaostring | nullNeinJaICAO-Code der Fluggesellschaft
airline_iatastring | nullNeinJaIATA-Code der Fluggesellschaft
airline_namestring | nullNeinJaAnzeigename der Fluggesellschaft
departure_airport_icaostring | nullNeinJaICAO des Abflughafens, sofern aufgelöst
departure_airport_iatastring | nullNeinJaIATA des Abflughafens
departure_airport_namestring | nullNeinJaName des Abflughafens
arrival_airport_icaostring | nullNeinJaICAO des Zielflughafens, sofern aufgelöst
arrival_airport_iatastring | nullNeinJaIATA des Zielflughafens
arrival_airport_namestring | nullNeinJaName des Zielflughafens
flight_statestring | nullNeinJaArchivstatus (z. B. ARCHIVED)
flight_startstringJaNieErste archivierte Beobachtung (ISO 8601)
flight_endstringJaNieLetzte archivierte Beobachtung (ISO 8601)
takeoff_timestring | nullNeinJaGeschätzter oder erkannter Start (ISO 8601)
landing_timestring | nullNeinJaGeschätzte oder erkannte Landung (ISO 8601)
flight_duration_minnumber | nullNeinJaGate-to-Gate-Dauer in Minuten
distance_nmnumber | nullNeinJaGroßkreisentfernung in nautischen Meilen
confidencenumber | nullNeinJaKonfidenzwert der Route (0–1)
route_sourcestring | nullNeinJaOpaker Enum-Wert, der beschreibt, wie die Route aufgelöst wurde — als Anzeigewert behandeln, nicht als Schlüssel für Abgleiche
gps_spoofing_suspectedboolean | nullNeinJaOb für diesen Flug GPS-Spoofing markiert wurde
diversion_suspectedboolean | nullNeinJaOb für diesen Flug eine Umleitung markiert wurde

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

Der typische Workflow ist Suche → Details (Metadaten) oder Suche → Track (Wiedergabe auf der Karte). Suchen Sie mit mindestens einem Filter, übernehmen Sie eine flight_id aus den Ergebnissen und rufen Sie dann Details oder Track auf.

Das folgende Beispiel sucht nach Abflughafen, ruft die vollständigen Metadaten für den ersten Treffer ab und verwendet Verbindungs- und Lese-Timeouts, damit Batch-Jobs nicht unbegrenzt hängen bleiben. Behandeln Sie bei Tarifen ohne Zugriff auf historische ADS-B-Daten die Gateway-Antworten 401/403, bevor Sie JSON parsen — siehe Übersicht → Fehlerantworten.

import osimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}PLAN_GATED = {401, 403}def search_historical_flights(    *,    registration: str | None = None,    callsign: str | None = None,    icao24: str | None = None,    departure_icao: str | None = None,    arrival_icao: str | None = None,    start: str | None = None,    end: str | None = None,    limit: int = 10,    tier: str = "ultra",) -> dict:    """Search archived flights - at least one aircraft/route filter is required."""    params = {k: v for k, v in {        "registration": registration,        "callsign": callsign,        "icao24": icao24,        "departure_icao": departure_icao,        "arrival_icao": arrival_icao,        "start": start,        "end": end,        "limit": limit,    }.items() if v is not None}    r = requests.get(        f"{BASE}/{tier}/history/flights",        headers=HEADERS,        params=params,        timeout=(10, 25),    )    r.raise_for_status()    return r.json()def fetch_historical_flight_detail(flight_id: str, *, tier: str = "ultra") -> dict:    """Fetch full metadata for one archived flight by UUID."""    r = requests.get(        f"{BASE}/{tier}/history/flight/{flight_id}",        headers=HEADERS,        timeout=(10, 25),    )    r.raise_for_status()    return r.json()def search_then_detail(    *,    departure_icao: str,    limit: int = 1,    tier: str = "ultra",) -> dict | None:    """Search → pick first match → return full flight detail."""    search = search_historical_flights(        departure_icao=departure_icao,        limit=limit,        tier=tier,    )    flights = search.get("flights") or []    if not flights:        return None    return fetch_historical_flight_detail(flights[0]["flight_id"], tier=tier)if __name__ == "__main__":    import json    detail = search_then_detail(departure_icao="EGLL")    print(json.dumps(detail, indent=2, default=str) if detail else "No matching flight found")

Hinweise zur Implementierung

Wählen Sie das richtige Pfadpräfix. Verwenden Sie /ultra/history/... ab Pro, wenn ein Fenster von 90 Tagen ausreicht. Verwenden Sie /mega/history/... mit Ultra/Mega, wenn Sie bis zu 365 Tage oder höhere Limits pro Anfrage benötigen.

Verketten Sie über flight_id. Raten Sie niemals Zeitfenster für die Track-Wiedergabe — suchen Sie zuerst und rufen Sie dann /history/flight/{flight_id}/track für einen automatisch begrenzten Pfad auf.

Paginieren Sie große Fenster. Wenn count dem angeforderten limit entspricht, verkleinern Sie das Fenster start/end oder erhöhen Sie limit (innerhalb der Obergrenzen der Stufe) und führen Sie die Ergebnisse clientseitig zusammen.

Kennzeichen vs. Hex. Bevorzugen Sie registration, wenn Ihre Benutzer Kennzeichen kennen; verwenden Sie icao24, wenn Sie rohe ADS-B-Feeds verarbeiten.

Fehlerantworten

Tarifbedingte 401/403: Übersicht Historical ADS-B. Endpoint-spezifisch:

422 — kein Suchfilter

Mindestens einer der Parameter icao24, registration, callsign, departure_icao oder arrival_icao ist erforderlich:

{
  "detail": [
    {
      "type": "value_error",
      "loc": ["query"],
      "msg": "At least one filter (icao24, registration, callsign, departure_icao, arrival_icao) is required"
    }
  ]
}

422 — Fenster zu groß

Wird zurückgegeben, wenn die Spanne start/end das Maximum des Pfads überschreitet — 90 Tage auf /ultra/history/... oder 365 Tage auf /mega/history/...:

{
  "detail": "Query window exceeds maximum of 90 days for your plan on /ultra/history/..."
}

422 — Kennzeichen und ICAO24 stimmen nicht überein

Wenn beide Kennungen angegeben werden, sich aber auf unterschiedliche Luftfahrzeuge beziehen:

{
  "detail": "registration and icao24 refer to different aircraft"
}
GET
/ultra/history/flights
x-api-key<token>

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

In: header

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

icao24?|

Filter by ICAO24 hex (6 chars)

registration?|

Filter by aircraft registration / tail number (e.g. 'N12345')

callsign?|

Filter by callsign (exact match, e.g. 'BAW123')

departure_icao?|

Filter by departure airport ICAO (4 chars)

arrival_icao?|

Filter by arrival airport ICAO (4 chars)

limit?Limit

Max records (default 100, max 1000)

Default100
Range1 <= value <= 1000

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/ultra/history/flights"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
GET
/mega/history/flights
x-api-key<token>

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

In: header

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

icao24?|

Filter by ICAO24 hex (6 chars)

registration?|

Filter by aircraft registration / tail number (e.g. 'N12345')

callsign?|

Filter by callsign (exact match, e.g. 'BAW123')

departure_icao?|

Filter by departure airport ICAO (4 chars)

arrival_icao?|

Filter by arrival airport ICAO (4 chars)

limit?Limit

Max records (default 200, max 2000)

Default200
Range1 <= value <= 2000

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/mega/history/flights"
null
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}