# Booking.com Hotel Detail & Reviews Scraper (`axlymxp/booking-hotel-detail-scraper`) Actor

Fetch full Booking.com hotel details by ID — address, star rating, review scores & categories, house rules, room rates for your dates, sustainability and guest reviews, via the official Booking.com Android API. Pay per hotel.

- **URL**: https://apify.com/axlymxp/booking-hotel-detail-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Booking.com Hotel Detail & Reviews Scraper

Fetch **full Booking.com hotel details** by ID — address, star rating, review scores and category breakdown, house rules, room types and rates for your dates, sustainability info, and guest reviews — using the **official Booking.com Android app API**. No HTML scraping, no browser, no login.

Ideal for enriching a list of hotel IDs (for example, from a Booking.com search scraper) with deep, structured detail per property.

### What you get

| Field                                                                    | Description                                                                            |
| ------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- |
| `hotel_id`, `name`, `url`                                                | Property identifiers                                                                   |
| `star_rating`, `star_type`                                               | Official star rating                                                                   |
| `review_score`, `review_count`                                           | Aggregate guest score                                                                  |
| `category_scores`                                                        | Per-category scores (staff, cleanliness, wifi, breakfast, ...)                         |
| `accommodation_type`                                                     | Property type                                                                          |
| `address`, `city`, `country`, `zip_code`, `latitude`, `longitude`, `ufi` | Location                                                                               |
| `currency`                                                               | Property currency                                                                      |
| `checkin_from`, `checkin_until`, `checkout_from`, `checkout_until`       | House-rule times                                                                       |
| `is_sustainable`, `host_name`, `main_photo`                              | Extra property info                                                                    |
| `rooms`                                                                  | Room types with price, occupancy, meal plan, refundability (when `includeRooms` is on) |
| `review_summary`, `review_scores_breakdown`, `featured_reviews`          | Reviews (when `includeReviews` is on)                                                  |

### Use cases

- Enrich hotel IDs from a search scraper with full detail
- Monitor room rates for specific properties over time
- Build a hotel comparison or metasearch dataset
- Track review scores and category ratings
- Feed AI travel assistants with structured hotel data

### Input

| Parameter        | Type    | Description                                                                                           |
| ---------------- | ------- | ----------------------------------------------------------------------------------------------------- |
| `hotels`         | array   | Required. Numeric Booking hotel IDs (e.g. `"1106729"`) or URLs with an embedded `hotel_id` parameter. |
| `checkIn`        | string  | Check-in `YYYY-MM-DD` for room rates (default: 14 days out).                                          |
| `checkOut`       | string  | Check-out `YYYY-MM-DD` (default: 16 days out).                                                        |
| `adults`         | integer | Guests for room pricing (default 2).                                                                  |
| `rooms`          | integer | Rooms for room pricing (default 1).                                                                   |
| `includeRooms`   | boolean | Fetch room types and prices (default `true`).                                                         |
| `includeReviews` | boolean | Fetch review breakdown and featured reviews (default `true`).                                         |
| `currency`       | string  | ISO currency code (default `USD`).                                                                    |
| `language`       | string  | Language code (default `en-us`).                                                                      |

> **Note on hotel IDs:** Booking.com's canonical property URLs (`/hotel/cc/slug.html`) do **not** contain the numeric hotel id. Provide numeric IDs (for example from a Booking.com search scraper) for reliable results.

#### Example input

