Tony Wang5 Min. LesezeitBooking.com scrapen in 2026 (API & Python)
Booking.com 2026 scrapen — Hotel-Suche, Details, Reviews, Flüge und Attraktionen — per DIY, No-Code oder strukturierter API, plus die rechtliche Lage.
Am schnellsten scrapst du Booking.com 2026, indem du eine strukturierte API aufrufst, die normalisiertes JSON zurückgibt — Hotel-Suche, Details, Gäste-Reviews, Flugangebote und Attraktionen — statt Booking.coms eigene persistierte GraphQL-Queries und interne REST-Endpoints selbst nachzubauen. Booking.com ist die größte OTA nach Traffic, aber ihre offizielle API ist Partner-gated und die Seiten laufen hinter echten Anti-Bot-Maßnahmen. Dieser Guide zeigt dir alle drei Ansätze über alle drei Bereiche hinweg (Hotels, Flüge, Attraktionen), wo DIY scheitert und die rechtlichen Grundlagen.
Warum Booking.com scrapen?
Booking.coms Hotel-, Flug- und Attraktionsdaten treiben an:
- Hotelpreis- und Verfügbarkeits-Monitoring — nachverfolgen, wie sich die Rate eines Objekts nach Datum, Zimmertyp und Saison bewegt.
- Wettbewerbs-Recherche bei Raten — Booking.coms Preise eines Hotels mit anderen Kanälen vergleichen.
- Review- und Reputations-Analyse — Gäste-Bewertungen und -Texte nach Hotel, Datum oder Reisetyp aggregieren.
- Flugpreis-Recherche — Preisbewegungen bei Route/Datum parallel zur Hotelpreisentwicklung für ein Ziel verfolgen.
- Ziel- und Aktivitäten-Discovery — Attraktionen und Aktivitäten für ein Trip-Planning- oder Itinerary-Produkt aufdecken.
Ist es legal, Booking.com zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
Booking.coms Hotelseiten rendern über persistierte GraphQL-Calls statt aus reinem HTML, deshalb repliziert ein DIY-Scraper genau diese Queries:
import requests
# Booking.com's search UI calls a persisted-query GraphQL endpoint
resp = requests.post(
"https://www.booking.com/dml/graphql",
json={"operationName": "SearchResults", "variables": {"destination": "Tokyo"}, "extensions": {"persistedQuery": {"sha256Hash": "..."}}},
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. Booking.com stellt seinen Such- und Hoteldetailseiten eine JavaScript-Challenge-Hülle voran — ein reiner HTTP-Client bekommt eine Challenge-Seite statt Content, du brauchst also einen echten Browser (oder einen browserförmigen Transport), nicht nur realistische Header.
- Keine offizielle Self-Service-API. Zugriff auf die echte Demand API setzt voraus, dass du ein zugelassener Affiliate Partner wirst — eine Bewerbung, ein Freigabeprozess und eine Geschäftsbeziehung mit Provision pro Buchung — kein Anmeldeformular für einen Recherche- oder Monitoring-Anwendungsfall.
- Persisted-Query-Drift. Wie bei JustWatch sind die GraphQL-Queries gehasht und versioniert; replizierte Queries gehen kaputt, sobald Booking.com einen neuen Hash ausliefert.
- Drei unterschiedliche Bereiche, drei unterschiedliche Formen. Hotels, Flüge und Attraktionen sind separate Produkte mit separaten Endpoints und separaten Response-Formen — alle drei abzudecken bedeutet drei Integrationen, nicht eine.
Option 2: No-Code-Tools
Marktplatz-Scraper-Actors gibt es speziell für die Booking.com-Hotelsuche, und sie eignen sich für einmalige Abzüge, aber sie erben dieselbe Anti-Bot- und Persisted-Query-Fragilität wie DIY und decken Flüge oder Attraktionen nicht im selben Tool ab.
Option 3: Eine strukturierte Booking.com-API
Für einen wiederholbaren Workflow über alle drei Bereiche hinweg liefert eine Booking.com scraping API normalisiertes JSON, ohne dass du eine Browser-Flotte oder Persisted-Queries pflegen musst. Suche Hotels nach Ziel und Datum:
curl "https://api.crawlora.net/api/v1/booking/search?query=Tokyo&checkin=2026-09-10&checkout=2026-09-14&adults=2" \
-H "x-api-key: $CRAWLORA_API_KEY"
Hole Details und Reviews für ein Hotel, plus eine Flug- und Attraktionssuche, in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1"
hotels = requests.get(f"{base}/booking/search", headers=h, params={
"query": "Tokyo", "checkin": "2026-09-10", "checkout": "2026-09-14", "adults": 2,
}).json()["data"]["properties"]
hotel_id = hotels[0]["id"]
detail = requests.get(f"{base}/booking/hotel-detail", headers=h, params={"hotel_id": hotel_id}).json()["data"]
reviews = requests.get(f"{base}/booking/reviews", headers=h, params={"hotel_id": hotel_id, "hotel_country_code": "jp", "limit": 20}).json()["data"]
flights = requests.get(f"{base}/booking-flights/search", headers=h, params={
"from": "NRT", "to": "LAX", "depart": "2026-09-10",
}).json()["data"]
attractions = requests.get(f"{base}/booking-attractions/search", headers=h, params={
"query": "Tokyo", "start_date": "2026-09-10",
}).json()["data"]
Ein Hotel-Search-Ergebnis ist normalisiertes JSON (echte Felder — prüfe die docs):
{
"code": 200,
"msg": "OK",
"data": {
"destination": "Tokyo",
"results_count": 1842,
"properties": [
{
"id": 201234,
"slug": "example-hotel-tokyo",
"name": "Example Hotel Tokyo",
"location": "Shinjuku, Tokyo",
"star_rating": 4,
"review_score": 8.6,
"review_count": 3120,
"price": 148,
"currency": "USD",
"url": "https://www.booking.com/hotel/jp/example-hotel-tokyo.html"
}
]
}
}
Hoteldetails ergänzen rooms, facilities, highlights, house_rules und rating_scores (eine Aufschlüsselung nach Kategorie — Sauberkeit, Lage, Preis-Leistung); Reviews liefern pro Review positive_text/negative_text, score, stay_status, room_type und reviewer_country. Speichere eine Zeile pro Hotel und abgefragtem Datum, und lauf regelmäßig erneut, um Preis und Verfügbarkeit zu verfolgen.
Was du sammeln kannst
Öffentliche Hoteldaten: Suchergebnisse (id, Name, Lage, Sternebewertung, Review-Score, Preis); Hoteldetails (Zimmer, Ausstattung, Highlights, Hausregeln, Rating-Aufschlüsselung, Fotos); Gäste-Reviews (Score, Positiv-/Negativ-Text, Aufenthaltsdaten, Reisetyp, Land). Flugdaten: Preisangebote nach Route und Datum, Autocomplete für Start- und Zielorte. Attraktionsdaten: Things-to-do-Suche nach Ziel und Datum, Produktdetails und Reviews. Nur öffentliche Listing- und Review-Daten.
Grenzen und typische Herausforderungen
- Braucht echtes Anti-Bot-Handling. Booking.coms JS-Challenge-Hülle bedeutet, dass ein naiver HTTP-Client keinen Content erreicht — plane browserförmigen Transport ein, nicht nur Header.
- Keine offizielle Self-Service-API. Die Demand API ist Affiliate-Partner-only mit einer Provisionsbeziehung — kein Fit für ein Recherche- oder Monitoring-Produkt.
- Raten ändern sich nach Datum, Zimmertyp und Belegung. Ein einzelner Snapshot deckt nur die Daten und die Personenzahl ab, die du gesucht hast — hol die Daten pro Zeitraum, der dich interessiert, erneut.
- Drei getrennte Bereiche. Hotels, Flüge und Attraktionen teilen sich weder ids noch ein Schema — behandle sie als drei 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.
- Review- und Reputations-Analyse — Gäste-Sentiment nach Hotel oder Ziel aggregieren.
- Trip-Planning- und Itinerary-Tools — Hotel-, Flug- und Attraktionsdaten für ein Ziel kombinieren.
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 Search- und Hoteldetail-Endpoints im Playground, sieh dir das Schema in den API docs an und wirf einen Blick aufs pricing. Booking.com deckt ab, wo du übernachtest; how to scrape Airbnb deckt die Kurzzeitvermietungs-Seite derselben Reise ab, und how to scrape TripAdvisor deckt Hotels, Attraktionen und Reisende-Reviews aus einem Review-first-Blickwinkel ab. Siehe auch how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Hat Booking.com eine offizielle API?
Ja, die Demand API — aber sie ist auf zugelassene Affiliate Partner unter einer Geschäftsbeziehung mit Provision pro Buchung beschränkt, kein Self-Service-Signup für Recherche- oder Preis-Monitoring-Anwendungsfälle. Eine strukturierte Scraping-API ist dafür der praktikable Weg.
Ist es legal, Booking.com zu scrapen?
Öffentliche Listing-Fakten (Hotelname, Preis, Sternebewertung, Review-Score) sind nicht urheberrechtlich geschützt, aber Booking.coms Nutzungsbedingungen verbieten automatisierte Datenextraktion. Bleib bei öffentlichen Listing- und Review-Fakten, halte dich an Rate-Limits, umgeh nie einen Login und versuch nie, über gescrapte Daten eine Buchung zu erstellen oder zu manipulieren. Keine Rechtsberatung.
Kann ich Booking.com scrapen, ohne blockiert zu werden?
Booking.com stellt seinen Seiten eine JavaScript-Challenge-Hülle voran, ein reiner HTTP-Client erreicht also keinen Content — du brauchst browserförmigen Transport, nicht nur realistische Header. Eine strukturierte API übernimmt das hinter einem einzigen Key.
Wie komme ich an die Zimmer und Reviews eines Hotels?
Suche, um eine Hotel-id zu bekommen, und rufe dann /booking/hotel-detail für Zimmer, Ausstattung und eine Rating-Aufschlüsselung auf, sowie /booking/reviews für einzelne Gäste-Reviews (Score, Positiv-/Negativ-Text, Aufenthaltsdaten, Reisetyp, Land).
Kann ich auch Flüge und Attraktionen suchen, nicht nur Hotels?
Ja. /booking-flights/search liefert Preisangebote nach Route und Datum (mit /booking-flights/autocomplete, um Flughäfen aufzulösen), und /booking-attractions/search liefert Things-to-do nach Ziel und Zeitraum, mit /booking-attractions/detail und /booking-attractions/reviews für einzelne Produkte.
Wie oft ändern sich Hotelpreise?
Raten variieren nach Datum, Zimmertyp und Belegung, eine einzelne Suche spiegelt also nur die Personenzahl und die Daten wider, die du angefragt hast. Hol die Daten pro Zeitraum, der dich interessiert, erneut ab und lass es regelmäßig laufen, um Verfügbarkeit und Preisbewegung zu verfolgen.
Welche Booking.com-Daten kann ich sammeln?
Öffentliche Hoteldaten (Suche, Details, Zimmer, Ausstattung, Rating-Aufschlüsselung), Gäste-Reviews, Flugpreisangebote und Attraktions-Listings mit Reviews — nur öffentliche Daten, nie eine abgeschlossene oder manipulierte Buchung.