Save up to 17% with yearly billing

See pricing

Flugtickets

Suchen Sie verfügbare Ticketoptionen für ein Städtepaar. Die Ergebnisse sind nach Preis sortiert (günstigste zuerst) und werden 1 Stunde lang gecacht. Preise werden in USD zurückgegeben, mit Metadaten zur Originalwährung, wenn die angebotene Währung abweicht.

Jeder Reiseverlauf (Itinerary) ist eine vollständige Reiseoption vom Abflugort zum Zielort, gegebenenfalls mit Umsteigeverbindungen. Die Ergebnisse enthalten pro Teilstrecke Fluggesellschaft und Flugnummer, Abflug- und Ankunftsflughäfen mit Ortszeiten, Dauer der Teilstrecke, Anzahl der Stopps sowie die Umsteigezeiten (Layover) an den Umsteigeflughäfen.

Wichtig: Dieser Endpoint erwartet dreistellige IATA-Flughafencodes (LHR, JFK, CDG) — nicht ICAO. Ermitteln Sie die Codes zuerst über die Flughafensuche.

Anfrage

Voraussetzungen

Auth
x-api-key bei jeder Anfrage (Direktabonnement). Mehr erfahren →
GEThttps://data.skylinkapi.com/v3.1/tickets/search
ParameterTypErforderlichStandardBeschreibung
originstringJa-IATA-Code des Abflughafens, z. B. LHR
destinationstringJa-IATA-Code des Zielflughafens, z. B. JFK
datestring (date)Nein7 Tage im VorausReisedatum YYYY-MM-DD
passengersintegerNein1Anzahl der Passagiere (1–9)

Antwort

{
  "origin": "LHR",
  "destination": "JFK",
  "date": "2026-05-01",
  "passengers": 1,
  "count": 2,
  "flights": [
    {
      "price_usd": 542.0,
      "original_price": 498.0,
      "original_currency": "EUR",
      "total_duration_min": 465,
      "stops": 0,
      "legs": [
        {
          "flight_number": "BA117",
          "airline": "British Airways",
          "airline_code": "BA",
          "departure_airport": "LHR",
          "departure_airport_name": "London Heathrow Airport",
          "arrival_airport": "JFK",
          "arrival_airport_name": "John F. Kennedy International Airport",
          "departure_time": "09:00",
          "arrival_time": "11:45",
          "departure_datetime": "2026-05-01T09:00:00",
          "arrival_datetime": "2026-05-01T11:45:00",
          "duration_min": 465
        }
      ]
    },
    {
      "price_usd": 398.0,
      "original_price": 367.0,
      "original_currency": "EUR",
      "total_duration_min": 680,
      "stops": 1,
      "legs": [
        {
          "flight_number": "IB3163",
          "airline": "Iberia",
          "airline_code": "IB",
          "departure_airport": "LHR",
          "departure_airport_name": "London Heathrow Airport",
          "arrival_airport": "MAD",
          "arrival_airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "departure_time": "07:15",
          "arrival_time": "10:30",
          "departure_datetime": "2026-05-01T07:15:00",
          "arrival_datetime": "2026-05-01T10:30:00",
          "duration_min": 135
        },
        {
          "flight_number": "IB6251",
          "airline": "Iberia",
          "airline_code": "IB",
          "departure_airport": "MAD",
          "departure_airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "arrival_airport": "JFK",
          "arrival_airport_name": "John F. Kennedy International Airport",
          "departure_time": "13:05",
          "arrival_time": "16:15",
          "departure_datetime": "2026-05-01T13:05:00",
          "arrival_datetime": "2026-05-01T16:15:00",
          "duration_min": 490
        }
      ],
      "layovers": [
        {
          "airport": "MAD",
          "airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "duration_min": 155
        }
      ]
    }
  ]
}

Felder der obersten Ebene

FeldTypErforderlichBeschreibung
originstringJaIATA-Code des angefragten Abflugorts
destinationstringJaIATA-Code des angefragten Zielorts
datestringJaFür die Suche verwendetes Reisedatum
passengersintegerJaAnzahl der Passagiere
countintegerJaAnzahl der Reiseverläufe in flights
flightsarrayJaNach Preis sortierte Optionen (kann leer sein, wenn nichts verfügbar ist)

