# Flughafenverkehr

Historische Ankünfte und Abflüge an Flughäfen aus dem ADS-B-Archiv — Filterung nach Richtung über ein konfigurierbares Zeitfenster.



Rekonstruieren Sie historische Ankünfte und Abflüge an einem Flughafen für ein bestimmtes Zeitfenster. Verwenden Sie diesen Endpoint für Betriebsanalysen, Kapazitätsplanung und Dashboards zur Leistung von Fluggesellschaften — nicht für Echtzeit-Flugpläne (siehe [Flugpläne](/docs/v31/schedules)).

Tarifstufen: [Hub für historische ADS-B-Daten](/docs/v31/historical-adsb).

<DocRequirements>
  <DocRequirementAuth />

  <DocRequirement label="Tarif" href="/docs/rate-limits#historical-adsb-path-tiers">
    <strong>Pro</strong>, <strong>Ultra</strong> oder <strong>Mega</strong> — verwenden Sie das Pfadpräfix, das zum benötigten Zeitfenster passt.
  </DocRequirement>
</DocRequirements>

## Anfrage [#request]

<DocApiPath method="GET" path="/ultra/history/airport/{icao}/traffic" />

| Parameter   | Typ     | Erforderlich | Standard | Beschreibung                                                          |
| ----------- | ------- | ------------ | -------- | --------------------------------------------------------------------- |
| `icao`      | string  | Ja           | -        | ICAO-Code des Flughafens (4 Zeichen)                                  |
| `start`     | string  | Nein         | vor 24 h | Beginn des Zeitfensters — ISO 8601                                    |
| `end`       | string  | Nein         | jetzt    | Ende des Zeitfensters — ISO 8601                                      |
| `direction` | string  | Nein         | `both`   | `dep`, `arr` oder `both`                                              |
| `limit`     | integer | Nein         | `100`    | Max. Anzahl zurückgegebener Flüge (max. **1.000** auf dem ULTRA-Pfad) |

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

<DocDetails title="MEGA-Pfad (`/mega/history/...`)">
  <DocApiPath method="GET" path="/mega/history/airport/{icao}/traffic" />

  | Parameter   | Typ     | Erforderlich | Standard | Beschreibung                                                                    |
  | ----------- | ------- | ------------ | -------- | ------------------------------------------------------------------------------- |
  | `icao`      | string  | Ja           | -        | ICAO-Code des Flughafens                                                        |
  | `start`     | string  | Nein         | vor 24 h | Beginn des Zeitfensters — ISO 8601 (max. **365 Tage** Spanne auf dem MEGA-Pfad) |
  | `end`       | string  | Nein         | jetzt    | Ende des Zeitfensters                                                           |
  | `direction` | string  | Nein         | `both`   | `dep`, `arr` oder `both`                                                        |
  | `limit`     | integer | Nein         | `200`    | Max. Anzahl zurückgegebener Flüge (max. **2.000** auf dem MEGA-Pfad)            |

  Erfordert den Tarif **Ultra** oder **Mega**. Gleiche Antwortstruktur wie bei ULTRA.
</DocDetails>

## Antwort [#response]

```json
{
  "icao": "EGLL",
  "direction": "both",
  "count": 1,
  "flights": [
    {
      "flight_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "icao24": "4006f2",
      "callsign": "BAW117",
      "flight_number": "BAW117",
      "aircraft_type_icao": "B77W",
      "airline_name": "British Airways",
      "departure_airport_icao": "EGLL",
      "departure_airport_iata": "LHR",
      "arrival_airport_icao": "KJFK",
      "arrival_airport_iata": "JFK",
      "flight_state": "ARCHIVED",
      "takeoff_time": "2026-05-12T09:10:00Z",
      "landing_time": "2026-05-12T09:28:00Z",
      "flight_duration_min": 18.0,
      "distance_nm": 205.7
    }
  ]
}
```

| Feld        | Typ     | Erforderlich | Beschreibung                                   |
| ----------- | ------- | ------------ | ---------------------------------------------- |
| `icao`      | string  | **Ja**       | ICAO-Code des abgefragten Flughafens           |
| `direction` | string  | **Ja**       | Angewendeter Filter — `dep`, `arr` oder `both` |
| `count`     | integer | **Ja**       | Anzahl der Elemente in `flights`               |
| `flights`   | array   | **Ja**       | Passende Ankünfte/Abflüge                      |

<a id="traffic-flight-flights" />

### Verkehrsflug (`flights[]`) [#traffic-flight-flights]

