Tony Wang6 Min. LesezeitExpedia scrapen 2026 (API & Python)
Expedia 2026 scrapen – Hotelsuche, Details, Reviews, Aktivitäten und Flüge – per DIY, No-Code oder strukturierter API, inkl. rechtlicher Basics.
Am schnellsten scrapst du Expedia 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON zurückgibt — Hotel-Suche, Objektdetails, Gäste-Reviews, Aktivitäten und Flugangebote — statt Expedias interne Endpoints selbst nachzubauen. Expedia ist eine der größten globalen OTAs und ein direkter Booking.com-Wettbewerber, aber die offizielle API ist Partner-gated und die Seiten laufen hinter echten Anti-Bot-Maßnahmen. Dieser Guide zeigt dir alle drei Ansätze, wo DIY scheitert, und die rechtlichen Grundlagen.
Warum Expedia-Daten scrapen?
Expedias Hotel-, Aktivitäten- und Flugdaten treiben an:
- Hotelpreis- und Verfügbarkeits-Monitoring — nachverfolgen, wie sich die Nachtrate eines Objekts nach Datum, Zimmeranzahl und Saison bewegt.
- Ratenparität über OTAs hinweg prüfen — Expedias Preis eines Hotels mit Booking.com, Airbnb und anderen Kanälen für dieselben Daten vergleichen.
- Travel-Metasearch-Produkte — Suche und Vergleich über Hotels, Aktivitäten und Flüge für ein Ziel antreiben.
- Marktforschung — Preise, Review-Scores und Inventar nach Markt oder Objekttyp verfolgen.
- KI- und Datenpipelines — strukturierte Reisedaten in Forecasting-, Itinerary- oder Empfehlungssysteme einspeisen.
Ist es legal, Expedia zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
Expedias Hotel- und Flugseiten rendern aus internen JSON-Endpoints hinter einem JavaScript-Frontend, deshalb muss ein DIY-Scraper diese Calls reverse-engineeren und echte browserförmige Header mitschicken:
import requests
# Expedia's search UI calls internal endpoints, not a public API
resp = requests.get(
"https://www.expedia.com/api/hotels/search",
params={"destination": "New York", "checkIn": "2026-09-10", "checkOut": "2026-09-12"},
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
Es funktioniert in der Demo und geht dann kaputt:
- Echtes Anti-Bot, kein Soft-Block. Expedia stellt seinen Such- und Objektseiten Anti-Bot-Schutz der Akamai-Klasse voran — ein reiner HTTP-Client bekommt eine Challenge oder eine abgespeckte Antwort statt echter Daten, du brauchst also einen echten Browser (oder einen browserförmigen Transport), nicht nur realistische Header.
- Keine offizielle Self-Service-API. Zugriff auf die Rapid API setzt voraus, dass du ein zugelassener Partner wirst — eine Bewerbung, ein Freigabeprozess und eine Geschäftsbeziehung — kein Anmeldeformular für einen Recherche- oder Monitoring-Anwendungsfall.
- Interne Endpoints driften. Undokumentierte Request-Formen und Parameter ändern sich ohne Ankündigung, deshalb geht ein auf die heutige Antwort abgestimmter Scraper beim nächsten Frontend-Deploy kaputt.
- Zuverlässigkeit bei stark geschützten Seiten verändert sich über die Zeit. Selbst mit funktionierenden Headern kann eine Seite, die so stark auf Anti-Bot-Schutz setzt, einen Monat sauber durchgehen und im nächsten blockiert werden, wenn sich die Anti-Bot-Regeln ändern — plane Monitoring ein, nicht einen einmaligen Build.
- Fünf verschiedene Bereiche, fünf verschiedene Formen. Standorte, Objekte, Aktivitäten und Flüge sind separate Produkte mit separaten Response-Formen — alle abzudecken bedeutet mehrere Integrationen, nicht eine.
Option 2: No-Code- / Fertig-Tools
Marktplatz-Scraper-Actors und visuelle Extraktoren gibt es speziell für die Expedia-Hotelsuche, und sie eignen sich für einmalige Abzüge, aber sie erben dieselbe Anti-Bot-Fragilität wie DIY, decken Aktivitäten oder Flüge nicht im selben Tool ab und lassen sich nur umständlich nach Zeitplan in einer Produktpipeline betreiben.
Option 3: Eine strukturierte Expedia-API
Für einen wiederholbaren Workflow über Hotels, Aktivitäten und Flüge liefert eine Expedia scraping API normalisiertes JSON, ohne dass du eine Browser-Flotte oder Endpoint-Reverse-Engineering pflegen musst. Löse ein Ziel zu einer region_id auf:
curl -X POST https://api.crawlora.net/api/v1/expedia/locations/search \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"term": "New York", "currency": "USD", "locale": "en_US"}'
Suche Hotels und hole dann Details, Reviews, Aktivitäten und Flüge in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY", "Content-Type": "application/json"}
base = "https://api.crawlora.net/api/v1/expedia"
hotels = requests.post(f"{base}/properties/search", headers=h, json={
"destination": "New York", "check_in": "2026-09-10", "check_out": "2026-09-12",
"adults": 2, "rooms": 1, "page": 1, "page_size": 5, "currency": "USD", "locale": "en_US",
}).json()["data"]["properties"]
property_id = hotels[0]["id"]
detail = requests.post(f"{base}/properties/detail", headers=h, json={
"property_id": property_id, "check_in": "2026-09-10", "check_out": "2026-09-12",
"adults": 2, "currency": "USD", "locale": "en_US",
}).json()["data"]
reviews = requests.post(f"{base}/properties/reviews", headers=h, json={
"property_id": property_id, "check_in": "2026-09-10", "check_out": "2026-09-12",
}).json()["data"]["reviews"]
activities = requests.post(f"{base}/activities/search", headers=h, json={
"destination": "New York", "start_date": "2026-09-10", "end_date": "2026-09-17",
}).json()["data"]["activities"]
flights = requests.post(f"{base}/flights/search", headers=h, json={
"origin": "JFK", "destination": "LAX", "departure_date": "2026-09-10",
"return_date": "2026-09-17", "trip_type": "round_trip", "adults": 1, "cabin_class": "COACH",
}).json()["data"]["offers"]
Eine Hotel-Search-Antwort ist normalisiertes JSON, das du direkt speichern kannst (die gezeigten Felder sind real — sieh dir die docs an):
{
"code": 200,
"msg": "OK",
"data": {
"destination": "New York, New York, United States of America",
"check_in": "2026-09-10",
"check_out": "2026-09-12",
"page": 1,
"properties": [
{
"id": "17117062",
"name": "Example Hotel New York",
"url": "https://www.expedia.com/New-York-Hotels-Example-Hotel.h17117062.Hotel-Information",
"review_score": 8.8,
"review_count": 2140,
"review_title": "Excellent",
"price": "$1,386 total",
"strikeout_price": "$1,705",
"nightly_price": "$556 nightly",
"thumbnail_url": "https://images.trvl-media.com/lodging/17100000/17110000/17117100/17117062/example.jpg",
"badges": ["VIP Access", "Member Price $319 off"]
}
]
}
}
Objektdetails (über property_id) ergänzen address, amenities, city, province, country_code, latitude/longitude, star_rating und vip_message; properties/filters liefert die verfügbaren Filterabschnitte (Preisspanne, Ausstattung, Sortieroptionen) für ein Ziel; properties/reviews liefert pro Review reviewer_name, date, rating_label, message und verified. activities/search liefert pro Aktivität name, duration, review_score, price und free_cancellation. flights/search liefert pro Angebot airline, route, departure_time/arrival_time, stops, duration_summary und price — cabin_class muss COACH, PREMIUM_ECONOMY, BUSINESS oder FIRST sein. Speichere eine Zeile pro Objekt oder Angebot je abgefragtem Datum, und lauf regelmäßig erneut, um Preis und Verfügbarkeit zu verfolgen.
Was du sammeln kannst
Öffentliche Standort-, Objekt- und Preisdaten: Standortsuche (region_id, geo_type, Koordinaten); Hotel-Suchergebnisse (id, Name, Preis, Nachtpreis, Review-Score, Badges, Thumbnail); Objektdetails (Adresse, Ausstattung, Sternebewertung, Koordinaten); verfügbare Filter und Sortieroptionen für ein Ziel; Gäste-Reviews (Reviewer-Name, Datum, Bewertung, Text); Aktivitäten (Name, Dauer, Preis, Review-Score, Stornierungsbedingungen); und Flugangebote (Airline, Route, Zeiten, Zwischenstopps, Preis). Nur öffentliche Listing- und Review-Daten.
Grenzen und typische Herausforderungen
- Braucht echtes Anti-Bot-Handling. Expedias Anti-Bot-Schutz der Akamai-Klasse bedeutet, dass ein naiver HTTP-Client Inhalte nicht zuverlässig erreicht — plane browserförmigen Transport ein, nicht nur Header.
- Keine offizielle Self-Service-API. Die Rapid API ist ein Partnerprodukt mit einer Geschäftsbeziehung — kein Fit für ein Recherche- oder Monitoring-Vorhaben.
- Zuverlässigkeit bei stark geschützten Zielen kann sich verschieben. Selbst eine funktionierende Integration sollte überwacht werden — Anti-Bot-Regeln auf einer so stark geschützten Seite ändern sich mit der Zeit.
- Preise sind dynamisch und datumsabhängig. Ein einzelner Snapshot deckt nur die Daten, die Belegung und die Kabinenklasse ab, die du gesucht hast — hol die Daten pro Zeitraum, der dich interessiert, erneut.
- Fünf getrennte Bereiche. Standorte, Objekte, Aktivitäten und Flüge teilen sich kein Schema — behandle sie als separate Integrationen, selbst innerhalb einer Plattform.
- Nur öffentliche Daten. Das sammelt, was öffentlich gelistet ist — nie ein Weg, um eine tatsächliche Buchung abzuschließen oder zu manipulieren.
Wo das eingesetzt wird
- Hotelpreis- und Verfügbarkeits-Monitoring — die Rate und Auslastung eines Objekts über die Zeit verfolgen. Siehe travel & hospitality research.
- Review- und Reputations-Analyse — Gäste-Sentiment nach Objekt oder Ziel aggregieren. Siehe review & reputation monitoring.
- Marktforschung — Hotel-, Aktivitäten- und Flugpreise für ein Ziel oder eine Route kombinieren. Siehe market research.
Sources
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den Free Web Scraper oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste die Standort-, Objekt-, Aktivitäten- und Flug-Endpoints im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Expedia ist eine der größten globalen OTAs; how to scrape Booking.com deckt einen direkten Wettbewerber ab, und how to scrape Airbnb deckt die Kurzzeitvermietungs-Seite derselben Reise ab. Siehe auch is web scraping legal.
Häufig gestellte Fragen
Hat Expedia eine öffentliche API für Hotel- und Flugsuche?
Expedia Group betreibt die Rapid API, ein B2B-Partnerprodukt zur Verteilung ihres Unterkunfts-Inventars. Der Zugriff setzt eine kommerzielle Partnervereinbarung voraus, die einzeln geprüft wird — es gibt kein einfaches Self-Service-Signup zum Lesen von Suchergebnissen, und sie deckt Flugsuche nicht so ab, wie das Standardprodukt zugeschnitten ist.
Ist es legal, Expedia zu scrapen?
Öffentliche Listing-Fakten wie Hotelname, Preis und Review-Score sind nicht urheberrechtlich geschützt, und hiQ Labs v. LinkedIn stellte fest, dass der Zugriff auf öffentliche Daten keinen CFAA-Verstoß darstellt. Aber Expedias Nutzungsbedingungen verbieten automatisierten Zugriff ohne ausdrückliche vorherige Erlaubnis, also bleib bei öffentlichen, faktischen Daten, halte dich an Rate-Limits und umgeh nie einen Login. Das ist keine Rechtsberatung — prüfe Expedias Bedingungen und konsultiere einen Anwalt für deinen konkreten Anwendungsfall.
Warum scheitert eine einfache HTTP-Anfrage an Expedia?
Expedia stellt seinen Such- und Objektseiten Anti-Bot-Schutz der Akamai-Klasse voran. Ein einfacher requests.get()-Aufruf liefert typischerweise eine Challenge-Seite oder eine abgespeckte Antwort statt echter Daten, deshalb braucht DIY-Scraping einen echten Browser oder einen browserförmigen Transport, nicht nur realistische Header.
Welche Daten kann ich mit einer strukturierten API von Expedia sammeln?
Standortsuche (region_id, geo_type, Koordinaten), Hotel-Suchergebnisse und -Details (Preis, Nachtpreis, Review-Score, Ausstattung, Sternebewertung), verfügbare Filter und Sortieroptionen, Gäste-Reviews, Aktivitäten (Name, Dauer, Preis, Stornierungsbedingungen) und Flugangebote (Airline, Route, Zeiten, Zwischenstopps, Preis) — alles öffentliche Listing- und Reviewdaten.
Wie suche ich Flüge über Expedias Daten-API?
Schicke origin, destination, departure_date (und optional return_date), trip_type, adults und cabin_class per POST an den flights/search-Endpoint. cabin_class muss COACH, PREMIUM_ECONOMY, BUSINESS oder FIRST sein — kein Freitext wie "economy".
Wie bekomme ich Objektdetails und Reviews für ein bestimmtes Expedia-Hotel?
Führe zuerst eine Objektsuche (oder Standortsuche) aus, um eine property_id zu bekommen, und übergib diese property_id dann zusammen mit check_in/check_out-Daten an die Endpoints properties/detail und properties/reviews, um Adresse, Ausstattung, Sternebewertung und Gäste-Review-Text abzurufen.
Kann ich gescrapte Expedia-Daten nutzen, um eine Buchung zu erstellen oder zu manipulieren?
Nein. Diese Daten dienen der öffentlichen Listing-, Preis- und Review-Recherche — Preis-Monitoring, Ratenparitäts-Checks, Marktforschung und Trip-Planning-Produkte. Sie sind kein Weg, um eine tatsächliche Reservierung abzuschließen, zu ändern oder zu beeinflussen.