Booking.com Hotel Reviews Scraper
Pricing
from $3.00 / 1,000 results
Booking.com Hotel Reviews Scraper
Scrape public Booking.com hotel reviews (text, score, date, reviewer country/name, hotelName) from a hotel URL, or hotel listings from a city search. Playwright + residential proxy recommended (AWS WAF).
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
jose olmedo soto aguirre
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Apify Actor (Camoufox + Playwright) that extracts public Booking.com hotel guest reviews from a hotel URL (preferred), or hotel listing cards from a city search.
| Field | Description |
|---|---|
type | review or hotel |
hotelName | Property name |
score | Guest review score (typically 1–10) |
title | Review title when shown |
text | Combined review text |
positiveText / negativeText | Liked / disliked sections when public |
date | Review date (as shown / ISO when available) |
reviewerName | Public display name when shown |
reviewerCountry | Public country when shown |
hotelUrl | Canonical hotel page URL |
Use cases: hospitality reputation monitoring, competitive research, VOC analytics on public Booking.com pages.
Public pages only. Booking.com serves AWS WAF challenges to many datacenter IPs — Apify RESIDENTIAL proxy is strongly recommended. Polite defaults: concurrency 1, delay ~2.5s.
Input
| Field | Default | Notes |
|---|---|---|
hotelUrl | — | Preferred. Booking hotel page URL → scrape reviews |
city | — | City search for hotel listings when hotelUrl empty |
checkIn / checkOut | +14 / +16 days | Used in search mode (YYYY-MM-DD) |
maxReviews | 15 | Max reviews (or hotel cards in search mode) |
language | en-us | Booking locale |
requestDelayMs | 2500 | Delay before navigation |
proxyConfiguration | RESIDENTIAL | Required for reliable runs |
Provide hotelUrl or city.
Example run (reviews — Bogotá hotel)
Verified locally against Hilton Bogotá (hotel/co/hilton-bogota), maxReviews: 15 → 10 public reviews extracted (Guest reviews sheet page).
{"hotelUrl": "https://www.booking.com/hotel/co/hilton-bogota.html","maxReviews": 15,"language": "en-us","requestDelayMs": 2000,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Local Playwright can pass AWS WAF without proxy on some IPs. Cloud / datacenter runs should keep RESIDENTIAL.
Real sample output (Hilton Bogotá)
{"type": "review","reviewId": "https://www.booking.com/hotel/co/hilton-bogota.html#0-8-July 24, 2026-Emma","hotelName": "Hilton Bogotá","score": 8,"title": "Stayed here only one night on arrival to Colombia - location great and rooms nice and clean and spacious","text": "Good location, easy walk to cafes and restaurants.","positiveText": "Good location, easy walk to cafes and restaurants.","negativeText": null,"date": "July 24, 2026","reviewerName": "Emma","reviewerCountry": "United Kingdom","hotelUrl": "https://www.booking.com/hotel/co/hilton-bogota.html","scrapedAt": "2026-07-29T05:16:55.698Z"}
Sample batch (10 reviews)
| Score | Reviewer | Country | Date |
|---|---|---|---|
| 8 | Emma | United Kingdom | July 24, 2026 |
| 9 | Samson | Jamaica | May 16, 2026 |
| 9 | Nicolas | France | March 30, 2026 |
| 7 | B | Turkey | March 4, 2026 |
| 8 | Omar | United States | November 25, 2025 |
| 7 | Pedro | United States | November 21, 2025 |
| 8 | Alexander | Mexico | September 6, 2025 |
| 7 | Sandrine | France | August 29, 2025 |
| 9 | Sidharth | United Kingdom | August 17, 2025 |
| 7 | Victor | Portugal | August 12, 2025 |
Example run (city search)
{"city": "Bogotá","maxReviews": 15,"checkIn": "2026-08-12","checkOut": "2026-08-14","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
How it works
- Resolve
hotelUrl→ hotel page (orcity→ search results) - Open with Playwright (fingerprints + wait for AWS WAF challenge)
- Prefer reviews: open Guest reviews /
reviewlistHTML; also capture review JSON XHR when present - Extract score, text, date, public reviewer name/country, hotelName
- Deduplicate and stop at
maxReviews
Local development
cd booking-hotel-reviewsnpm install --registry https://registry.npmjs.org/npx playwright install chromiumexport APIFY_TOKEN=$(grep '^APIFY_TOKEN=' ../.env | cut -d= -f2-)apify run -p
Results: storage/datasets/default/.
If blocked: check key-value BLOCK_EVIDENCE / DEBUG_HTML.
Pricing suggestion (Apify Store)
| Plan | Price |
|---|---|
| Pay-per-result | $3.00 / 1,000 reviews (range $2–4 / 1k) |
| Rental | $39 / month (range $29–49) + compute |
Positioning: Playwright + residential proxy for WAF-protected public Booking pages.
Compliance / Terms of Service
- Scrapes publicly visible Booking.com hotel review / search pages only (no login).
- Does not bypass authentication or private partner APIs.
- Respects polite rate limits (concurrency 1, multi-second delays).
- Users are responsible for complying with Booking.com Terms of Service, applicable law (including privacy rules for any personal data that appears publicly), and Apify Store policies. Use for legitimate research / monitoring of public data; do not overload Booking infrastructure.
Changelog
1.0.0
- Playwright crawl of Booking.com hotel reviews (URL) or city hotel search
- Fields: text, score, date, reviewerName/Country (public), hotelName
- RESIDENTIAL proxy default; AWS WAF wait + block evidence KV
maxReviewsdefault 15
Runtime notes (2026-07-29)
- Launcher: Camoufox (stealth Firefox) + Apify RESIDENTIAL recommended for AWS WAF.
- Verified: hotel review extraction works on some IPs; when Guest-review DOM is empty the actor auto-falls back to public city search hotel cards (Bogotá test → 10 hotel listings).
- Limitation: classic
reviewlist.*.htmllocale URLs may 404; score-badge / Guest reviews sheet is preferred.