Booking Reviews Scraper avatar

Booking Reviews Scraper

Pricing

from $1.00 / 1,000 record scrapeds

Go to Apify Store
Booking Reviews Scraper

Booking Reviews Scraper

Scrapes reviews from Booking.com hotel pages

Pricing

from $1.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Categories

Share

Booking.com Reviews Scraper — Extract Hotel Reviews at Scale

Pull thousands of Booking.com guest reviews in minutes — with no API key, no manual work, and no blocks.

Whether you manage a hotel's reputation, conduct hospitality research, or build a competitive intelligence tool, this actor gives you structured, fresh review data straight from Booking.com's live database.

  • ✅ Scrapes any Booking.com hotel page — no account required
  • ✅ Bypasses WAF and bot protection automatically
  • ✅ Extracts reviews in clean, structured JSON ready for analysis
  • ✅ Supports bulk scraping across multiple properties in one run
  • ✅ Pay only for what you scrape — $0.001 per review

📌 What This Actor Does

This Apify Actor extracts guest reviews from Booking.com hotel pages — the same reviews guests see when they search for accommodation.

For each hotel URL you provide, the actor fetches:

  • Full guest reviews (positive and negative comments, separated)
  • Star ratings on a 1–5 scale
  • Guest names, check-in dates, and room types
  • Hotel management replies
  • Hotel-level summary (overall score, rating distribution)

Who is this for?

  • 🏨 Hotel owners & managers monitoring their reputation and benchmarking competitors
  • 📊 Market researchers & analysts studying hospitality trends across regions
  • 🏢 OTAs & travel platforms enriching their own databases with third-party social proof
  • 🤖 AI & NLP teams building sentiment analysis models on real hospitality data
  • 💼 Reputation management agencies tracking client portfolios at scale

✨ Key Features

  • Bulk scraping — provide a list of hotel URLs and scrape them all in a single run
  • Pagination handled automatically — fetches all review pages without any configuration
  • Date filtering — set a stop date to only collect reviews newer than a given cutoff, great for weekly or monthly monitoring workflows
  • Review limit control — cap the number of reviews per hotel to control cost and runtime
  • Separated positive/negative text — Booking.com stores positive and negative comments as distinct fields; this actor preserves that structure so you don't have to parse it yourself
  • Hotel management replies — captures the owner's response to each review, if present
  • Room-level data — includes the room name and ID the guest stayed in
  • WAF challenge solver — automatically handles AWS WAF JavaScript challenges that Booking.com deploys to block scrapers; no manual intervention required
  • Residential proxy support — runs through Apify's residential proxy network for high success rates

🧠 Why This Actor Is Different

Most Booking.com scrapers parse the rendered HTML page — which breaks every time Booking.com updates its frontend layout. This actor calls Booking.com's internal GraphQL API directly, the same endpoint the browser itself uses. That means:

This ActorTypical HTML Scrapers
Data freshnessLive from the APIDepends on page render
Resilience to layout changesHigh — API contract is stableLow — breaks on CSS/HTML changes
Positive/negative text separated✅ Yes❌ Usually merged
Room details included✅ Yes❌ Rarely
Management replies✅ Yes❌ Often missed
WAF bypass✅ Automatic❌ Often blocks
Pricing$0.001 / reviewVaries

⚙️ Input Configuration

Input fields

FieldTypeRequiredDescription
startUrlsArray of URLs✅ YesList of Booking.com hotel page URLs to scrape
maxNumberOfReviewsIntegerNoMaximum reviews to collect per hotel. Leave empty or set to 0 to collect all available reviews. Default: 100
targetDateDate (ISO)NoStop collecting reviews older than this date. Useful for incremental/scheduled scraping. Leave empty to disable.
proxyConfigurationObjectNoProxy settings. Defaults to Apify Residential Proxy (US). Change country if you need reviews in a specific language.

Example input

