Booking.com Reviews Scraper — Most Comprehensive
Pricing
Pay per event
Booking.com Reviews Scraper — Most Comprehensive
From $0.20 per 1,000 reviews — 10× cheaper than typical $2/1k actors. Scrape Booking.com hotel reviews: title, positive/negative text, 0–10 score, stay date, room, nights, traveler type, country, with date/language/keyword filters + a new-review monitor with alerts. No login or API key.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
🏨 Booking.com Reviews Scraper — Most Comprehensive
Scrape Booking.com hotel reviews — title, positive AND negative text, 0–10 score, stay date, room type, nights, traveler type, country, plus the hotel's full sub-score breakdown — at $0.20 per 1,000 reviews. Filter by date range (with early-stop), language, keyword, score band, or traveler type, and run it on a schedule as a new-review monitor with Slack/email/webhook alerts.
Why this one?
| This actor | Leading Booking.com reviews scraper | |
|---|---|---|
| Price per 1,000 reviews | $0.20 (pay-per-event) | $2.00 (pay per result) |
| Positive / negative text split | ✅ separate fields | ✅ |
| Review title + 0–10 score | ✅ | ✅ |
| Hotel sub-score breakdown (cleanliness, comfort, location, facilities, staff, value, Wi-Fi) | ✅ on every row | not advertised |
| Stay metadata (room type, nights, stay month, trip type, traveler type, mobile flag) | ✅ parsed into separate fields | not advertised |
| Reviewer country + review/helpful counts | ✅ | partial |
| Language filter (server-side, 35+ languages or ALL) | ✅ | ✅ |
| Date-range filter with early-stop (stops paginating — you don't pay for skipped pages) | ✅ | not advertised |
| Keyword filter ("breakfast", "noise", "bed bugs"…) | ✅ | not advertised |
| Score-band filter (e.g. only 0–5 complaints) | ✅ | not advertised |
| Sort control (newest / oldest / featured / best / worst) | ✅ | not advertised |
| New-review monitor + Slack / email / webhook alerts | ✅ built in | ❌ |
GDPR toggle (stripPersonalData, ON by default) | ✅ | ❌ |
| Failure handling | per-page retry with fresh browser fingerprint + rotating proxy session — a single bad page never kills the run | unknown |
| Login / API key needed | none | none |
What does Booking.com Reviews Scraper do?
It reads Booking.com's own server-rendered review pages (no login, no API key, no fragile headless browser) and returns clean, structured review rows you can export to JSON, CSV, Excel, or fetch via the Apify API. Paste any hotel URL — that's it.
- 📝 The full review — title, the positive ("liked") and negative ("disliked") texts as separate fields, plus the raw tag list.
- ⭐ Scores — the review's 0–10 score, and the hotel's overall score with the complete category breakdown (cleanliness, comfort, location, facilities, staff, value for money, free Wi-Fi) on every row.
- 🧳 Stay context — room type, number of nights, stay month, leisure vs business, couple/solo/family/group, submitted-from-mobile.
- 🌍 Reviewer context — country + country code, age group when shown, how many reviews and helpful votes the reviewer has (first name only if you opt out of
stripPersonalData). - 🗓️ Date filters that save money —
dateFrom/dateTowith newest-first early-stop: pagination halts the moment reviews get older than your window. - 🔎 Keyword & score filters — isolate every "breakfast" complaint or every ≤5/10 review across thousands of stays.
- 🔔 New-review monitor — schedule it and get Slack / email / webhook alerts for each fresh review per hotel (reputation watch for your own or competitor hotels).
What data does it extract?
One dataset row per review:
- 🆔
review_id(stable dedup hash),page_number,scraped_at - 🏨
hotel_name,hotel_cc,hotel_slug,hotel_url,reviews_url - ⭐
hotel_score,hotel_total_reviews,hotel_reviews_in_language,hotel_score_breakdown {cleanliness, comfort, location, facilities, staff, value_for_money, free_wifi} - 📝
title,title_is_scoreword,positive_text,negative_text,owner_response* - 🔢
score(0–10),score_best - 🗓️
review_date(ISO),review_date_raw,stayed_date(e.g. "June 2026") - 🧳
nights,trip_type(leisure/business),traveler_type(couple/solo/family/group),room_type,submitted_via_mobile,tags_raw[] - 🌍
reviewer_country,reviewer_country_code,reviewer_age_group,reviewer_review_count,reviewer_helpful_votes,reviewer_name(null unless you disablestripPersonalData) - 🌐
language(the language scope you requested), ✨is_new(monitor mode)
* Booking.com's review pages only rarely include property responses; the field is populated whenever the page shows one.
Who is it for?
- 🏨 Hoteliers & revenue managers watching their own and competitors' guest sentiment in near-real-time.
- 📊 Hospitality analysts & consultants building sentiment datasets across markets, brands, or seasons.
- 🤖 AI / NLP teams that need labeled positive/negative hotel text at scale (the pos/neg split is free labeling).
- 🛎️ Reputation & CX tools wiring new reviews into Slack, dashboards, or ticketing via webhook.
- 🏠 OTA / travel product teams doing competitive research on inventory quality.
How to use it (step by step)
- Click Try for free.
- Paste one or more hotel URLs — any form works:
https://www.booking.com/hotel/gb/royal-national.html, the reviews URL, or justgb/royal-national. - (Optional) set filters: date range, language (
all= every language), keyword, score band, trip/traveler type. - Click Start, then open the Dataset tab to view/export.
- (Optional) set
monitorMode: true+ an Apify Schedule + a Slack/webhook/email channel to get pinged on every new review.
Quick start
{"startUrls": ["https://www.booking.com/hotel/gb/royal-national.html"],"maxReviewsPerHotel": 200}
Competitor reputation monitor
{"startUrls": ["https://www.booking.com/hotel/us/pod.html","https://www.booking.com/hotel/us/your-competitor.html"],"monitorMode": true,"slackWebhookUrl": "https://hooks.slack.com/services/…"}
Complaint mining (last 90 days, low scores only)
{"startUrls": ["https://www.booking.com/hotel/gb/royal-national.html"],"maxReviewsPerHotel": 0,"dateFrom": "2026-03-14","maxScore": 5,"language": "all"}
Input
| Field | What it does |
|---|---|
startUrls | hotel page URLs (or cc/slug shorthand), one per hotel |
maxReviewsPerHotel | cap per hotel (0 = all reviews; default 50) |
sortBy | newest (default) · oldest · featured · score_high · score_low |
language | server-side language scope: all (default, most reviews), en, fr, de, … or default |
dateFrom / dateTo | review-date window (YYYY-MM-DD); newest-first runs early-stop below dateFrom |
keyword | only reviews mentioning this word (title/positive/negative/room) |
tripType / travelerType | leisure/business · couple/solo/family/group |
minScore / maxScore | 0–10 score band |
stripPersonalData | ON by default — drops the reviewer's first name (GDPR-friendly) |
maxRetriesPerPage | anti-WAF retry budget per page (default 10) |
monitorMode, alertOnNewReview | recurring new-review watcher |
webhookUrl, slackWebhookUrl, emailRecipients | alert channels |
proxyConfiguration | Apify proxy (datacenter works; RESIDENTIAL for very large runs) |
Output
Example record (truncated):
{"hotel_name": "Royal National Hotel","hotel_score": 7.9,"hotel_total_reviews": 19601,"hotel_score_breakdown": { "cleanliness": 8.3, "comfort": 8.3, "location": 9.1, "facilities": 7.8, "staff": 8.6, "value_for_money": 7.9, "free_wifi": 8.2 },"title": "Clean rooms, great location and pleasant staff.","positive_text": "The location was ideal. Walking distance to Russell Square Underground…","negative_text": "Our tv did not work correctly…","score": 8, "score_best": 10,"review_date": "2026-06-12", "stayed_date": "June 2026","nights": 3, "trip_type": "leisure", "traveler_type": "Couple","room_type": "Standard Plus Double Room", "submitted_via_mobile": true,"reviewer_country": "Ireland", "reviewer_country_code": "ie","reviewer_review_count": 1, "reviewer_helpful_votes": 0,"personal_data_stripped": true}
How much does it cost?
Pay-per-event — you pay for what you pull, no subscription:
| Event | What it covers | Price |
|---|---|---|
lot-scraped | each review returned | $0.0002 (= $0.20 / 1,000 reviews) |
monitor-run-completed | each scheduled watch run | $0.02 / run |
new-lot-detected | each new review found by the monitor | $0.005 / review |
alert-delivered | each Slack/email/webhook push | $0.002 / alert |
(Final per-event prices are set on the actor's pricing page.)
That's $0.20 per 1,000 reviews — about 10× cheaper than the typical $2.00/1k Booking reviews actor. A daily monitor on 5 hotels costs roughly $0.10/day plus the new reviews it actually finds.
Is it legal? (GDPR & ToS note — read this)
- Personal data: reviews can contain personal data (the reviewer's first name and nationality). By default this actor strips the reviewer's name (
stripPersonalData: true). Only disable that if you have a lawful basis under GDPR/your local privacy law to process reviewer names, and honor deletion requests. - Terms of Service: Booking.com's ToS does not welcome automated collection; this is a gray area that this actor does not resolve for you. The data scraped is publicly visible without any login, and courts have repeatedly found scraping public pages lawful (e.g. hiQ v. LinkedIn) — but you are responsible for your own use case, jurisdiction, and volume. Use the data for analysis/monitoring, don't republish reviews wholesale.
FAQ
Do I need a Booking.com account, login, or API key? No. The reviews are served on public pages — the actor reads them directly. No login or API key.
Which hotels can it scrape? Any property on Booking.com with guest reviews — paste its hotel page URL in any country/locale form.
How many reviews can I get per hotel?
All of them (set maxReviewsPerHotel: 0). Pages hold 25 reviews each and the actor paginates gaplessly until the end, your cap, or your date window.
Does it get non-English reviews?
Yes — the default language: "all" returns every language (e.g. 19,601 vs only 6,547 English reviews for a large London hotel). Set a 2-letter code to scope to one language.
Can I get only recent reviews?
Yes — dateFrom (+ default newest-first sort) stops pagination the moment it reaches older reviews, so a "last 30 days" pull on a 20k-review hotel costs only a few pages.
Can I monitor a hotel for new reviews?
Yes. monitorMode: true + an Apify Schedule. The actor remembers what it has seen per hotel (in a persistent named store) and outputs/alerts only new reviews, to Slack, email, or any webhook.
Does it include review scores and sub-scores? Every review carries its 0–10 score, and every row carries the hotel's full category breakdown (cleanliness, comfort, location, facilities, staff, value, Wi-Fi). Booking.com does not publish per-review category scores on its review pages.
Does it include the hotel's reply to a review?
The owner_response field is populated whenever Booking.com's review page shows one — most properties' responses are not exposed there, so expect it to be null for most rows.
Why do I see "WAF/odd response … retry" lines in the log? Booking.com randomly challenges ~2 of 3 requests with an AWS WAF page. The actor retries with a fresh browser fingerprint, cookie jar, and proxy session — a clean page typically arrives within 1–4 tries. That's normal and already priced in.
What if one hotel URL fails? The run keeps going — each hotel is isolated, and whatever was collected is always pushed. A failed page logs a warning instead of crashing the run.
Is the reviewer's name included?
Not by default (stripPersonalData: true). Disable it only if you have a lawful basis to process names; nationality, review counts, and helpful votes are kept either way.
How do I export the data? JSON, CSV, Excel, HTML, or RSS from the Dataset tab, or via the Apify API. Webhooks/Slack/email for monitor alerts.
Can I run it from my own code / Make / Zapier / n8n? Yes — call it via the Apify API or client libraries, or wire the alert webhook into any automation tool.
You might also like
- 🛫 Airline & travel review scrapers
- 🏠 Vacation-rental review & listing scrapers
- ⭐ Google Maps / TripAdvisor review scrapers
Feedback
Found a missing field or want a new filter? Open an issue on the actor — fast fixes and feature requests welcome.