Booking Reviews Scraper avatar

Booking Reviews Scraper

Pricing

from $1.66 / 1,000 review saveds

Go to Apify Store
Booking Reviews Scraper

Booking Reviews Scraper

Export available public Booking.com guest reviews from hotel or review URLs, with review text, ratings and visible stay details for analysis.

Pricing

from $1.66 / 1,000 review saveds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

7 days ago

Last modified

Share

Export available public Booking.com guest reviews from hotel or review URLs into a dataset for CSV, JSON, Excel or API use. Get review text, ratings and visible stay details for guest-feedback analysis. Only the loaded review page is processed, so results are not a complete review history.

Quick start

Paste a public hotel or review URL, choose a small review limit, and start the Actor. Open the dataset to inspect and export available reviews.

{
"startUrls": [{ "url": "https://www.booking.com/reviews/us/hotel/chicago-t.html" }],
"maxReviews": 10
}

A URL without usable review text produces no review rows. Check the run's RUN_SUMMARY record for per-input reasons. An empty result does not establish that the property is private or deleted.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

Ready-to-run examples

Choose a public example to see its settings before starting a run:

What you get

  • Written guest feedback: visible review titles and text, with separate positive and negative comments when available.
  • Rating and stay context: visible scores, source date text, room or traveler labels and property replies when exposed.
  • Traceable exports: the input hotel URL, collection time and a separate run summary with per-input counts and reasons.

Only the loaded review page is processed. Optional details stay empty when the source does not provide them.

Who is it for?

  • Hotel teams examining recurring guest complaints and positive feedback.
  • Hospitality analysts comparing visible review text and ratings across properties.
  • Automation teams sending review exports into dashboards or text-analysis workflows.

Guest-feedback workflows

  • Review recurring guest feedback. Collect a bounded sample from a public hotel or review URL, then read positiveText, negativeText and reviewTitle alongside available scores. Your team or assistant can group the written comments into themes. The Actor exports text rather than assigning sentiment scores.
  • Compare property samples. Supply a few hotel URLs and keep hotelUrl with each review when grouping the export. The review cap applies across all inputs, so an earlier URL can use the allowance before later URLs are reached. These loaded-page samples do not establish overall satisfaction or complete review coverage.
  • Prepare a feedback sheet. Retain the original review and stay-date text with the hotel URL and collection time. These dates are not normalized, the locale is not detected review language, and generated reviewId values may change between runs. Do not use them as a reliable automatic change history.

Input settings

SettingJSON keyPurpose
Hotel or review URLsstartUrlsRequired list of public Booking.com URLs.
Maximum reviewsmaxReviewsTotal cap across all URLs, default 10, range 1–1000.
Sort ordersortSource-page order. Other accepted values do not reorder reviews.
Language / localelanguageBrowser locale hint, not a review-language filter.
Proxy configurationproxyConfigurationConnection settings. See field help for defaults and choices.

Example inputs

Use the Quick start input as a small first run. Adjust the fields described above for your own data.

Output data

One dataset row represents one usable review, with title or review text. Missing details are null. This is a synthetic shape-only example, not an observed review or guaranteed field coverage:

{
"hotelUrl": "https://www.booking.com/reviews/us/hotel/chicago-t.html",
"hotelName": null,
"reviewId": "https://www.booking.com/reviews/us/hotel/chicago-t.html#review-1",
"reviewUrl": null,
"reviewTitle": "Example title",
"reviewText": "Example review text",
"positiveText": "Example review text",
"negativeText": null,
"score": null,
"maxScore": 10,
"reviewDate": null,
"stayDate": null,
"roomType": null,
"travelerType": null,
"reviewerName": null,
"reviewerCountry": null,
"language": null,
"hotelReply": null,
"scrapedAt": "2026-10-24T00:00:00.000Z"
}
FieldsMeaning
hotelUrl, hotelNameInput URL and available page heading/title.
reviewIdSource reference or generated URL/index identifier. Not guaranteed stable across runs.
reviewUrlCurrently null. Direct review links are not extracted.
reviewTitle, reviewTextVisible title and combined positive/negative text, or title when no body is available.
positiveText, negativeTextSeparate liked/disliked text when visible.
score, maxScoreVisible rating and score scale (default scale 10).
reviewDate, stayDateSource date text or stay-length text. Not normalized dates.
roomType, travelerTypeVisible room/trip context.
reviewerName, reviewerCountryPublic reviewer details when present.
languageInput locale hint, not detected review language.
hotelReplyProperty reply when available.
scrapedAtExtraction timestamp.

