Save up to 17% with yearly billing

See pricing

ADS-B-Flugzeug-Tracking

Rufen Sie Live-Positionen von Luftfahrzeugen ab, filtern Sie sie für Ihren Kartenausschnitt und prüfen Sie den Zustand des ADS-B-Feeds. ADS-B (Automatic Dependent Surveillance–Broadcast) ist das Transpondersignal, mit dem ein Luftfahrzeug seine Identität und Position aussendet. Jeder Live-Datensatz enthält ICAO24 (sechsstelliger Hex-Code, der den Transponder eines Luftfahrzeugs eindeutig identifiziert, z. B. 0A0022), die Position, die barometrische Höhe (vom Druckhöhenmesser des Luftfahrzeugs gemessene Höhe in Fuß MSL), die Geschwindigkeit über Grund, den Track (Kurs über Grund in Grad rechtweisend) und die Vertikalrate (Steig- bzw. Sinkrate in Fuß pro Minute).

Die Daten werden alle paar Sekunden aktualisiert. Die Paginierung ist optional: Lassen Sie limit weg, um die vollständige Treffermenge zu erhalten (begrenzen Sie die Größe über Filter), oder übergeben Sie limit und offset, um große Ergebnismengen seitenweise abzurufen. Für statische Registerdaten zu einer Hex-Adresse verketten Sie mit der Luftfahrzeugsuche. Für historische Tracks siehe Historisches ADS-B.

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
EndpointEinsatzzweck
GET /adsb/aircraftLive-Positionen — Kartenkacheln, Verkehrsanzeigen, gefilterte Feeds
GET /adsb/aircraft/statisticsFlottenweite Kennzahlen — in der Luft vs. am Boden, Höhenstatistiken
GET /adsb/healthFeed-Status — Verbindungsstatus und Anzahl aktiver Luftfahrzeuge, bevor Sie eine Abfrageschleife starten

Live-Flugzeuge

Liefert die aktuell verfolgten Luftfahrzeuge mit der neuesten Position und den Flugdaten. Jeder Datensatz enthält Position, Höhe, Geschwindigkeit über Grund, Track, Vertikalrate und, sofern verfügbar, Anreicherungsfelder.

Anfrage

GEThttps://data.skylinkapi.com/v3.1/adsb/aircraft
ParameterTypErforderlichStandardBeschreibung
icao24stringNein-Filter nach sechsstelliger hexadezimaler Transponderadresse (Klein- oder Großbuchstaben; führende Nullen bleiben erhalten, z. B. 0A0022)
callsignstringNein-Teilübereinstimmung des Rufzeichens (ohne Beachtung der Groß-/Kleinschreibung), z. B. passt DAH zu DAH2055
latnumberNein-Breitengrad des Mittelpunkts für die Umkreissuche (-90 bis 90)
lonnumberNein-Längengrad des Mittelpunkts für die Umkreissuche (-180 bis 180)
radiusnumberNein-Suchradius in Kilometern (max. 1000)
bboxstringNein-Begrenzungsrahmen (Bounding Box) lat1,lon1,lat2,lon2 — zuerst die SW-Ecke, dann NO. Beispiel: 51.2,-0.8,51.6,-0.2
min_altnumberNein-Mindesthöhe in Fuß
max_altnumberNein-Maximalhöhe in Fuß
min_speednumberNein-Mindestgeschwindigkeit über Grund in Knoten
max_speednumberNein-Maximalgeschwindigkeit über Grund in Knoten
registrationstringNein-Filter nach Kennzeichen
airlinestringNein-Filter nach Name der durchführenden Fluggesellschaft
photosbooleanNeinfalseVorschaufotos abrufen (langsamer; max. 50 Luftfahrzeuge pro Seite)
limitintegerNeinvollständige MengeSeitengröße — weglassen, um alle Treffer zu erhalten
offsetintegerNein0Anzahl zu überspringender Einträge für die Paginierung

Regeln für die Kombination von Filtern — die häufigste Ursache für 422-Fehler:

SuchmodusErforderliche ParameterHinweise
Kreislat + lon + radiusAlle drei zusammen
RechteckbboxZuerst die SW-Ecke, dann NO
Keiner von beiden—Kreis- und Bbox-Parameter nicht mischen
Unvollständige Geodaten—lat ohne lon (oder umgekehrt) wird abgelehnt

Kombinieren Sie Höhen- und Geschwindigkeitsfilter, um den Verkehr auf der Strecke herauszufiltern.

