# Booking Reviews Scraper (`fetch_cat/booking-reviews-scraper`) Actor

Export public Booking.com guest reviews with ratings, dates, room details, traveler type, reviewer country, positives, negatives, and replies.

- **URL**: https://apify.com/fetch\_cat/booking-reviews-scraper.md
- **Developed by:** [Hanna Nosova](https://apify.com/fetch_cat) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.66 / 1,000 review saveds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Booking Reviews Scraper

Export public Booking.com guest reviews from hotel and destination review pages to CSV, JSON, Excel, or API workflows.

Use this Actor to monitor hotel reputation, analyze guest feedback, compare traveler sentiment, or feed public Booking.com reviews into BI and support workflows.

### Who is it for?

- Hotel operators tracking guest satisfaction and recurring issues.
- Travel reputation teams exporting public guest feedback for reporting.
- OTAs, tourism researchers, and analysts comparing review signals by property or market.
- Automation teams feeding Booking.com review datasets into dashboards, alerts, or LLM workflows.

### Input recipes

- **Smoke test**: one Booking.com hotel URL, `maxReviews: 10`.
- **Hotel monitoring**: add one or more public Booking.com hotel pages and schedule repeat runs.
- **Destination research**: add public Booking.com review pages for a city or market and cap saved reviews.

### Example input

```json
{
  "startUrls": [
    { "url": "https://www.booking.com/hotel/us/the-new-yorker.html" }
  ],
  "maxReviews": 10,
  "sort": "source",
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
```

### Example output

```json
{
  "hotelUrl": "https://www.booking.com/hotel/us/the-new-yorker.html",
  "hotelName": "The New Yorker, Whitefish (updated prices 2026)",
  "reviewId": "https://www.booking.com/hotel/us/the-new-yorker.html#review-1",
  "reviewTitle": null,
  "reviewText": "Guest review text from Booking.com...",
  "score": 9.0,
  "reviewerName": null,
  "reviewerCountry": null,
  "scrapedAt": "2026-07-12T08:30:00.000Z"
}
```

### What data can you extract?

| Field | Description |
| --- | --- |
| `hotelUrl` | Source Booking.com hotel or review URL. |
| `hotelName` | Hotel or page title found on Booking.com. |
| `reviewId` | Stable review row identifier when available or generated from the source URL. |
| `reviewUrl` | Direct review URL when available. |
| `reviewTitle` | Review title when visible. |
| `reviewText` | Combined public guest review text. |
| `positiveText` | Positive part of the review when Booking.com separates it. |
| `negativeText` | Negative part of the review when Booking.com separates it. |
| `score` | Review score when visible. |
| `maxScore` | Maximum score scale, usually 10. |
| `reviewDate` | Date the review was published. |
| `stayDate` | Stay month/date shown by Booking.com. |
| `roomType` | Room type mentioned on the review. |
| `travelerType` | Traveler type or trip context. |
| `reviewerName` | Reviewer name when visible. |
| `reviewerCountry` | Reviewer country when visible. |
| `language` | Locale hint used for the run. |
| `hotelReply` | Hotel response when visible. |
| `scrapedAt` | ISO timestamp when the review was saved. |

### Input configuration

| Setting | JSON key | Use it for | Example |
| --- | --- | --- | --- |
| Booking.com URLs | `startUrls` | Public hotel or review pages to scrape. | `[{"url":"https://www.booking.com/hotel/us/the-new-yorker.html"}]` |
| Maximum reviews | `maxReviews` | Cap saved reviews and control spend. | `10` |
| Sort order | `sort` | Prefer source default, recent, or score-based ordering when available. | `source` |
| Language / locale | `language` | Locale hint for Booking.com review pages. | `en-US` |
| Proxy configuration | `proxyConfiguration` | Use Apify Proxy; residential is recommended for Booking.com. | `{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}` |

### Pricing

| Tier | Run start | Review saved |
| --- | ---: | ---: |
| Free | `$0.010` | `$0.00318` |
| Bronze | `$0.010` | `$0.00276` |
| Silver | `$0.010` | `$0.00216` |
| Gold | `$0.010` | `$0.00166` |
| Platinum | `$0.010` | `$0.00111` |
| Diamond | `$0.010` | `$0.00077` |

### Tips and limits

- Start with `maxReviews: 10` for the first run.
- Use only public Booking.com pages; the Actor does not use accounts, cookies, or private credentials.
- Large runs may need residential proxy bandwidth, so scale gradually after checking output quality.

### API usage

Node.js:

```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/hotel/us/the-new-yorker.html' }],
  maxReviews: 10,
});
console.log(run.defaultDatasetId);
```

Python:

```python
from apify_client import ApifyClient
client = ApifyClient('APIFY_TOKEN')
run = client.actor('fetch_cat/booking-reviews-scraper').call(run_input={
    'startUrls': [{'url': 'https://www.booking.com/hotel/us/the-new-yorker.html'}],
    'maxReviews': 10,
})
print(run['defaultDatasetId'])
```

cURL:

```bash
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~booking-reviews-scraper/runs?token=APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"startUrls":[{"url":"https://www.booking.com/hotel/us/the-new-yorker.html"}],"maxReviews":10}'
```

### MCP / agent usage

Use the Apify MCP server with `?tools=fetch_cat/booking-reviews-scraper` to let agents run Booking.com review exports and retrieve datasets.

Claude CLI add command:

```bash
claude mcp add apify-booking-reviews https://mcp.apify.com/?tools=fetch_cat/booking-reviews-scraper
```

JSON config block:

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

Example prompts:

- "Run Booking Reviews Scraper for this Booking.com hotel URL and summarize low-score complaints."
- "Export 25 public Booking.com reviews and return the dataset URL."

### Legality and responsible use

This Actor extracts publicly available Booking.com review information. Use it responsibly, respect Booking.com terms, avoid collecting personal data you do not need, and comply with privacy laws and internal retention policies.

### Related actors

- [Airbnb Reviews Scraper](https://apify.com/fetch_cat/airbnb-reviews-scraper)
- [Agoda Reviews Scraper](https://apify.com/fetch_cat/agoda-reviews-scraper)
- [Trip.com Hotels Scraper](https://apify.com/fetch_cat/trip-com-hotels-scraper)

### FAQ

**Do I need a Booking.com login?** No. This Actor is designed for public pages only.

**Can I export the data?** Yes. Apify datasets export to CSV, JSON, Excel, XML, and API.

**Why use a proxy?** Booking.com may challenge direct traffic; Apify Proxy helps runs behave like normal browsing sessions.

### Support

Questions or issues? Open an issue on the Actor page in Apify Console and include:

- run ID
- input JSON
- reproducible public URL
- expected output
- actual output

# Actor input Schema

## `startUrls` (type: `array`):

Public Booking.com hotel pages or review pages to scrape guest reviews from.

## `maxReviews` (type: `integer`):

Maximum number of Booking.com guest reviews to save across all input URLs.

## `sort` (type: `string`):

Preferred Booking.com review sort order. The first version keeps the source default when sorting is not available.

## `language` (type: `string`):

Optional locale hint for Booking.com pages, for example en-US.

## `proxyConfiguration` (type: `object`):

Apify Proxy configuration. Residential proxy is recommended for Booking.com.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.booking.com/reviews/us/hotel/chicago-t.html"
    }
  ],
  "maxReviews": 10,
  "sort": "source",
  "language": "en-US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.booking.com/reviews/us/hotel/chicago-t.html"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fetch_cat/booking-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.booking.com/reviews/us/hotel/chicago-t.html" }] }

# Run the Actor and wait for it to finish
run = client.actor("fetch_cat/booking-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.booking.com/reviews/us/hotel/chicago-t.html"
    }
  ]
}' |
apify call fetch_cat/booking-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fetch_cat/booking-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/0eBVBI8pfnJVCMP84/builds/KDi4E6L6CvxKbRvwM/openapi.json