```json
{
    "hotels": ["1106729"],
    "checkIn": "2026-08-10",
    "checkOut": "2026-08-12",
    "adults": 2,
    "includeRooms": true,
    "includeReviews": true,
    "currency": "USD"
}
````

#### Example output row (truncated)

```json
{
    "hotel_id": 1106729,
    "name": "West Side YMCA",
    "star_rating": 3.0,
    "review_score": 6.7,
    "review_count": 14242,
    "category_scores": [
        { "name": "hotel_staff", "score": 7.4, "count": 14051 },
        { "name": "hotel_free_wifi", "score": 8.3, "count": 612 }
    ],
    "address": "5 West 63rd Street, Upper West Side, New York, NY 10023, United States",
    "city": "New York",
    "checkin_from": "15:00",
    "checkout_until": "11:00",
    "rooms": [
        {
            "name": "Private Bunk Bed Room with Shared Bathroom",
            "price_amount": 226.11,
            "price_currency": "USD",
            "refundable": false
        }
    ]
}
```

### Pricing

This actor uses **Pay Per Event** pricing:

- **Actor start:** $0.02 per run
- **Hotel result:** $0.006 per hotel pushed to the dataset

Fetching detail for 200 hotels costs about **$0.02 + 200 × $0.006 = $1.22**.

### Scheduling & integrations

Schedule regular runs to track rate and review-score changes, and export to Google Sheets, S3, webhooks, or a database via Apify integrations.

### Use with AI agents (MCP)

For live, on-demand access from Claude, Cursor, or your own agent, use the **Booking.com MCP Server** actor, which exposes `get_hotel` and `get_hotel_reviews` as MCP tools.

### FAQ

**Where do I get hotel IDs?** From a Booking.com search scraper, or from a Booking URL containing an explicit `hotel_id=` parameter.

**Do I need a proxy?** No. The app API works from datacenter IPs.

**Is login required?** No. Authentication is anonymous via the official app device-token flow.

**Can it search hotels by city?** This actor fetches detail per hotel ID. For attractions search by destination, use the **Booking.com Attractions Scraper**.

### Disclaimer

This actor collects publicly available data for legitimate use cases such as research and price comparison. You are responsible for how you use the collected data, including compliance with Booking.com's terms and applicable laws.

# Actor input Schema

## `hotels` (type: `array`):

List of Booking.com hotels to fetch. Each item should be a numeric Booking hotel id (e.g. '1106729') or a URL containing an explicit hotel\_id parameter. Note: canonical Booking property URLs (/hotel/cc/slug.html) do NOT contain the numeric id — provide numeric ids for reliable results.

## `checkIn` (type: `string`):

Check-in date in YYYY-MM-DD format (used for room rates). Defaults to 14 days from today.

## `checkOut` (type: `string`):

Check-out date in YYYY-MM-DD format. Must be after check-in. Defaults to 16 days from today.

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

Number of guests for room-rate pricing.

## `rooms` (type: `integer`):

Number of rooms for room-rate pricing.

## `includeRooms` (type: `boolean`):

Fetch available room types and prices for the given dates (one extra request per hotel).

## `includeReviews` (type: `boolean`):

Fetch the review score breakdown, review summary and featured guest reviews (one extra request per hotel).

## `currency` (type: `string`):

ISO 4217 currency code for room prices (e.g. USD, EUR, GBP).

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

Language code for localized names and text (e.g. en-us, de, fr).

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

Optional proxy configuration. The Booking.com app API works from datacenter IPs, so a proxy is usually not required.

## Actor input object example

```json
{
  "hotels": [
    "1106729"
  ],
  "checkIn": "2026-08-10",
  "checkOut": "2026-08-12",
  "adults": 2,
  "rooms": 1,
  "includeRooms": true,
  "includeReviews": true,
  "currency": "USD",
  "language": "en-us",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "hotels": [
        "1106729"
    ],
    "checkIn": "2026-08-10",
    "checkOut": "2026-08-12"
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/booking-hotel-detail-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 = {
    "hotels": ["1106729"],
    "checkIn": "2026-08-10",
    "checkOut": "2026-08-12",
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/booking-hotel-detail-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 '{
  "hotels": [
    "1106729"
  ],
  "checkIn": "2026-08-10",
  "checkOut": "2026-08-12"
}' |
apify call axlymxp/booking-hotel-detail-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking.com Hotel Detail & Reviews Scraper",
        "description": "Fetch full Booking.com hotel details by ID — address, star rating, review scores & categories, house rules, room rates for your dates, sustainability and guest reviews, via the official Booking.com Android API. Pay per hotel.",
        "version": "1.0",
        "x-build-id": "xF5kk0gECpaeKPg9G"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/axlymxp~booking-hotel-detail-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-axlymxp-booking-hotel-detail-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/axlymxp~booking-hotel-detail-scraper/runs": {
            "post": {
                "operationId": "runs-sync-axlymxp-booking-hotel-detail-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/axlymxp~booking-hotel-detail-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-axlymxp-booking-hotel-detail-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",
                "required": [
                    "hotels"
                ],
                "properties": {
                    "hotels": {
                        "title": "Hotels",
                        "type": "array",
                        "description": "List of Booking.com hotels to fetch. Each item should be a numeric Booking hotel id (e.g. '1106729') or a URL containing an explicit hotel_id parameter. Note: canonical Booking property URLs (/hotel/cc/slug.html) do NOT contain the numeric id — provide numeric ids for reliable results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Check-in date in YYYY-MM-DD format (used for room rates). Defaults to 14 days from today."
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Check-out date in YYYY-MM-DD format. Must be after check-in. Defaults to 16 days from today."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of guests for room-rate pricing.",
                        "default": 2
                    },
                    "rooms": {
                        "title": "Rooms",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of rooms for room-rate pricing.",
                        "default": 1
                    },
                    "includeRooms": {
                        "title": "Fetch room rates",
                        "type": "boolean",
                        "description": "Fetch available room types and prices for the given dates (one extra request per hotel).",
                        "default": true
                    },
                    "includeReviews": {
                        "title": "Fetch guest reviews",
                        "type": "boolean",
                        "description": "Fetch the review score breakdown, review summary and featured guest reviews (one extra request per hotel).",
                        "default": true
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "ISO 4217 currency code for room prices (e.g. USD, EUR, GBP).",
                        "default": "USD"
                    },
                    "language": {
                        "title": "Language",
                        "type": "string",
                        "description": "Language code for localized names and text (e.g. en-us, de, fr).",
                        "default": "en-us"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy configuration. The Booking.com app API works from datacenter IPs, so a proxy is usually not required.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
