Save up to 17% with yearly billing

See pricing

Positionsverlauf

Rufen Sie eine Zeitleiste des Rohpositionsverlaufs für ein Luftfahrzeug anhand des Kennzeichens oder des ICAO24-Hex-Codes ab — ohne vorherigen Suchschritt. Anders als der Endpoint für den Flug-Track ist der Positionsverlauf nicht auf einen einzelnen Flug beschränkt und kann in einem Zeitfenster mehrere Flüge umfassen.

Wahl des Pfads: Für den Track eines einzelnen archivierten Flugs von Gate zu Gate verwenden Sie Kennzeichen → Flugsuche → flight_id → Track. Für eine Rohzeitleiste über mehrere Flüge hinweg oder wenn Ihnen die Flugabgrenzungen nicht bekannt sind, verwenden Sie direkt Kennzeichen → Positionen.

Tarifstufen: Hub für historische ADS-B-Daten.

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.

Mehr erfahren →

Nach ICAO24

Anfrage

GEThttps://data.skylinkapi.com/v3.1/ultra/history/positions/{icao24}
ParameterTypErforderlichStandardBeschreibung
icao24stringJa-ICAO24-Hex-Code des Luftfahrzeugs (6 Zeichen)
startstringNeinvor 24 hBeginn des Zeitfensters — ISO 8601
endstringNeinjetztEnde des Zeitfensters — ISO 8601
limitintegerNein1000Max. Anzahl der Positionszeilen (max. 5.000 auf dem ULTRA-Pfad)

Das Abfragefenster darf bei /ultra/history/... 90 Tage nicht überschreiten.

MEGA-Pfad — nach [ICAO24](https://en.wikipedia.org/wiki/ICAO_24-bit_address) (`/mega/history/...`)Abschnitt aufklappen
GEThttps://data.skylinkapi.com/v3.1/mega/history/positions/{icao24}
ParameterTypErforderlichStandardBeschreibung
icao24stringJa-ICAO24-Hex-Code des Luftfahrzeugs
startstringNeinvor 24 hBeginn des Zeitfensters — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad)
endstringNeinjetztEnde des Zeitfensters
limitintegerNein1000Max. Anzahl der Positionen (max. 10.000 auf dem MEGA-Pfad)

Erfordert den Tarif Ultra oder Mega. Gleiche Antwortstruktur wie bei ULTRA.

Nach Kennzeichen

Gleiche Antwortstruktur wie nach ICAO24, akzeptiert jedoch ein Kennzeichen (z. B. N12345, G-XWBA), das serverseitig in einen ICAO24-Code aufgelöst wird. Gibt 404 zurück, wenn das Kennzeichen nicht im Luftfahrzeugregister enthalten ist.

Anfrage

GEThttps://data.skylinkapi.com/v3.1/ultra/history/positions/registration/{registration}
ParameterTypErforderlichStandardBeschreibung
registrationstringJa-Kennzeichen des Luftfahrzeugs
startstringNeinvor 24 hBeginn des Zeitfensters — ISO 8601
endstringNeinjetztEnde des Zeitfensters — ISO 8601
limitintegerNein1000Max. Anzahl der Positionszeilen (max. 5.000 auf dem ULTRA-Pfad)
MEGA-Pfad — nach Kennzeichen (`/mega/history/...`)Abschnitt aufklappen
GEThttps://data.skylinkapi.com/v3.1/mega/history/positions/registration/{registration}
ParameterTypErforderlichStandardBeschreibung
registrationstringJa-Kennzeichen
startstringNeinvor 24 hBeginn des Zeitfensters — ISO 8601 (max. 365 Tage Spanne auf dem MEGA-Pfad)
endstringNeinjetztEnde des Zeitfensters
limitintegerNein1000Max. Anzahl der Positionen (max. 10.000 auf dem MEGA-Pfad)

Erfordert den Tarif Ultra oder Mega. Gleiche Antwortstruktur wie bei ULTRA.

Antwort

{
  "icao24": "40621d",
  "count": 864,
  "positions": [
    {
      "timestamp": "2026-05-13T03:08:05Z",
      "icao24": "40621d",
      "latitude": 40.6413,
      "longitude": -73.7781,
      "altitude_baro": 0,
      "ground_speed": 12,
      "track": 90,
      "vertical_rate": 0,
      "callsign": "BAW178",
      "is_on_ground": true,
      "registration": "G-XWBA",
      "aircraft_type": "B77W",
      "gps_spoofed": false
    }
  ],
  "flights": [
    {
      "flight_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "callsign": "BAW178",
      "flight_number": "BAW178",
      "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",
      "takeoff_time": "2026-05-12T19:45:00Z",
      "landing_time": "2026-05-13T03:08:00Z",
      "flight_start": "2026-05-12T19:42:05Z",
      "flight_end": "2026-05-13T03:11:10Z",
      "flight_state": "ARCHIVED"
    }
  ]
}
FeldTypErforderlichNull?Beschreibung
icao24stringJaNieHex-Code des abgefragten Luftfahrzeugs
countintegerJaNieAnzahl der Elemente in positions
positionsarrayJaNiePositionsdaten, neueste zuerst
flightsarrayJaNieArchivierte Flüge, die sich mit dem Zeitfenster überschneiden

