ParseForge Scrapers

Booking.com Reviews Scraper

parseforge/booking-com-reviews-scraper

TravelAutomationDeveloper tools

Scrapes Booking.com guest reviews from hotel URLs and returns each review as a flat row with score, title, body text, reviewer country, stay date, and photo URLs.

Run this scraper See the API call
Total users
11
Monthly active
2
Total runs
300
Bookmarked
1
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

Booking.com Reviews Scraper

Scrape Booking.com hotel reviews from any property URL, up to a million per run. Each review comes with the score, title, full text, reviewer country, stay date, and photos. No login or API key. Export to CSV, JSON, Excel, or XML.

Booking.com does not offer a public API for guest reviews, so collecting them at scale means manual copy-paste or brittle custom scripts. This Actor reads the public review pages directly, filters by score, date, reviewer country, or photo presence, and returns every match in one consistent flat schema. It handles pagination, language selection, and hotel-to-review URL conversion automatically.

Who uses it What they scrape Booking.com for
Hotel revenue managers Monitor guest sentiment and recurring complaints across their own properties.
Market researchers Compare review scores and keywords for competing hotels in a destination.
Data analysts Build a dataset of verified stay reviews for sentiment analysis or pricing models.
Travel bloggers Gather real guest opinions to support hotel roundups and destination guides.

What it does

This Actor collects Booking.com guest reviews from one or more hotel URLs and returns each review as a flat row with the score, title, body text, reviewer country, stay date, and photo URLs.

  • ๐Ÿ“Š Score filters: collect only Superb (9-10), Good (7-8.9), Average (5-6.9), or Poor (0-4.9) reviews, or set a custom minimum score.
  • ๐Ÿ“ธ Photo filter: restrict the run to reviews that include guest photos.
  • ๐ŸŒ Reviewer country filter: keep only reviews where the reviewer country contains a given string, like 'United'.
  • ๐Ÿ“… Date cutoff: stop collecting when reviews older than a chosen date appear, so you only get recent feedback.
  • ๐Ÿ”ข Per-hotel cap: set a maximum number of reviews to collect from each hotel URL in a single run.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Booking.com data

๐Ÿ“ˆ Monitor guest satisfaction.

A hotel revenue manager runs the Actor weekly on their property URL with a recent cutoff date to track score trends and spot new complaints in the review text.

๐Ÿจ Benchmark competing hotels.

A market researcher feeds in URLs for five rival hotels in the same city, filters to the last six months, and compares average scores and keyword frequency.

๐Ÿง  Train a sentiment model.

A data scientist collects 100,000 reviews across multiple score brackets, exports the body text and score to CSV, and uses it as labeled training data.

โœ๏ธ Write a data-backed travel guide.

A travel blogger scrapes reviews for a shortlist of hotels, filters for reviews with photos, and quotes real guest experiences in a 'best of' article.

Why choose this scraper

What you get
No official API Booking.com does not provide a public reviews API; this Actor reads the live site for you.
Fixed flat schema Every review lands as one row with the same columns, ready for analysis or a database.
Built-in filters Filter by score, date, reviewer country, and photo presence without post-processing.
Language support Request review pages in any language Booking.com supports, like en-gb, es, fr, or de.

How it compares

No other Store actor targets Booking.com the same way, so the honest comparison is with the alternatives teams actually weigh.

Booking.com Reviews Scraper Build it in-house By hand
Setup Run it now, zero config Days of engineering None, but hours per pull
When Booking.com changes Maintained for you You fix it You re-learn the page
Proxies, retries, anti-bot Built in Your problem Browser only
Output Fixed JSON schema, CSV/Excel export Whatever you build Copy-paste
Cost Pay per result Engineering time Analyst hours

Configure the run

Drive the Actor from one or more Booking.com hotel or reviews page URLs, and filters run as each review is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "startUrls": [
    {
      "url": "https://www.booking.com/reviews/us/hotel/the-plaza.en-gb.html"
    }
  ],
  "maxItems": 10
}

Only the popular results:

