# Booking.com Hotel Reviews Scraper (`scrapers_lat/booking-reviews-scraper`) Actor

Scrape Booking.com hotel guest reviews by property URL or name. Get reviewer, country, score, positive and negative text, room and traveler type, plus the property score and category breakdown.

- **URL**: https://apify.com/scrapers\_lat/booking-reviews-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Social media, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.75 / 1,000 results

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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

<!-- actor-banner -->
[![Booking.com Hotel Reviews Scraper](https://scrapers.lat/banners/booking-reviews-scraper.png)](https://console.apify.com/actors/ROrnvQTBO9cVcEwXr/input)
<!-- /actor-banner -->

## Booking.com Hotel Reviews Scraper

> Extract guest reviews from any Booking.com hotel: reviewer, country, score, what they liked and disliked, room and traveler type, plus the property score and 7 category ratings.

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Worldwide-blue)
![Maintained](https://img.shields.io/badge/Maintained-Yes-brightgreen)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)

<table><tr>
<td align="center"><strong>25 fields</strong><br>per record</td>
<td align="center"><strong>Worldwide</strong><br>coverage</td>
<td align="center"><strong>JSON / CSV / Excel</strong><br>output formats</td>
<td align="center"><strong>Updated</strong><br>2026-07-26</td>
</tr></table>

<br>

### What you get

Each record is one guest review, tagged with the property it belongs to and that property's aggregate scores, so every row is self contained for analysis.

- **imageUrl**: the reviewer avatar image
- **hotelName**: the property name
- **hotelUrl**: the Booking.com property page URL
- **hotelId**: the property identifier on Booking.com
- **reviewScore**: this guest's score from 0 to 10
- **reviewTitle**: the review headline, when the guest wrote one
- **positiveText**: what the guest liked
- **negativeText**: what the guest disliked, when present
- **reviewerName**: the reviewer first name (null when the review is anonymous)
- **reviewerCountryCode**: the reviewer country
- **isAnonymous**: whether the reviewer chose to stay anonymous
- **travelerType**: solo traveler, couple, family, group or business
- **tripType**: leisure or business
- **roomType**: the room the guest stayed in
- **reviewLanguage**: the review language code, when Booking tags one
- **reviewDate**: the date the review was submitted
- **reviewUrl**: the review reference on Booking.com
- **overallScore**: the property overall guest score
- **overallScoreWord**: the score label such as Superb or Very good
- **totalReviewsCount**: how many reviews the property has in total
- **scoreStaff**: category score for staff
- **scoreCleanliness**: category score for cleanliness
- **scoreComfort**: category score for comfort
- **scoreLocation**: category score for location
- **scoreValue**: category score for value for money
- **scoreFacilities**: category score for facilities
- **scoreWifi**: category score for free WiFi
- **observedAt**: when this review was last seen by the scraper

### Who is it for

| Use case | Who benefits |
|---|---|
| Track guest sentiment for a property over time | Hotel revenue and reputation managers |
| Benchmark a property against competitors | Hospitality analysts and consultants |
| Mine what guests praise and complain about | Hotel operations and product teams |
| Feed reviews into a sentiment or rating model | Data scientists and researchers |
| Build travel comparison and review content | Travel media and affiliate sites |

### Frequently Asked Questions

**Which hotels and countries does it cover?**
Any property listed on Booking.com, anywhere in the world. Point the scraper at a hotel by pasting its Booking.com URL, or type the hotel name and city and it finds the best matching property automatically.

**How many reviews can I get per hotel?**
The scraper returns the property's most relevant guest reviews along with the full aggregate score and the seven category ratings. Use maxReviews to cap how many reviews you want per property, and sortBy to order them by most relevant, newest, highest or lowest score.

**Can I filter reviews by language?**
Yes. Set reviewLanguage to a code like en, es or pt to keep only reviews written in that language. Booking does not tag a language on every review, so this filter applies to the reviews that carry one.

**What input does it accept?**
Provide one or more Booking.com hotel URLs, one or more "hotel name plus city" search terms, or both in the same run. Every property found is scraped and its reviews streamed to your dataset as they are collected.

**What happens when a property has no reviews or cannot be loaded?**
The scraper writes a small record with an error note and the source URL instead of failing the whole run, and it never charges for a property that returned no review. Fields that a given review does not include, such as a disliked comment or a headline, are left empty rather than guessed.

<!-- example-tasks -->
### Example use cases

Ready-to-run example tasks, each preconfigured for a common scenario. Open one and press run, or use it as a template.

<!-- /example-tasks -->

<!-- related-actors -->
### Related scrapers

Need data from the same space? Here are other scrapers we build and maintain:

- [Booking.com Hotels & Prices Scraper](https://apify.com/scrapers_lat/booking-hotels-scraper): Search Booking.com hotels with prices, scores and locations by destination
- [Trustpilot Company Reviews & Ratings Scraper](https://apify.com/scrapers_lat/trustpilot-scraper): Company reviews, star ratings and reviewer details from Trustpilot
- [Apple App Store Reviews & Ratings Scraper](https://apify.com/scrapers_lat/app-store-reviews-scraper): User reviews, ratings and versions from the Apple App Store
- [Google Play App Reviews & Ratings Scraper](https://apify.com/scrapers_lat/google-play-reviews-scraper): User reviews and ratings for any app on Google Play
- [Google Maps Business Leads & Contacts Scraper](https://apify.com/scrapers_lat/google-maps-scraper): Business listings, ratings and contact details from Google Maps
- [Reddit Posts & Comments Scraper](https://apify.com/scrapers_lat/reddit-scraper): Posts, comments and scores from any subreddit or thread

<!-- /related-actors -->

<!-- scrapers-lat-cta -->
### More scrapers at scrapers.lat

This actor is built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for Latin American and US public platforms: real estate, jobs, e-commerce, company registries and government data. Browse the full catalog, see live sample output for each one, or ask us for a custom scraper at [scrapers.lat](https://scrapers.lat).

---

> This actor is an independent tool and has no affiliation with Booking.com. It only accesses data that is publicly available on the platform. Use it in accordance with Booking.com's terms of service.

# Actor input Schema

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

Maximum number of guest reviews to collect for each property. Optional.
## `hotelUrls` (type: `array`):

One or more Booking.com hotel page URLs, for example https://www.booking.com/hotel/us/the-manhattan-club.html. Reviews are collected for each property.
## `searchTerms` (type: `array`):

Free text like "The Manhattan Club, New York" or "Hilton Barcelona". The scraper finds the best matching Booking.com property and collects its reviews.
## `sortBy` (type: `string`):

Order of the returned reviews.
## `reviewLanguage` (type: `string`):

Keep only reviews written in this language, using a code like en, es, pt, fr, de, it. Leave empty for all languages.

## Actor input object example

```json
{
  "maxReviews": 20,
  "hotelUrls": [
    "https://www.booking.com/hotel/us/the-manhattan-club.html"
  ],
  "sortBy": "most_relevant"
}
````

# Actor output Schema

## `results` (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 = {
    "maxReviews": 20,
    "hotelUrls": [
        "https://www.booking.com/hotel/us/the-manhattan-club.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/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 = {
    "maxReviews": 20,
    "hotelUrls": ["https://www.booking.com/hotel/us/the-manhattan-club.html"],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/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 '{
  "maxReviews": 20,
  "hotelUrls": [
    "https://www.booking.com/hotel/us/the-manhattan-club.html"
  ]
}' |
apify call scrapers_lat/booking-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking.com Hotel Reviews Scraper",
        "description": "Scrape Booking.com hotel guest reviews by property URL or name. Get reviewer, country, score, positive and negative text, room and traveler type, plus the property score and category breakdown.",
        "version": "0.1",
        "x-build-id": "Wf05gbnwOCkS3h0iu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapers_lat~booking-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapers_lat-booking-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapers_lat~booking-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapers_lat-booking-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapers_lat~booking-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapers_lat-booking-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxReviews": {
                        "title": "Max Reviews Per Property",
                        "minimum": 1,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Maximum number of guest reviews to collect for each property. Optional."
                    },
                    "hotelUrls": {
                        "title": "Booking.com Hotel URLs",
                        "type": "array",
                        "description": "One or more Booking.com hotel page URLs, for example https://www.booking.com/hotel/us/the-manhattan-club.html. Reviews are collected for each property.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchTerms": {
                        "title": "Hotel Name + Destination",
                        "type": "array",
                        "description": "Free text like \"The Manhattan Club, New York\" or \"Hilton Barcelona\". The scraper finds the best matching Booking.com property and collects its reviews.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "sortBy": {
                        "title": "Sort Reviews By",
                        "enum": [
                            "most_relevant",
                            "newest",
                            "highest_score",
                            "lowest_score"
                        ],
                        "type": "string",
                        "description": "Order of the returned reviews.",
                        "default": "most_relevant"
                    },
                    "reviewLanguage": {
                        "title": "Review Language",
                        "type": "string",
                        "description": "Keep only reviews written in this language, using a code like en, es, pt, fr, de, it. Leave empty for all languages."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
