# Booking.com Hotel Scraper - Prices, Ratings & Amenities (`thirdwatch/booking-hotel-scraper`) Actor

Scrape Booking.com hotel search results: names, prices, ratings, reviews, location, stars, amenities, distance from center. Supports destination, date, and guest filters.

- **URL**: https://apify.com/thirdwatch/booking-hotel-scraper.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** Travel, Other
- **Stats:** 12 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.80 / 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.

- **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.com Hotel Scraper

> **Thirdwatch portfolio:** 5K users across 88 public Actors, 2M+ records delivered, and >99% run success. [Explore all Thirdwatch Actors](https://apify.com/thirdwatch).

> Scrape Booking.com hotel search results — names, nightly prices, guest ratings, review counts, star ratings, amenities, and distance from center.

### What you get

Hotel listing data from Booking.com for any destination and date range. Search by city and check-in/check-out dates, then get structured hotel details including price per night, star rating, guest review score, number of reviews, amenities, location, and the Booking.com URL for each property.

### Output fields

| Field | Description |
|-------|-------------|
| `hotel_name` | Hotel name |
| `price` | Price per night (formatted with currency) |
| `rating` | Guest review score (0-10 scale) |
| `reviews_count` | Number of guest reviews |
| `stars` | Hotel star rating (1-5) |
| `location` | Hotel location (city, neighborhood, or country) |
| `distance_from_center` | Distance from city center |
| `amenities` | Available amenities (e.g., Free WiFi, Pool, Restaurant) |
| `url` | Booking.com hotel page URL |

### Example output

```json
{
    "hotel_name": "Hotel Grand Palace",
    "price": "$120",
    "rating": 8.7,
    "reviews_count": 3200,
    "stars": 4,
    "location": "Paris, France",
    "distance_from_center": "0.5 km",
    "amenities": ["Free WiFi", "Pool", "Restaurant"],
    "url": "https://www.booking.com/hotel/fr/grand-palace.html"
}
```

### Input parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `destination` | Yes | City or destination (e.g., "London", "Paris", "New York", "Tokyo"). |
| `checkinDate` | Yes | Check-in date in `YYYY-MM-DD` format. |
| `checkoutDate` | Yes | Check-out date in `YYYY-MM-DD` format. |
| `adults` | No | Number of adult guests (1-10). Default `2`. |
| `maxResults` | No | Maximum hotels to extract (1-500). Default `5`. |
| `proxyConfiguration` | No | Proxy settings. Leave default for best results. |

### Use cases

- **Travel agencies**: Compare hotel prices across destinations and dates for client quotes.
- **Revenue managers**: Track competitor nightly rates, occupancy signals, and amenity positioning.
- **Travel-tech startups**: Power hotel comparison features without paying for hotel-metasearch APIs.
- **Market researchers**: Analyse hospitality pricing trends by city, star class, and season.
- **Corporate travel**: Build custom internal hotel lists with negotiated-rate benchmarking.

### Pricing

Pay-per-result pricing. Tiered discounts apply automatically based on usage volume.

| Tier | Price per result |
|------|------------------|
| FREE | $0.008 |
| BRONZE | $0.006 |
| SILVER | $0.005 |
| GOLD | $0.004 |

### Limitations

- Prices reflect the dates and party size you pass — a different date range returns different prices.
- Live availability changes continuously; rates captured at run-time can move within minutes.
- Some smaller or newly-listed hotels have incomplete amenity, star, or distance data on Booking.com itself.
- The scraper returns search-results-page fields. Per-hotel deep data (room types, full photo gallery, cancellation policies) is not extracted.
- Non-English destinations return localized hotel names as Booking.com presents them.

### Compared to alternatives

- **vs. voyager/booking-scraper** (~$7/1K results): Our $4-$8/1K tiered pricing is competitive, with simpler input (just destination + dates) and a stable field schema.
- **vs. Booking.com Affiliate API**: The affiliate API is approval-gated and rate-limited; this actor works out of the box for ad-hoc research and internal tools.

Pairs well with [TripAdvisor Scraper](https://apify.com/thirdwatch/tripadvisor-scraper?fpr=9m2cd6) and [Google Maps Scraper](https://apify.com/thirdwatch/google-maps-scraper?fpr=9m2cd6) for complete hospitality coverage.

### FAQ

**Can I search hotels outside the US or Europe?**
Yes. Any destination Booking.com itself supports works — just pass the city or country name as `destination`.

**Does the price include taxes and fees?**
Booking.com's display price typically shows the base nightly rate. Taxes and fees depend on property and jurisdiction and are not normalized in this output.

**Can I get room-level detail?**
Not from this actor. This is a search-results scraper. Room types, bed configurations, and cancellation policies require opening each property page.

**How fresh is the data?**
Pulled live at run time — as current as Booking.com's own search page.

Last verified: 2026-04

More scrapers at [thirdwatch.dev](https://thirdwatch.dev).

# Actor input Schema

## `destination` (type: `string`):

City or destination to search for hotels. Examples: 'London', 'Paris', 'New York', 'Tokyo'.

## `checkinDate` (type: `string`):

Check-in date in YYYY-MM-DD format.

## `checkoutDate` (type: `string`):

Check-out date in YYYY-MM-DD format.

## `adults` (type: `integer`):

Number of adult guests.

## `maxResults` (type: `integer`):

Maximum number of hotels to scrape.

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

Proxy settings. Leave default for best results.

## Actor input object example

```json
{
  "destination": "London",
  "checkinDate": "2026-12-01",
  "checkoutDate": "2026-12-03",
  "adults": 2,
  "maxResults": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "destination": "London",
    "checkinDate": "2026-12-01",
    "checkoutDate": "2026-12-03",
    "adults": 2,
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/booking-hotel-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 = {
    "destination": "London",
    "checkinDate": "2026-12-01",
    "checkoutDate": "2026-12-03",
    "adults": 2,
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("thirdwatch/booking-hotel-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 '{
  "destination": "London",
  "checkinDate": "2026-12-01",
  "checkoutDate": "2026-12-03",
  "adults": 2,
  "maxResults": 5
}' |
apify call thirdwatch/booking-hotel-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/NwM9DzyaLxRcRMuVB/builds/d82tuUZ3y2isBQjh2/openapi.json