The completed-run RUN_SUMMARY record contains saved, a run reason, and inputs with each input's index, URL, saved count and reason. Reasons distinguish unknown availability with no review cards, zero usable reviews, successful extraction, and inputs not processed because the total limit was reached. These status details are not review dataset rows.

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

The Start (start) event applies once at the beginning of a run, including runs with no reviews. Review saved (item) applies per extracted review saved. Empty outcomes add no review-item event.

See the live Pricing tab for current rates.

Tips for best results

  • Start with one URL and a small cap. Inspect ten reviews before increasing maxReviews, which limits the entire run rather than each hotel separately.
  • Check the loaded page's content. Use a public hotel or review URL with visible review text. The Actor does not follow further review pages.
  • Keep positive and negative comments separate. Use the available text fields when preparing a feedback sheet, and retain the hotel URL for context.
  • Inspect the run summary. Review saved counts and reasons for each URL before comparing properties. Missing rows are not proof that a property has no reviews.

Limits and caveats

  • One loaded page per input. No pagination, date filtering or score sorting is provided. Other accepted sort values do not reorder the reviews.
  • Empty pages and failures are different. Redirects, interstitials, locale differences and unavailable review pages can yield empty results, while useful rows from other inputs are retained. Execution, configuration and essential storage failures still fail the run rather than being reported as empty results.
  • Review details can be missing. Dates and stay details are source text, not normalized dates. language is the input locale hint, not a detected review language. Direct review links are not extracted.
  • Identifiers may change. A generated URL/index reviewId is not guaranteed stable across runs. The Actor does not provide built-in sentiment scores, alerts or change detection.
  • Public pages only. Booking.com accounts, cookies and login-only content are not used. This is not an official Booking.com API, and the result is not a complete review history.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~booking-reviews-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"startUrls": [
{
"url": "https://www.booking.com/reviews/us/hotel/chicago-t.html"
}
],
"maxReviews": 10
}
JSON

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/booking-reviews-scraper').call({
"startUrls": [
{
"url": "https://www.booking.com/reviews/us/hotel/chicago-t.html"
}
],
"maxReviews": 10
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/booking-reviews-scraper').call(run_input={'startUrls': [{'url': 'https://www.booking.com/reviews/us/hotel/chicago-t.html'}], 'maxReviews': 10})
print(client.dataset(run['defaultDatasetId']).list_items().items)

MCP and AI agents

You can ask your AI assistant to collect data with Booking Reviews Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Booking Reviews Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/booking-reviews-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Booking Reviews Scraper by Fetch Cat, or give it the identifier fetch_cat/booking-reviews-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

Give your assistant the inputs it needs along with a request like one of these:

  • “Use Fetch Cat's Booking Reviews Scraper to collect up to ten reviews from the public Booking.com hotel URL I provide. Show positive and negative text, visible scores and the hotel link, then help me group the written feedback into themes.”
  • “Collect up to twenty reviews in total from the two Booking.com review URLs I provide. Group the returned feedback by hotel, show how many rows came from each input, and explain any empty or unprocessed input in the summary.”
  • “Get up to ten reviews from this public Booking.com review URL and prepare a sheet with title, text, room type and original stay-date text. Leave unavailable values blank and do not infer a date or review language.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Is this a Booking reviews API alternative?

It is an Apify batch export of available public reviews, not an official Booking.com API or a guaranteed full-history service.

Can I export Booking reviews to CSV or Excel?

Yes. Export the run's dataset in Apify or retrieve its records through the API.

Why are there no reviews or some empty fields?

The loaded page may expose no usable reviews, or individual details may be absent. Check RUN_SUMMARY. Missing data is not replaced with invented guest feedback.

Do I need a Booking.com login?

No. Login-only content is not supported.

Does the sentiment example analyze or monitor reviews?

No. It saves available review text for downstream analysis. No built-in sentiment scores, alerts or change detection are provided.

  • Booking.com Hotels Scraper — Collect public Booking.com hotel listings and available property metadata from destinations or hotel URLs.
  • Airbnb Reviews Scraper — Collect public Airbnb guest-review text, dates and available reviewer details or host responses from listing URLs.
  • Agoda Reviews Scraper — Collect public Agoda hotel review text, ratings and available traveler details.
  • Trip.com Hotels Scraper — Collect public Trip.com destination hotel listings with available ratings, displayed prices and source links.
  • Trustpilot Reviews Scraper — Collect public Trustpilot company-review text, ratings and visible business replies.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