Wichtig: photos ist standardmäßig false. photos=true ist langsamer und auf 50 Luftfahrzeuge pro Seite begrenzt — aktivieren Sie die Option nur für Detailansichten, nicht für Kartenkacheln oder hochfrequente Abfragen.

Antwort

{
  "aircraft": [
    {
      "icao24": "0A0022",
      "callsign": "DAH2055",
      "latitude": 51.274109,
      "longitude": -0.675964,
      "altitude": 9075.0,
      "ground_speed": 298.3,
      "track": 153.09,
      "vertical_rate": 2880.0,
      "is_on_ground": false,
      "last_seen": "2026-06-16T14:21:45.674566",
      "first_seen": "2026-06-16T14:17:09.312068",
      "registration": "7T-VJP",
      "aircraft_type": "Boeing B738",
      "airline": "Air Algerie",
      "photo_url": null
    }
  ],
  "total_count": 67,
  "timestamp": "2026-06-16T14:21:49.178448"
}
FeldTypErforderlichNull?Beschreibung
aircraftarrayJaNieGefundene Luftfahrzeuge (kann leer sein)
total_countintegerJaNieAnzahl der Luftfahrzeuge in dieser Antwort
timestampstring (ISO 8601)NeinNieZeitpunkt, zu dem die Momentaufnahme erstellt wurde

Luftfahrzeug-Eintrag (aircraft[])

FeldTypErforderlichNull?Beschreibung
icao24stringJaNieHexadezimale 24-Bit-ICAO-Kennung
callsignstring | nullNeinJaRufzeichen des Flugs, sofern ausgesendet
latitudenumber | nullNeinJaBreitengrad (WGS-84)
longitudenumber | nullNeinJaLängengrad (WGS-84)
altitudenumber | nullNeinJaBarometrische Höhe in Fuß MSL
ground_speednumber | nullNeinJaGeschwindigkeit über Grund in Knoten
tracknumber | nullNeinJaKurswinkel über Grund in Grad (0–360)
vertical_ratenumber | nullNeinJaVertikalrate in Fuß pro Minute
is_on_groundboolean | nullNeinJatrue, wenn sich das Luftfahrzeug am Boden befindet
last_seenstring (ISO 8601)JaNieZeitpunkt der letzten Beobachtung
first_seenstring (ISO 8601)JaNieErstmals in der aktuellen Tracking-Sitzung erfasst
registrationstring | nullNeinJaKennzeichen, sofern aufgelöst
aircraft_typestring | nullNeinJaTypbeschreibung oder ICAO-Musterbezeichnung
airlinestring | nullNeinJaDurchführende Fluggesellschaft, sofern aufgelöst
photo_urlstring | nullNeinJaURL des Vorschaubilds bei photos=true

Anreicherungsfelder (registration, aircraft_type, airline) können null sein, wenn die Hex-Adresse nicht im Register enthalten ist oder dem Feed die Verknüpfung zum Rufzeichen fehlt.

GET
/adsb/aircraft
x-api-key<token>

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

In: header

Query Parameters

icao24?|

Filter by ICAO 24-bit aircraft identifier (6 hex characters)

callsign?|

Filter by flight callsign (partial match, case-insensitive)

lat?|

Center latitude for radius search

lon?|

Center longitude for radius search

radius?|

Search radius in kilometers

bbox?|

Bounding box as 'lat1,lon1,lat2,lon2' (SW,NE corners)

min_alt?|

Minimum altitude in feet

max_alt?|

Maximum altitude in feet

min_speed?|

Minimum ground speed in knots

max_speed?|

Maximum ground speed in knots

registration?|

Filter by aircraft registration

airline?|

Filter by operating airline

photos?Photos

Fetch aircraft photos from airport-data.com (slower, max 50 aircraft per page)

Defaultfalse
limit?|

Page size for pagination. Omit to return the full matched set.

offset?Offset

Number of aircraft to skip before returning results (for pagination).

Default0
Range0 <= value

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/adsb/aircraft"
{
  "aircraft": [
    {
      "icao24": "40621D",
      "callsign": "BAW123",
      "latitude": 51.4706,
      "longitude": -0.4619,
      "altitude": 35000,
      "ground_speed": 450.5,
      "track": 89.2,
      "vertical_rate": 0,
      "is_on_ground": false,
      "last_seen": "2026-02-11T12:00:00Z",
      "first_seen": "2026-02-11T11:45:00Z",
      "registration": "G-STBC",
      "aircraft_type": "Boeing 777-36N",
      "airline": "British Airways",
      "photo_url": "https://image.airport-data.com/aircraft/001912010.jpg"
    }
  ],
  "total_count": 4691,
  "timestamp": "2026-02-11T12:00:30Z"
}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}

