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
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →| Endpoint | Einsatzzweck |
|---|---|
GET /adsb/aircraft | Live-Positionen — Kartenkacheln, Verkehrsanzeigen, gefilterte Feeds |
GET /adsb/aircraft/statistics | Flottenweite Kennzahlen — in der Luft vs. am Boden, Höhenstatistiken |
GET /adsb/health | Feed-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
https://data.skylinkapi.com/v3.1/adsb/aircraft| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
icao24 | string | Nein | - | Filter nach sechsstelliger hexadezimaler Transponderadresse (Klein- oder Großbuchstaben; führende Nullen bleiben erhalten, z. B. 0A0022) |
callsign | string | Nein | - | Teilübereinstimmung des Rufzeichens (ohne Beachtung der Groß-/Kleinschreibung), z. B. passt DAH zu DAH2055 |
lat | number | Nein | - | Breitengrad des Mittelpunkts für die Umkreissuche (-90 bis 90) |
lon | number | Nein | - | Längengrad des Mittelpunkts für die Umkreissuche (-180 bis 180) |
radius | number | Nein | - | Suchradius in Kilometern (max. 1000) |
bbox | string | Nein | - | Begrenzungsrahmen (Bounding Box) lat1,lon1,lat2,lon2 — zuerst die SW-Ecke, dann NO. Beispiel: 51.2,-0.8,51.6,-0.2 |
min_alt | number | Nein | - | Mindesthöhe in Fuß |
max_alt | number | Nein | - | Maximalhöhe in Fuß |
min_speed | number | Nein | - | Mindestgeschwindigkeit über Grund in Knoten |
max_speed | number | Nein | - | Maximalgeschwindigkeit über Grund in Knoten |
registration | string | Nein | - | Filter nach Kennzeichen |
airline | string | Nein | - | Filter nach Name der durchführenden Fluggesellschaft |
photos | boolean | Nein | false | Vorschaufotos abrufen (langsamer; max. 50 Luftfahrzeuge pro Seite) |
limit | integer | Nein | vollständige Menge | Seitengröße — weglassen, um alle Treffer zu erhalten |
offset | integer | Nein | 0 | Anzahl zu überspringender Einträge für die Paginierung |
Regeln für die Kombination von Filtern — die häufigste Ursache für 422-Fehler:
| Suchmodus | Erforderliche Parameter | Hinweise |
|---|---|---|
| Kreis | lat + lon + radius | Alle drei zusammen |
| Rechteck | bbox | Zuerst 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"
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
aircraft | array | Ja | Nie | Gefundene Luftfahrzeuge (kann leer sein) |
total_count | integer | Ja | Nie | Anzahl der Luftfahrzeuge in dieser Antwort |
timestamp | string (ISO 8601) | Nein | Nie | Zeitpunkt, zu dem die Momentaufnahme erstellt wurde |
Luftfahrzeug-Eintrag (aircraft[])
| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
icao24 | string | Ja | Nie | Hexadezimale 24-Bit-ICAO-Kennung |
callsign | string | null | Nein | Ja | Rufzeichen des Flugs, sofern ausgesendet |
latitude | number | null | Nein | Ja | Breitengrad (WGS-84) |
longitude | number | null | Nein | Ja | Längengrad (WGS-84) |
altitude | number | null | Nein | Ja | Barometrische Höhe in Fuß MSL |
ground_speed | number | null | Nein | Ja | Geschwindigkeit über Grund in Knoten |
track | number | null | Nein | Ja | Kurswinkel über Grund in Grad (0–360) |
vertical_rate | number | null | Nein | Ja | Vertikalrate in Fuß pro Minute |
is_on_ground | boolean | null | Nein | Ja | true, wenn sich das Luftfahrzeug am Boden befindet |
last_seen | string (ISO 8601) | Ja | Nie | Zeitpunkt der letzten Beobachtung |
first_seen | string (ISO 8601) | Ja | Nie | Erstmals in der aktuellen Tracking-Sitzung erfasst |
registration | string | null | Nein | Ja | Kennzeichen, sofern aufgelöst |
aircraft_type | string | null | Nein | Ja | Typbeschreibung oder ICAO-Musterbezeichnung |
airline | string | null | Nein | Ja | Durchführende Fluggesellschaft, sofern aufgelöst |
photo_url | string | null | Nein | Ja | URL 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.
Your SkyLink licence key, for keys bought direct from skylinkapi.com.
In: header
Query Parameters
Filter by ICAO 24-bit aircraft identifier (6 hex characters)
Filter by flight callsign (partial match, case-insensitive)
Center latitude for radius search
Center longitude for radius search
Search radius in kilometers
Bounding box as 'lat1,lon1,lat2,lon2' (SW,NE corners)
Minimum altitude in feet
Maximum altitude in feet
Minimum ground speed in knots
Maximum ground speed in knots
Filter by aircraft registration
Filter by operating airline
Fetch aircraft photos from airport-data.com (slower, max 50 aircraft per page)
falsePage size for pagination. Omit to return the full matched set.
Number of aircraft to skip before returning results (for pagination).
00 <= valueResponse 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
https://data.skylinkapi.com/v3.1/adsb/aircraft/statisticsKeine 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"
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
total_aircraft | integer | Ja | Nie | Gesamtzahl der verfolgten Luftfahrzeuge |
positioned_aircraft | integer | Ja | Nie | Luftfahrzeuge mit bekannter Position |
on_ground | integer | Ja | Nie | Als am Boden gekennzeichnete Luftfahrzeuge |
airborne | integer | Ja | Nie | Als in der Luft gekennzeichnete Luftfahrzeuge |
altitude_stats | object | Ja | Nie | Höhenübersicht der Flotte |
altitude_stats.min_altitude | number | Ja | Nie | Niedrigste gemeldete Höhe (Fuß) |
altitude_stats.max_altitude | number | Ja | Nie | Höchste gemeldete Höhe (Fuß) |
altitude_stats.avg_altitude | number | Ja | Nie | Durchschnittliche Höhe über die Flotte (Fuß) |
timestamp | string (ISO 8601) | Ja | Nie | Zeitpunkt der Momentaufnahme |
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
https://data.skylinkapi.com/v3.1/adsb/healthKeine Query- oder Pfadparameter.
Antwort
{
"status": "healthy",
"connected": true,
"active_aircraft_count": 9889,
"connection_uptime": null,
"last_message_received": "2026-06-16T14:21:46.212802"
}| Feld | Typ | Erforderlich | Null? | Beschreibung |
|---|---|---|---|---|
status | string | Ja | Nie | Bezeichnung des Dienststatus, z. B. healthy |
connected | boolean | Ja | Nie | Ob die Verbindung zum ADS-B-Hub aktiv ist |
active_aircraft_count | integer | Ja | Nie | Aktuell verfolgte Luftfahrzeuge |
connection_uptime | number | null | Nein | Ja | Verbindungsdauer in Sekunden, sofern verfügbar |
last_message_received | string (ISO 8601) | null | Nein | Ja | Zeitstempel der letzten Nachricht aus dem Feed |
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: boolIntegration
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
Flugzeugleistung
Leistungsprofile für Flugzeugtypen (ICAO Doc 8643) – Reisegeschwindigkeit, Gipfelhöhe, Reichweite, Wirbelschleppenkategorie, Abmessungen, MTOW, Sitzplätze.
Historische ADS-B-Daten
Archivierte ADS-B-Flüge suchen, Tracks wiedergeben, Verlauf nach Hex-Code oder Kennzeichen abrufen und Flughafenverkehr über 90–365 Tage rekonstruieren.