Der Endpoint für Kennzeichen ergänzt ein registration-Feld auf oberster Ebene, das das aufgelöste Kennzeichen wiedergibt; icao24 wird nach der serverseitigen Abfrage befüllt.

Flugfenster (flights[])

FeldTypErforderlichNull?Beschreibung
flight_idstringJaNieUUID für Detail- und Track-Abfragen
callsignstring | nullNeinJaRufzeichen während dieses Flugs
flight_numberstring | nullNeinJaNormalisierte Flugnummer, sofern ermittelt
departure_airport_icaostring | nullNeinJaAbflughafen, sofern ermittelt
departure_airport_iatastring | nullNeinJaIATA-Code des Abflughafens
departure_airport_namestring | nullNeinJaName des Abflughafens
arrival_airport_icaostring | nullNeinJaZielflughafen, sofern ermittelt
arrival_airport_iatastring | nullNeinJaIATA-Code des Zielflughafens
arrival_airport_namestring | nullNeinJaName des Zielflughafens
takeoff_timestring | nullNeinJaStartzeit dieses Flugs (ISO 8601)
landing_timestring | nullNeinJaLandezeit dieses Flugs (ISO 8601)
flight_startstringJaNieErste archivierte Position in diesem Flugfenster
flight_endstringJaNieLetzte archivierte Position in diesem Flugfenster
flight_statestring | nullNeinJaArchivstatus (z. B. ARCHIVED)

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

Erstellen Sie einen Wiedergabe-Track anhand des Kennzeichens eines Luftfahrzeugs. Das folgende Beispiel ruft den Positionsverlauf über das Kennzeichen ab, kehrt die Positionen für die Wiedergabe auf der Karte in chronologische Reihenfolge um und behandelt sowohl den Fehlerfall 404 (unbekanntes Kennzeichen) als auch 422 (Zeitfenster zu groß). Erweitern Sie es auf den Pfad /mega/history/..., wenn ein Rückblick von 90 Tagen nicht ausreicht.

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_positions(icao24: str, *, 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/positions/{icao24.lower()}",        headers=HEADERS,        params={"start": start, "end": end, "limit": 100},        timeout=(10, 30),    )    r.raise_for_status()    return r.json()if __name__ == "__main__":    import json    # Resolve icao24 from a recent archived flight    r = requests.get(        f"{BASE}/ultra/history/flights",        headers=HEADERS,        params={"callsign": "BAW178", "limit": 1},        timeout=(10, 25),    )    r.raise_for_status()    flights = r.json().get("flights") or []    if not flights:        print("No flight found")    else:        icao24 = flights[0]["icao24"]        data = fetch_positions(icao24)        print(json.dumps({"icao24": data.get("icao24"), "count": data.get("count")}, indent=2))

Hinweise zur Implementierung

Kennzeichen oder Hex-Code. Verwenden Sie bevorzugt registration, wenn Ihre Nutzer die Kennzeichen kennen; verwenden Sie icao24, wenn Sie rohe ADS-B-Feeds verarbeiten. Die Endpoints für Kennzeichen geben 404 zurück, wenn das Kennzeichen unbekannt ist.

Wichtig: Der Positionsverlauf gibt positions mit den neuesten Einträgen zuerst zurück. Kehren Sie die Reihenfolge für die Wiedergabe auf der Karte chronologisch um.

Größe des Zeitfensters. Bei einer Abtastung im 5-Sekunden-Takt erzeugt ein einzelner Flug etwa 700–1.500 Positionszeilen. Erhöhen Sie bei Anfragen über mehrere Tage limit (bis 5.000 bei ULTRA, 10.000 bei MEGA) oder verkleinern Sie das Zeitfenster und führen Sie die Ergebnisse clientseitig zusammen.

Fehlerantworten

401/403 durch Tarifbeschränkungen: Hub für historische ADS-B-Daten. Endpoint-spezifisch:

404 — Kennzeichen nicht gefunden

{
  "detail": "Registration 'N00000' not found"
}

Wird von /history/positions/registration/{registration} zurückgegeben, wenn das Kennzeichen nicht im Luftfahrzeugregister enthalten ist.

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/..."
}
GET
/ultra/history/positions/{icao24}
x-api-key<token>

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

In: header

Path Parameters

icao24*Icao24

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

limit?Limit

Max position rows (default 1000, max 5000)

Default1000
Range1 <= value <= 5000

Response Body

application/json

application/json

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

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

In: header

Path Parameters

registration*Registration

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

limit?Limit

Max position rows (default 1000, max 5000)

Default1000
Range1 <= value <= 5000

Response Body

application/json

application/json

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

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

In: header

Path Parameters

icao24*Icao24

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

limit?Limit

Max position rows (default 1000, max 10000)

Default1000
Range1 <= value <= 10000

Response Body

application/json

application/json

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

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

In: header

Path Parameters

registration*Registration

Query Parameters

start?|

Start datetime ISO 8601. Defaults to 24 h ago.

end?|

End datetime ISO 8601. Defaults to now.

limit?Limit

Max position rows (default 1000, max 10000)

Default1000
Range1 <= value <= 10000

Response Body

application/json

application/json

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