Booking.com Hotel Reviews Scraper avatar

Booking.com Hotel Reviews Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Booking.com Hotel Reviews Scraper

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

jose olmedo soto aguirre

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

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.

FieldDescription
typereview or hotel
hotelNameProperty name
scoreGuest review score (typically 1–10)
titleReview title when shown
textCombined review text
positiveText / negativeTextLiked / disliked sections when public
dateReview date (as shown / ISO when available)
reviewerNamePublic display name when shown
reviewerCountryPublic country when shown
hotelUrlCanonical 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

FieldDefaultNotes
hotelUrlPreferred. Booking hotel page URL → scrape reviews
cityCity search for hotel listings when hotelUrl empty
checkIn / checkOut+14 / +16 daysUsed in search mode (YYYY-MM-DD)
maxReviews15Max reviews (or hotel cards in search mode)
languageen-usBooking locale
requestDelayMs2500Delay before navigation
proxyConfigurationRESIDENTIALRequired for reliable runs

Provide hotelUrl or city.

Example run (reviews — Bogotá hotel)

Verified locally against Hilton Bogotá (hotel/co/hilton-bogota), maxReviews: 1510 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)

ScoreReviewerCountryDate
8EmmaUnited KingdomJuly 24, 2026
9SamsonJamaicaMay 16, 2026
9NicolasFranceMarch 30, 2026
7BTurkeyMarch 4, 2026
8OmarUnited StatesNovember 25, 2025
7PedroUnited StatesNovember 21, 2025
8AlexanderMexicoSeptember 6, 2025
7SandrineFranceAugust 29, 2025
9SidharthUnited KingdomAugust 17, 2025
7VictorPortugalAugust 12, 2025
{
"city": "Bogotá",
"maxReviews": 15,
"checkIn": "2026-08-12",
"checkOut": "2026-08-14",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

How it works

  1. Resolve hotelUrl → hotel page (or city → search results)
  2. Open with Playwright (fingerprints + wait for AWS WAF challenge)
  3. Prefer reviews: open Guest reviews / reviewlist HTML; also capture review JSON XHR when present
  4. Extract score, text, date, public reviewer name/country, hotelName
  5. Deduplicate and stop at maxReviews

Local development

cd booking-hotel-reviews
npm install --registry https://registry.npmjs.org/
npx playwright install chromium
export 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)

PlanPrice
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
  • maxReviews default 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.*.html locale URLs may 404; score-badge / Guest reviews sheet is preferred.