{
  "startUrls": [
    {
      "url": "https://www.booking.com/reviews/us/hotel/the-plaza.en-gb.html"
    }
  ],
  "maxItems": 200,
  "minScore": 10
}

Pricing

Pay-per-result: $0.03199 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $3.20
1,000 results $31.99
10,000 results $319.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Booking.com Reviews Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Booking.com through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/booking-com-reviews-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your start URLs point to real Booking.com hotel or reviews pages. Also check your filters: a very tight score range, a recent cutoff date, or a strict reviewer country string can exclude all reviews.

The Actor stops after only a few reviews.

Make sure maxItems and maxReviewsPerHotel are set high enough. If you are using a cutoffDate, the Actor stops as soon as it sees a review older than that date, which can happen early on the first page.

I am getting reviews in the wrong language.

Set the Language input field to the locale code you want, such as 'fr' for French or 'de' for German. The Actor requests the review page in that language.

The run is taking a long time.

Large maxItems values and many hotel URLs will increase run time. Try lowering maxItems or maxReviewsPerHotel, or use a cutoffDate to limit the pages the Actor must visit.

Some reviews are missing the reviewer country.

Booking.com does not always show the reviewer's country. If a review does not display it on the site, the field will be empty in your dataset.

FAQ

Question Answer
Can I scrape reviews from multiple hotels in one run? Yes. Add as many hotel or reviews page URLs as you need to the startUrls field. The Actor processes them one after another.
Does this Actor require a Booking.com login? No. It reads the public review pages that anyone can see in a browser. No account, password, or API key is needed.
What format are the dates in? The stay date and review date are returned as strings in the format shown on Booking.com. You can set a cutoff date in YYYY-MM-DD format to stop collecting older reviews.
Can I get only reviews that include photos? Yes. Enable the 'Only Reviews With Photos' checkbox and the Actor will skip any review that does not have guest photos attached.
How do I filter reviews by score? Use the Review Scores Filter to pick a band like 'Superb (9-10)', or set a custom minimum score with the Minimum Score field. Both filters can be combined.
What does the reviewer country filter do? It keeps only reviews where the reviewer's country contains the text you enter. For example, typing 'United' will match 'United States' and 'United Kingdom'.
How many reviews can I collect in one run? You can set the maximum up to 1,000,000 reviews. You can also cap the number of reviews per hotel with the Max Reviews Per Hotel field.
Can I choose the language of the review page? Yes. Set the Language field to a Booking.com locale code like en-gb, en-us, es, fr, or de. This changes the page chrome and any translated review text.
Does the Actor handle pagination automatically? Yes. It follows the 'next page' links on the reviews page until it hits your maxItems, maxReviewsPerHotel, or cutoffDate limit.
Can I export the data to Excel? Yes. After the run finishes, you can download the dataset as CSV, JSON, Excel, or XML directly from the Apify storage tab.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Booking.com B.V. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
startUrls array One or more Booking.com hotel or reviews page URLs. The tool automatically converts hotel URLs to the matching reviews page. [{"url":"https://www.booking.com/reviews
maxItems integer How many reviews to collect per run. 10
maxReviewsPerHotel integer Maximum reviews to collect from each hotel. not set
sortReviewsBy string (3 options) How to order the collected reviews. f_relevance
cutoffDate string Stop collecting when reviews older than this date are found. Works best with default (Relevance) sorting. Format: YYYY-MM-DD. not set
reviewScores array Only collect reviews within these score ranges. ["ALL"]
minScore number Only collect reviews with a score equal to or above this value (0-10). not set
onlyWithPhotos boolean When enabled, only collect reviews that include photos. false
reviewerCountryIncludes string Only collect reviews where the reviewer country contains this text (e.g., 'United' matches 'United States'). not set
language string Language for the review pages (e.g., en-gb, en-us, es, fr, de). en-gb

Pricing

from $23.99 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged once when the run starts. $0.005
Result Item Charged once per result collected. $0.02399 to $0.03199

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~booking-com-reviews-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Booking.com Reviews Scraper on Apify All scrapers