Alle Beiträge

Wie Travel-Startups Flugpreise verschiedener Airlines aggregieren

Preissuchmaschinen müssen Preise von Dutzenden geschützten Airline-Websites gleichzeitig erfassen. So sieht die Infrastruktur dahinter tatsächlich aus.

Der Vergleich von Reisepreisen ist einer der technisch anspruchsvollsten Anwendungsfälle im Bereich Web-Data-Collection. Airlines und Online-Reisebüros (OTAs) zeigen unterschiedliche Preise basierend auf Standort, Browser, Tageszeit und Request-Historie an. Einen zuverlässigen Flugpreis-Aggregator zu bauen bedeutet, all diese Herausforderungen gleichzeitig zu lösen.

Die technische Herausforderung

Die Preisseiten von Airlines gehören zu den am stärksten geschützten im Web:

  • Aggressive Anti-Bot-Systeme. Die meisten großen Airlines nutzen Akamai, DataDome oder PerimeterX.
  • Geografische Preisunterschiede. Ein Flug von London nach New York zeigt unterschiedliche Preise, je nachdem, ob du aus Großbritannien, den USA oder Indien suchst.
  • Dynamisches Rendering. Preisergebnisse laden asynchron nach mehreren API-Aufrufen innerhalb der Seite.
  • Session-Tracking. Preisänderungen zwischen Seitenaufrufen (das berüchtigte „der von Ihnen gesuchte Tarif ist nicht mehr verfügbar“).

Wie ein Flugpreis-Aggregator funktioniert

Schritt 1: Search-Request

Der Aggregator empfängt eine Suchanfrage (Abflugort, Zielort, Reisedaten, Passagiere) und verteilt diese an mehrere Airline- und OTA-Ziele.

Schritt 2: Parallele Datenerfassung

Jedes Ziel erfordert einen eigenen Ansatz:

tasks = [
    # Static API endpoint, fast single request
    {"url": "https://api.airline-a.com/fares?from=LHR&to=JFK&date=2026-04-15", "type": "single"},
    # JavaScript-heavy SPA, needs browser rendering
    {"url": "https://airline-b.com/search?o=LHR&d=JFK&dt=20260415", "type": "browser", 
     "options": {"waitFor": ".fare-results"}},
    # Geo-restricted pricing, needs US proxy
    {"url": "https://ota-site.com/flights/LHR-JFK", "type": "proxy",
     "options": {"proxyCountry": "US"}},
]

Schritt 3: Parsen und Normalisieren

Jede Website liefert Daten in einem anderen Format. Der Aggregator normalisiert alles in ein gemeinsames Schema: Airline, Flugnummer, Abflug, Ankunft, Preis, Währung, Beförderungsklasse.

Schritt 4: Deduplizieren und Ranken

Derselbe Flug erscheint auf mehreren Websites zu unterschiedlichen Preisen. Der Aggregator dedupliziert nach Flugnummer und zeigt die günstigste Option für jede Route an.

Warum Data-Collection-APIs hier wichtig sind

Ohne einen Service wie FourA müsste ein Travel-Startup Folgendes tun:

  • Einen Pool von Residential-Proxys in mehreren Ländern verwalten
  • Headless-Browser in großem Stil mit Anti-Detection-Patches betreiben
  • Retry-Logik für jedes auftretende Anti-Bot-System entwickeln
  • IP-Sperren handhaben und Proxy-Pools manuell rotieren

Diese Infrastruktur allein kann mehr kosten als der Rest der Anwendung zusammen. Eine Data-Collection-API abstrahiert all das hinter einem einzigen Endpoint.

Wichtige Überlegungen

  • Geo-Targeting ist unerlässlich. Airlines bieten je nach Region unterschiedliche Preise an. Nutze die Option proxyCountry, um Preise aus der Perspektive des Reisenden zu erfassen.
  • Geschwindigkeit zählt. Reisesuchen sind zeitkritisch. Nutzer erwarten Ergebnisse in Sekundenschnelle. Nutze single-Tasks für API-Endpoints und browser nur, wenn es notwendig ist.
  • Compliance ist entscheidend. Beachte Rate-Limits und Nutzungsbedingungen. Einige Airlines bieten Affiliate-APIs an, die einen autorisierten Zugriff auf Tarifdaten ermöglichen.

Wo fängst du also an?

Wenn du ein Travel-Produkt baust, das Tarifdaten benötigt, decken die FourA-API-Dokumentation und der Leitfaden zur Auswahl von Task-Typen die technischen Details ab.

Die größere Frage ist jedoch architektonischer Natur. Startups, die Flugpreis-Aggregation erfolgreich umsetzen, wählen nicht nur die richtige API. Sie entwerfen ihre Search-Fan-out-, Caching- und Normalisierungsschichten basierend auf der Realität, dass sich jede Airline-Website anders verhält. Der Task-Typ proxy mit Geo-Targeting löst den schwierigsten Teil dieses Puzzles.