Tracking-Statistiken

Aggregierte Statistiken über die aktuell verfolgte Flotte — Gesamtzahl der Luftfahrzeuge, Anzahl am Boden vs. in der Luft sowie eine Höhenübersicht. Keine Parameter erforderlich. Nützlich für Monitoring-Dashboards.

Anfrage

GEThttps://data.skylinkapi.com/v3.1/adsb/aircraft/statistics

Keine Query- oder Pfadparameter.

Antwort

{
  "total_aircraft": 9889,
  "positioned_aircraft": 9889,
  "on_ground": 412,
  "airborne": 9477,
  "altitude_stats": {
    "min_altitude": 100.0,
    "max_altitude": 56600.0,
    "avg_altitude": 21338.04
  },
  "timestamp": "2026-06-16T14:21:50.116343"
}
FeldTypErforderlichNull?Beschreibung
total_aircraftintegerJaNieGesamtzahl der verfolgten Luftfahrzeuge
positioned_aircraftintegerJaNieLuftfahrzeuge mit bekannter Position
on_groundintegerJaNieAls am Boden gekennzeichnete Luftfahrzeuge
airborneintegerJaNieAls in der Luft gekennzeichnete Luftfahrzeuge
altitude_statsobjectJaNieHöhenübersicht der Flotte
altitude_stats.min_altitudenumberJaNieNiedrigste gemeldete Höhe (Fuß)
altitude_stats.max_altitudenumberJaNieHöchste gemeldete Höhe (Fuß)
altitude_stats.avg_altitudenumberJaNieDurchschnittliche Höhe über die Flotte (Fuß)
timestampstring (ISO 8601)JaNieZeitpunkt der Momentaufnahme
GET
/adsb/aircraft/statistics
x-api-key<token>

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

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/adsb/aircraft/statistics"
{}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}

Dienststatus

Liefert den Verbindungsstatus von ADS-B und die Anzahl aktiver Luftfahrzeuge. Für die Überwachung der Verfügbarkeit und für Vorabprüfungen, bevor Sie den Live-Feed abfragen.

Anfrage

GEThttps://data.skylinkapi.com/v3.1/adsb/health

Keine Query- oder Pfadparameter.

Antwort

{
  "status": "healthy",
  "connected": true,
  "active_aircraft_count": 9889,
  "connection_uptime": null,
  "last_message_received": "2026-06-16T14:21:46.212802"
}
FeldTypErforderlichNull?Beschreibung
statusstringJaNieBezeichnung des Dienststatus, z. B. healthy
connectedbooleanJaNieOb die Verbindung zum ADS-B-Hub aktiv ist
active_aircraft_countintegerJaNieAktuell verfolgte Luftfahrzeuge
connection_uptimenumber | nullNeinJaVerbindungsdauer in Sekunden, sofern verfügbar
last_message_receivedstring (ISO 8601) | nullNeinJaZeitstempel der letzten Nachricht aus dem Feed
GET
/adsb/health
x-api-key<token>

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

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/adsb/health"
{
  "status": "string",
  "connected": true,
  "active_aircraft_count": 0,
  "connection_uptime": 0,
  "last_message_received": "2019-08-24T14:15:22Z"
}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}
{
  "error": "string",
  "detail": "string",
  "timestamp": "2019-08-24T14:15:22Z"
}

Client-Typen