Jedes Element verwendet dieselben Flughafen- und Zeitfelder wie die [Flugzusammenfassung](/docs/v31/historical-adsb-flight-search#flight-summary-flights).

| Feld                     | Typ            | Erforderlich | Null?  | Beschreibung                               |
| ------------------------ | -------------- | ------------ | ------ | ------------------------------------------ |
| `flight_id`              | string         | **Ja**       | Nie    | UUID für Detail- und Track-Abfragen        |
| `icao24`                 | string \| null | Nein         | **Ja** | Hex-Code des Luftfahrzeugs                 |
| `callsign`               | string \| null | Nein         | **Ja** | ADS-B-Rufzeichen                           |
| `flight_number`          | string \| null | Nein         | **Ja** | Normalisierte Flugnummer, sofern ermittelt |
| `aircraft_type_icao`     | string \| null | Nein         | **Ja** | ICAO-Typcode                               |
| `airline_name`           | string \| null | Nein         | **Ja** | Anzeigename der Fluggesellschaft           |
| `departure_airport_icao` | string \| null | Nein         | **Ja** | ICAO-Code des Abflughafens                 |
| `departure_airport_iata` | string \| null | Nein         | **Ja** | IATA-Code des Abflughafens                 |
| `arrival_airport_icao`   | string \| null | Nein         | **Ja** | ICAO-Code des Zielflughafens               |
| `arrival_airport_iata`   | string \| null | Nein         | **Ja** | IATA-Code des Zielflughafens               |
| `flight_state`           | string \| null | Nein         | **Ja** | Archivstatus (z. B. `ARCHIVED`)            |
| `takeoff_time`           | string \| null | Nein         | **Ja** | Startzeit (ISO 8601)                       |
| `landing_time`           | string \| null | Nein         | **Ja** | Landezeit (ISO 8601)                       |
| `flight_duration_min`    | number \| null | Nein         | **Ja** | Dauer in Minuten                           |
| `distance_nm`            | number \| null | Nein         | **Ja** | Entfernung in nautischen Meilen            |

## Client-Typen [#client-types]

<DocClientTypes id="v31/historical-adsb/history-types" />

## Integration [#integration]

Rekonstruieren Sie Ankünfte und Abflüge an einem Drehkreuz-Flughafen für ein gewähltes Zeitfenster. Das folgende Beispiel ruft 48 Stunden Verkehr in beide Richtungen in EGLL ab, filtert nur die Abflüge heraus und gruppiert sie nach Fluggesellschaft. Für rollierende 90-Tage-Fenster, die `direction: arr` und `limit: 2000` pro Batch benötigen, erweitern Sie es auf den MEGA-Pfad.

<DocExample id="v31/historical-adsb/airport-traffic-fetch" />

### Hinweise zur Implementierung [#implementation-notes]

**Wichtig:** Bei `direction: both` leiten Sie die Bewegungsrichtung ab, indem Sie `departure_airport_icao` und `arrival_airport_icao` mit dem abgefragten `icao` vergleichen — entspricht `departure_airport_icao` dem abgefragten Flughafen, handelt es sich um einen Abflug; entspricht `arrival_airport_icao` ihm, handelt es sich um eine Ankunft. Verlassen Sie sich nicht auf die Reihenfolge der Liste.

**Filterung nach Richtung.** Fragen Sie `dep` oder `arr` statt `both` an, wenn Sie nur eine Bewegungsart benötigen — die Antwort ist kleiner und leichter zu paginieren.

**Paginierung.** Wenn `count` dem angefragten `limit` entspricht, verkleinern Sie das `start`/`end`-Fenster oder erhöhen Sie `limit` (bis 1.000 bei ULTRA, 2.000 bei MEGA) und führen Sie die Ergebnisse über sich überlappende Fenster zusammen.

## Fehlerantworten [#error-responses]

`401`/`403` durch Tarifbeschränkungen: [Hub für historische ADS-B-Daten](/docs/v31/historical-adsb#error-responses). Endpoint-spezifisch:

### 422 — Zeitfenster zu groß [#422--window-too-wide]

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/...`:

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

<APIPage document="&#x22;https://api.skylinkapi.com/v3.1/openapi.json&#x22;" operations="[{&#x22;path&#x22;:&#x22;/ultra/history/airport/{icao}/traffic&#x22;,&#x22;method&#x22;:&#x22;get&#x22;},{&#x22;path&#x22;:&#x22;/mega/history/airport/{icao}/traffic&#x22;,&#x22;method&#x22;:&#x22;get&#x22;}]" />