Wichtig: count: 0 mit flights: [] ist eine gültige Antwort — zeigen Sie einen Zustand „keine Verfügbarkeit“ an, statt dies als Fehler zu behandeln.

Reiseverlauf (flights[])

FeldTypErforderlichNull?Beschreibung
price_usdnumberJaNieGesamtpreis in USD
original_pricenumberJaNieUrsprüngliches Angebot vor der Umrechnung in USD
original_currencystringJaNieISO-Währung von original_price, z. B. EUR
total_duration_minintegerJaNieReisedauer von Tür zu Tür in Minuten, einschließlich Umsteigezeiten
stopsintegerJaNieAnzahl der Umstiege (0 = Nonstop)
legsarrayJaNieDurchgeführte Flugsegmente in Reihenfolge
layoversarrayNeinJaVorhanden, wenn stops > 0

Teilstrecke (legs[])

FeldTypErforderlichBeschreibung
flight_numberstringJaVermarktende Flugnummer (Marketing-Flugnummer)
airlinestringJaAnzeigename der Fluggesellschaft
airline_codestringJaIATA-Code der Fluggesellschaft
departure_airportstringJaIATA-Code des Abflughafens
departure_airport_namestringJaName des Abflughafens
arrival_airportstringJaIATA-Code des Ankunftsflughafens
arrival_airport_namestringJaName des Ankunftsflughafens
departure_timestringJaLokale Abflugzeit HH:MM
arrival_timestringJaLokale Ankunftszeit HH:MM
departure_datetimestringJaLokales Abflugdatum mit Uhrzeit (ISO)
arrival_datetimestringJaLokales Ankunftsdatum mit Uhrzeit (ISO)
duration_minintegerJaBlockzeit der Teilstrecke in Minuten

Umstieg (layovers[])

FeldTypErforderlichBeschreibung
airportstringJaIATA-Code des Umsteigeflughafens
airport_namestringJaName des Umsteigeflughafens
duration_minintegerJaBodenzeit vor der nächsten Teilstrecke

Client-Typen

"""Flight ticket search models for /tickets/search."""from __future__ import annotationsfrom dataclasses import dataclass@dataclassclass TicketLeg:    flight_number: str    airline: str    airline_code: str    departure_airport: str    departure_airport_name: str    arrival_airport: str    arrival_airport_name: str    departure_time: str    arrival_time: str    departure_datetime: str    arrival_datetime: str    duration_min: int@dataclassclass TicketItinerary:    price_usd: float    original_price: float    original_currency: str    total_duration_min: int    stops: int    legs: list[TicketLeg]@dataclassclass TicketSearchResponse:    origin: str    destination: str    date: str    passengers: int    count: int    flights: list[TicketItinerary]

Integration

UIs für die Ticketsuche entprellen die Flughafenauswahl typischerweise (Debounce) und cachen Antworten pro Tupel (origin, destination, date, passengers) für bis zu eine Stunde. Das folgende Beispiel ruft Ergebnisse ab, bildet die günstigste Option auf ein Kartenmodell ab und behandelt leere flights-Arrays sauber.

import osfrom dataclasses import dataclassimport requestsBASE = "https://data.skylinkapi.com/v3.1"HEADERS = {    "x-api-key": os.getenv("SKYLINK_API_KEY", "YOUR_API_KEY")}@dataclassclass TicketOption:    price_usd: float    stops: int    total_duration_min: int    first_flight: str | Nonedef search_tickets(    *,    origin: str,    destination: str,    date: str | None = None,    passengers: int = 1,) -> dict:    """Search available flight tickets for a city pair."""    params: dict[str, str | int] = {        "origin": origin.upper(),        "destination": destination.upper(),        "passengers": passengers,    }    if date:        params["date"] = date    r = requests.get(f"{BASE}/tickets/search", headers=HEADERS, params=params, timeout=(10, 30))    r.raise_for_status()    return r.json()def cheapest_ticket(origin: str, destination: str, *, date: str | None = None) -> TicketOption | None:    data = search_tickets(origin=origin, destination=destination, date=date)    flights = data.get("flights") or []    if not flights:        return None    best = flights[0]    legs = best.get("legs") or []    first = legs[0]["flight_number"] if legs else None    return TicketOption(        price_usd=float(best["price_usd"]),        stops=int(best["stops"]),        total_duration_min=int(best["total_duration_min"]),        first_flight=first,    )if __name__ == "__main__":    import json    data = search_tickets(origin="JFK", destination="LAX")    print(json.dumps({"count": data.get("count"), "origin": data.get("origin")}, indent=2, default=str))