{
"startUrls": [
{ "url": "https://www.booking.com/hotel/fr/edenarc.en-gb.html" },
{ "url": "https://www.booking.com/hotel/es/hotel-arts-barcelona.en-gb.html" }
],
"maxNumberOfReviews": 500,
"targetDate": "2024-01-01",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "FR"
}
}

Tips for best results

Use the full hotel URL. Booking.com short URLs (e.g., booking.com/hotel/fr/name.html) work, but URLs with query parameters (dest_id, aid, label) help the actor resolve the hotel faster and more reliably.

Set apifyProxyCountry to match the hotel's country. Reviews on Booking.com are sometimes language-filtered by region. Using a French proxy for French hotels gives you the most complete review set.

Use targetDate for scheduled monitoring. If you run this actor weekly, set targetDate to 7 days ago to only fetch new reviews since your last run — saves cost and time.

Leave maxNumberOfReviews empty for complete datasets. Setting it to 0 or leaving it blank collects every available review for the property.


📤 Output Format

Each record in the dataset represents one hotel, containing:

  • An entity object with hotel-level metadata
  • A reviews array with all scraped reviews for that hotel

Sample output

{
"entity": {
"businessName": "Hôtel Eden Arc",
"businessUrl": "https://www.booking.com/hotel/fr/edenarc.en-gb.html",
"score": 8.6,
"totalNumberOfReviews": 1243,
"ratings": {
"one": 12,
"two": 28,
"three": 95,
"four": 310,
"five": 798
}
},
"reviews": [
{
"reviewId": "/reviews/fr/hotel/edenarc-fr.en-gb.html?...",
"title": "Perfect mountain escape",
"room_name": "Superior Double Room with Mountain View",
"room_id": "12345678",
"text": {
"positive": "The view from our room was breathtaking. Staff were incredibly welcoming and helpful throughout our stay.",
"negative": "The spa was closed for renovation during our visit, which was a bit disappointing."
},
"rating": 5,
"datetime": "2025-03-14T00:00:00.000Z",
"consumerName": "Marie G.",
"dateOfExperience": "2025-03-10T00:00:00.000Z",
"reviewUrl": "/reviews/fr/hotel/edenarc-fr.en-gb.html?...",
"reply": "Thank you so much for your kind words, Marie! We hope to welcome you back once the spa renovation is complete."
}
]
}

Output field reference

entity object

FieldDescription
businessNameHotel name as shown on Booking.com
businessUrlClean hotel page URL (no tracking params)
scoreOverall Booking.com score (out of 10)
totalNumberOfReviewsTotal review count on Booking.com
ratings.oneratings.fiveCount of reviews per star band (1–5 stars)

Each review in reviews

FieldDescription
reviewIdUnique review identifier (relative URL path)
titleReview headline written by the guest
room_nameName of the room type booked
room_idInternal Booking.com room type ID
text.positivePositive comments from the guest
text.negativeNegative comments from the guest
ratingGuest rating, converted to 1–5 scale
datetimeDate the review was submitted (ISO 8601)
consumerNameGuest display name
dateOfExperienceGuest check-in date (ISO 8601)
reviewUrlDirect link to the review on Booking.com
replyHotel management's reply, or null if none

▶️ How to Use

Option 1 — Apify Console (No Code)

  1. Open the actor page on Apify Store
  2. Click Try for free
  3. Paste your Booking.com hotel URL(s) in the Start URLs field
  4. Set your desired review limit and optional stop date
  5. Click Start and wait for the run to finish
  6. Download your results as JSON, CSV, or Excel

Option 2 — Apify API

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{ "url": "https://www.booking.com/hotel/fr/edenarc.en-gb.html" }],
"maxNumberOfReviews": 200
}'

Option 3 — Schedule it (Automated Monitoring)

  1. Go to Schedules in your Apify account
  2. Create a new schedule (e.g., every Monday at 9am)
  3. Attach this actor with your hotel URLs and a rolling targetDate set to 7 days ago
  4. Connect to a webhook or Google Sheets integration for automatic delivery