"""ADS-B live aircraft models for GET /adsb/aircraft."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass AdsbAircraft:    icao24: str    callsign: str | None    latitude: float | None    longitude: float | None    altitude: float | None    ground_speed: float | None    track: float | None    vertical_rate: float | None    is_on_ground: bool | None    last_seen: str    first_seen: str    registration: str | None    aircraft_type: str | None    airline: str | None    photo_url: str | None@dataclassclass AdsbAircraftListResponse:    aircraft: list[AdsbAircraft]    total_count: int    timestamp: str | None@dataclassclass MapMarker:    """Compact model for map overlays."""    icao24: str    label: str    lat: float    lon: float    altitude_ft: float | None    on_ground: bool

Integration

Fragen Sie Live-Flugzeuge in der Nähe eines Flughafens für eine Verkehrsüberlagerung auf einer Karte ab.

Das folgende Beispiel führt eine Umkreissuche mit Seitenlimit durch, verwendet kurze Timeouts (10 s / 15 s) und bildet die Ergebnisse auf Kartenmarkierungen ab. Cachen Sie Live-Positionen nicht — fragen Sie je nach Kontingent und UX-Anforderungen alle 5–15 Sekunden ab.

import osfrom dataclasses import dataclassimport requestsHEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}BASE = "https://data.skylinkapi.com/v3.1"@dataclassclass MapMarker:    icao24: str    label: str    lat: float    lon: float    altitude_ft: float | None    on_ground: booldef fetch_aircraft_near(    *,    lat: float,    lon: float,    radius_km: float = 50,    limit: int = 100,) -> dict:    """Fetch live ADS-B aircraft within a radius. Do not cache - data is ephemeral."""    try:        r = requests.get(            f"{BASE}/adsb/aircraft",            headers=HEADERS,            params={                "lat": lat,                "lon": lon,                "radius": radius_km,                "limit": limit,                "photos": False,            },            timeout=(10, 15),        )    except requests.Timeout as exc:        raise RuntimeError("SkyLink timeout fetching ADS-B aircraft") from exc    r.raise_for_status()    return r.json()def to_map_markers(payload: dict) -> list[MapMarker]:    markers: list[MapMarker] = []    for ac in payload.get("aircraft", []):        lat = ac.get("latitude")        lon = ac.get("longitude")        if lat is None or lon is None:            continue        label = ac.get("callsign") or ac.get("registration") or ac["icao24"]        markers.append(            MapMarker(                icao24=ac["icao24"],                label=label,                lat=float(lat),                lon=float(lon),                altitude_ft=ac.get("altitude"),                on_ground=bool(ac.get("is_on_ground")),            )        )    return markersif __name__ == "__main__":    import json    payload = fetch_aircraft_near(lat=40.6413, lon=-73.7781, radius_km=80, limit=5)    print(json.dumps(payload, indent=2, default=str))

Hinweise zur Implementierung

Abfrageintervall. ADS-B-Daten werden alle paar Sekunden aktualisiert. Häufigere Abfragen als etwa alle 5 s verbessern die Aktualität kaum und verbrauchen das Kontingent schnell.

Eingegrenzte Abfragen. Übergeben Sie für Kartenansichten immer lat/lon/radius oder bbox — ungefilterte globale Abfragen können sehr große Payloads liefern.

Paginierung. Verwenden Sie limit + offset beim Rendern von Tabellen. total_count gibt die Größe der aktuellen Seite wieder, nicht die Gesamtzahl der globalen Flotte.

Lücken bei der Anreicherung. registration und aircraft_type können bei militärischen, gesperrten oder nicht registrierten Hex-Codes null sein. Zeigen Sie ersatzweise Rufzeichen und ICAO24 an.

Kette Live → Leistungsdaten. aircraft_type im Live-Feed ist oft eine Marketingbezeichnung (z. B. "Boeing B738"), keine ICAO-Musterbezeichnung. Um Flugzeugleistungsdaten abzurufen, rufen Sie die Luftfahrzeugsuche mit icao24 auf und verwenden aircraft.icao_type aus der Antwort des Registers.

Normalisierung von ICAO24. Akzeptieren Sie sechsstellige Hex-Codes aus ADS-B-Feeds; Groß- und Kleinschreibung sind gleichwertig. Füllen Sie kurze Adressen mit führenden Nullen auf, wenn Ihre Quelle sie weglässt.

Fehlerantworten

Zu plattformweiten Fehlern (Authentifizierung, Rate Limits, Serverfehler) siehe Fehlerbehandlung. Endpointspezifisches Verhalten:

404 — ICAO24-Filter ohne Treffer (Live-Flugzeuge)

Wenn nach icao24 gefiltert wird und kein Luftfahrzeug passt:

{
  "error": "Aircraft not found",
  "detail": "No aircraft found with ICAO24 000000",
  "timestamp": "2026-06-16T14:00:00Z"
}

Gilt nur, wenn icao24 als Filter angegeben ist — nicht bei leeren Umkreissuchen.

422 — ungültige Filterkombination

{
  "detail": [
    {
      "type": "greater_than",
      "loc": ["query", "radius"],
      "msg": "Input should be greater than 0"
    }
  ]
}

Tritt auf, wenn numerische Filter außerhalb des zulässigen Bereichs liegen (zum Beispiel radius ≤ 0 oder eine Höhe außerhalb von 0–60000 ft) oder wenn Kreis- und Bbox-Parameter gemischt werden.


Siehe auch: Luftfahrzeugsuche · Historisches ADS-B · Flugstatus