Hinweise zur Implementierung

Wichtig: Angebote sind unverbindliche Momentaufnahmen des Marktes, kein Live-Bestand der Fluggesellschaften. Weisen Sie in passagierorientierten UIs darauf hin, dass sich Preise bei der Buchung ändern können.

Für den Echtzeitstatus eines gebuchten Flugs verwenden Sie Flugstatus.

Fehlerantworten

Informationen zu plattformweiten Fehlern finden Sie unter Fehlerbehandlung. Endpoint-spezifisches Verhalten:

422 — ungültige Parameter

Wird zurückgegeben, wenn origin/destination fehlen oder die Validierung nicht bestehen.

Integrationsleitfäden

LeitfadenInhalt
TicketsucheGünstigste vs. schnellste Option, Reiseverläufe, mehrere Passagiere
FehlerbehandlungLeere Ergebnisse, IATA-Codes, unverbindliche Preise
Caching & MonitoringCache-Schlüssel für 1 h und Debounce
GET
/tickets/search
x-api-key<token>

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

In: header

Query Parameters

origin*Origin

Origin airport IATA code (e.g. 'LHR')

destination*Destination

Destination airport IATA code (e.g. 'JFK')

date?|

Travel date (YYYY-MM-DD). Defaults to 7 days from today.

passengers?Passengers

Number of passengers (default 1, max 9)

Default1
Range1 <= value <= 9

Response Body

application/json

application/json

curl -X GET "https://data.skylinkapi.com/v3.1/tickets/search?origin=string&destination=string"
{
  "origin": "LHR",
  "destination": "JFK",
  "date": "2026-05-01",
  "passengers": 1,
  "count": 3,
  "flights": [
    {
      "price_usd": 542,
      "original_price": 498,
      "original_currency": "EUR",
      "total_duration_min": 465,
      "stops": 0,
      "legs": [
        {
          "flight_number": "BA117",
          "airline": "British Airways",
          "airline_code": "BA",
          "departure_airport": "LHR",
          "departure_airport_name": "London Heathrow Airport",
          "arrival_airport": "JFK",
          "arrival_airport_name": "John F Kennedy International Airport",
          "departure_time": "09:00",
          "arrival_time": "11:45",
          "departure_datetime": "2026-05-01T09:00:00",
          "arrival_datetime": "2026-05-01T11:45:00",
          "duration_min": 465
        }
      ]
    },
    {
      "price_usd": 398,
      "original_price": 367,
      "original_currency": "EUR",
      "total_duration_min": 680,
      "stops": 1,
      "legs": [
        {
          "flight_number": "IB3163",
          "airline": "Iberia",
          "airline_code": "IB",
          "departure_airport": "LHR",
          "departure_airport_name": "London Heathrow Airport",
          "arrival_airport": "MAD",
          "arrival_airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "departure_time": "07:15",
          "arrival_time": "10:30",
          "departure_datetime": "2026-05-01T07:15:00",
          "arrival_datetime": "2026-05-01T10:30:00",
          "duration_min": 135
        },
        {
          "flight_number": "IB6251",
          "airline": "Iberia",
          "airline_code": "IB",
          "departure_airport": "MAD",
          "departure_airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "arrival_airport": "JFK",
          "arrival_airport_name": "John F Kennedy International Airport",
          "departure_time": "13:05",
          "arrival_time": "16:15",
          "departure_datetime": "2026-05-01T13:05:00",
          "arrival_datetime": "2026-05-01T16:15:00",
          "duration_min": 490
        }
      ],
      "layovers": [
        {
          "airport": "MAD",
          "airport_name": "Adolfo Suárez Madrid–Barajas Airport",
          "duration_min": 155
        }
      ]
    }
  ]
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}