📈 Use Cases

1. Hotel Reputation Monitoring

Track what guests are saying about your property in real time. Run the actor weekly, filter for new reviews since your last run using targetDate, and pipe results into your CRM or Slack for instant alerts on negative feedback.

2. Competitive Intelligence

Scrape the top 20 hotels in your destination city. Compare average ratings, score distributions, and recurring complaints in positive/negative text fields to identify gaps your property can exploit.

3. Hospitality Market Research

Build a dataset of thousands of hotels across Europe and analyse review trends by region, price tier, or property type. The structured positive/negative split makes sentiment analysis straightforward.

4. AI Training Data

Generate large, labelled datasets of real guest reviews for training sentiment classifiers, summarisation models, or hospitality-specific NLP tools. The text.positive/text.negative separation gives you pre-labelled training examples.

5. OTA & Aggregator Enrichment

If you run a travel comparison platform, enrich your hotel listings with live Booking.com review summaries, scores, and rating distributions to improve trust signals for your users.


🛠️ Advanced Tips

Scraping a large hotel with 5,000+ reviews

Set maxNumberOfReviews to 0 (no limit) and increase the actor memory in the Advanced options if the run times out. The actor paginates automatically — no extra configuration needed.

Getting reviews in a specific language

Booking.com serves reviews based on the proxy location. To get French-language reviews, set:

"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "FR"
}

Running for hundreds of hotels

Provide all URLs in the startUrls array. The actor processes them sequentially in a single run. For very large batches (100+ hotels), consider splitting them across multiple scheduled runs to avoid memory pressure.

Saving cost on repeat runs

Use targetDate set to your last run date. The actor stops pagination as soon as it encounters reviews older than the cutoff — you only pay for new reviews, not the entire history.

Integrating with Google Sheets

Use Apify's native Google Sheets integration to push results directly to a spreadsheet after each run — no coding required.


❓ FAQ & Troubleshooting

Q: Do I need a Booking.com account? No. The actor scrapes public review pages. No login is required.

Q: Is it legal to scrape Booking.com? Scraping publicly available data for research, analysis, and personal use is generally permitted in many jurisdictions. Always review Booking.com's Terms of Service and consult legal counsel for commercial applications. This actor only accesses data that any visitor can see without logging in.

Q: Why did my run return fewer reviews than the hotel shows? Booking.com occasionally limits the total number of reviews accessible through their API (typically capping at ~10,000 most recent reviews for very popular properties). This is a platform-level restriction, not an actor bug.

Q: The actor failed — what do I do? Check the Log tab in your run. Common causes:

  • The hotel URL is invalid or the page no longer exists — verify the URL in a browser
  • The run was blocked by WAF — try again; the actor automatically retries, but persistent blocks may require switching proxy country
  • The hotel page structure changed — contact support

Q: The rating field shows values 1–5, but Booking.com uses 1–10. Why? The actor normalises ratings to a 1–5 scale (divides by 2 and rounds) for consistency with other review platforms. The raw score is not preserved in the current output.

Q: Can I scrape reviews in multiple languages? Booking.com serves reviews in the guest's original language. The actor does not filter by language — all reviews are included regardless of the language they were written in.

Q: How fresh is the data? Every run fetches live data directly from Booking.com. There is no cache. Reviews published minutes ago will appear in your results.

Q: How much does it cost? The actor charges $0.001 per review scraped (Pay-Per-Event billing). Scraping 1,000 reviews costs $1. There is no base run fee — you only pay for what you actually collect.


📞 Support

Have a question, found a bug, or need a custom feature?

  • 📧 Email: me@ahmedhrid.com
  • 🐛 Report issues: Use the Issues tab on the actor page
  • 💬 General questions: Use the Discussions section on the Apify platform

Response time is typically within 24 hours on business days.


Built with ❤️ using Apify. Not affiliated with Booking.com.