# Booking Scraper PRO (`khadinakbar/booking-scraper-pro`) Actor

Scrape Booking.com hotels & properties — prices, review scores, stars, location, amenities. MCP-ready.

- **URL**: https://apify.com/khadinakbar/booking-scraper-pro.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Travel, MCP servers, AI
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 property scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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 Scraper PRO

**Scrape [Booking.com](https://www.booking.com) hotels and properties at scale** — get **prices, guest review scores, star ratings, location, coordinates, room types, and amenities** as clean structured JSON. Search by destination, paste a Booking.com search URL, or drop in individual hotel URLs. Built for **AI agents (MCP-ready)**, travel-price analysts, and revenue managers.

Try it in seconds: type a city like **Amsterdam** into the **Destination search** field and run. You can download results as JSON, CSV, Excel, or HTML, schedule runs, call it via the Apify API, or wire it into Claude / ChatGPT through the Apify MCP server.

### What does Booking Scraper PRO do?

Booking Scraper PRO turns any Booking.com search into a structured dataset. Given a destination (and optional stay dates, occupancy, currency, and filters), it auto-paginates the Booking.com results pages and extracts every property card into a flat record. Optionally, it opens each property page to enrich the data with full descriptions, amenities, check-in/out times, and precise GPS coordinates.

It is the listings-and-prices companion to our [Booking.com Reviews Scraper](https://apify.com/khadinakbar/booking-reviews-scraper) — use this one for **property data and pricing**, and the reviews scraper for **guest reviews**.

### Why use Booking Scraper PRO?

- **Hotel price intelligence** — track nightly rates across a city or competitor set, in any currency.
- **Travel market research** — map supply, star distribution, and review scores for a destination.
- **Revenue management** — benchmark your property against neighbours on price and rating.
- **Lead lists** — build a list of hotels/properties in a region with location and contact context.
- **AI agents** — a clean, narrow tool an LLM can call to answer "find 4-star hotels in Rome under €200".

### How to use Booking Scraper PRO

1. Open the **Input** tab.
2. Type a **Destination search** (e.g. `Paris, France`) **or** paste Booking.com URLs into **Start URLs**.
3. (Optional) Set **Check-in** / **Check-out** dates for live nightly prices, plus **Adults**, **Rooms**, and **Currency**.
4. (Optional) Filter by **Minimum price**, **Maximum price**, or **Minimum star rating**.
5. Set **Max results** to control how many properties (and how much) you scrape.
6. Click **Start**. Download the dataset in JSON, CSV, or Excel when it finishes.

> Tip: leave proxy on the default **Apify Proxy**. It works on Booking.com with this actor's browser engine. If you have RESIDENTIAL access and hit blocks, switch the group in the proxy field.

### Input

| Field | Type | Description |
|-------|------|-------------|
| `search` | string | Destination to search, e.g. `Amsterdam`. Use this **or** `startUrls`. |
| `startUrls` | array | Booking.com search-results URLs or individual hotel URLs (auto-detected). |
| `checkIn` / `checkOut` | string | Stay dates `YYYY-MM-DD` for live nightly prices. |
| `adults` / `children` / `rooms` | integer | Occupancy. Defaults 2 / 0 / 1. |
| `currency` | string | ISO code for prices, e.g. `USD`, `EUR`, `GBP`. |
| `language` | string | Booking locale, e.g. `en-gb`, `de`, `fr`. |
| `minPrice` / `maxPrice` | integer | Nightly price filter in the selected currency. |
| `minStars` | integer | Minimum hotel star class (1–5). |
| `maxResults` | integer | Hard cap on properties scraped and billed (default 100). |
| `enrichDetails` | boolean | Open each property page for description, amenities, coordinates. |
| `proxyConfiguration` | object | Proxy settings. Defaults to Apify Proxy; RESIDENTIAL optional if you have access. |

#### Example input

```json
{
  "search": "Amsterdam",
  "checkIn": "2026-07-10",
  "checkOut": "2026-07-12",
  "adults": 2,
  "rooms": 1,
  "currency": "EUR",
  "minStars": 4,
  "maxResults": 50
}
````

### Output

Each property is one dataset record. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
{
  "name": "Hotel Example Amsterdam",
  "url": "https://www.booking.com/hotel/nl/example-amsterdam.html",
  "hotelId": "example-amsterdam",
  "reviewScore": 8.6,
  "reviewScoreWord": "Fabulous",
  "reviewCount": 1243,
  "stars": 4,
  "price": 178,
  "currency": "EUR",
  "priceText": "€178",
  "taxesAndFees": "+€25 taxes and charges",
  "address": "Centrum, Amsterdam, Netherlands",
  "city": "Amsterdam",
  "country": "Netherlands",
  "distanceFromCenter": "1.2 km from centre",
  "latitude": 52.3702,
  "longitude": 4.8952,
  "roomType": "Deluxe Double Room",
  "freeCancellation": true,
  "breakfastIncluded": false,
  "badges": ["Breakfast included options", "Genius discount"],
  "image": "https://cf.bstatic.com/...jpg",
  "checkInDate": "2026-07-10",
  "checkOutDate": "2026-07-12",
  "scrapedAt": "2026-06-18T05:00:00.000Z"
}
```

#### Data fields

| Field | Description |
|-------|-------------|
| `name`, `url`, `hotelId` | Property identity |
| `propertyType` | Hotel, apartment, etc. (with detail enrichment) |
| `reviewScore`, `reviewScoreWord`, `reviewCount` | Guest rating (0–10) |
| `stars` | Official hotel star class (1–5) |
| `price`, `currency`, `priceText`, `taxesAndFees` | Pricing |
| `address`, `city`, `country`, `distanceFromCenter` | Location |
| `latitude`, `longitude` | GPS coordinates |
| `roomType`, `bedConfig` | Room offered |
| `freeCancellation`, `breakfastIncluded`, `badges` | Deal flags |
| `image` | Primary photo URL |
| `description`, `amenities`, `checkInTime`, `checkOutTime` | Detail-enrichment fields |

### How much does it cost to scrape Booking.com?

Booking Scraper PRO uses **pay-per-event** pricing:

- **$0.005 per property** scraped (name, price, score, stars, location).
- **+$0.005 per property** only when **Enrich with property details** is on.
- **$0.00005** actor start fee per run.

So 25 properties cost about **$0.13** (listings only) or **$0.25** (with detail enrichment). Set **Max results** to control spend — cost is capped up front and printed in the run log.

### Tips and advanced options

- **Results per search:** Booking.com reliably returns its first results page (~25–40 properties). Setting **Max results** higher triggers best-effort infinite-scroll, but Booking throttles it.
- **For full-city coverage**, run several narrower searches instead of one huge one — split by neighbourhood, star class, or price band. This is faster, cheaper, and far more complete than scrolling one search.
- Set **Check-in/Check-out** for real bookable prices; without dates, prices are indicative.
- Leave **Enrich with property details** off for the fastest, cheapest listing runs.

### FAQ, disclaimer, and support

**Is scraping Booking.com legal?** This actor collects only publicly available data. You are responsible for how you use scraped data and for complying with Booking.com's Terms of Service and applicable laws (including GDPR). Do not scrape personal or copyrighted data you are not entitled to use.

**Why are some fields null?** Booking.com A/B-tests its layout constantly and not every property card exposes every field. The actor uses fallbacks but emits `null` rather than guessing.

**Which proxy should I use?** The default Apify Proxy works on Booking.com with this actor's browser engine. If you run very large jobs and start seeing blocks, switch to the RESIDENTIAL group (requires residential proxy access on your plan).

**Found a bug or need a field added?** Open an issue on the actor's **Issues** tab. Custom variants are available on request.

# Actor input Schema

## `search` (type: `string`):

Free-text destination to search on Booking.com, e.g. 'Amsterdam', 'Paris, France', or 'Bali'. Use this when you want every matching property for a place. Leave empty if you instead paste exact URLs in Start URLs. NOT a hotel name on its own — for one specific hotel paste its URL in Start URLs.

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

Booking.com search-results URLs or individual hotel URLs to scrape directly (e.g. 'https://www.booking.com/searchresults.html?ss=Rome' or 'https://www.booking.com/hotel/nl/jerome.html'). Use this when you already have a filtered Booking URL or specific hotels. Each item is auto-detected as a search page or a hotel page. NOT for non-Booking.com domains — those are skipped.

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

Check-in date in YYYY-MM-DD format, e.g. '2026-07-10'. Use together with Check-out to get live, date-specific room prices. If left empty, Booking.com returns indicative prices without a fixed stay. Must be paired with Check-out — a check-in alone is ignored by Booking.com.

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

Check-out date in YYYY-MM-DD format, e.g. '2026-07-12'. Must be after Check-in and paired with it for accurate nightly prices. If empty, prices are indicative only. NOT a number of nights — provide the actual calendar date.

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

Number of adult guests used to compute room availability and price, e.g. 2. Defaults to 2 when omitted. Affects which rooms and prices Booking.com returns. NOT the number of rooms — set that separately in Rooms.

## `children` (type: `integer`):

Number of child guests included in the occupancy, e.g. 0 or 2. Defaults to 0. Some properties price or filter differently when children are present. Does not set children ages (Booking.com assumes a default age).

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

Number of rooms requested, e.g. 1. Defaults to 1. Increasing this changes which properties have availability and their total price. NOT the same as guests — set guest counts in Adults and Children.

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

ISO currency code that prices are returned in, e.g. 'USD', 'EUR', 'GBP'. Defaults to USD. Booking.com converts displayed prices to this currency. Use a 3-letter code, not a symbol.

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

Booking.com locale that controls page language and the domain variant used, e.g. 'en-gb', 'en-us', 'de', 'fr'. Defaults to en-gb. Affects review wording and some field text. Use a Booking locale code, not a country name.

## `minPrice` (type: `integer`):

Lower bound for nightly price in the selected currency, e.g. 50. Leave empty for no minimum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs.

## `maxPrice` (type: `integer`):

Upper bound for nightly price in the selected currency, e.g. 300. Leave empty for no maximum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs.

## `minStars` (type: `integer`):

Filter to properties with at least this hotel-class star rating, 1-5 (e.g. 4 = 4 stars and up). Set 0 (default) for no star filter. This is the official property star class, NOT the guest review score (which is 0-10).

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

Hard cap on properties scraped and billed per search, e.g. 25. Defaults to 25 (Booking.com's first results page, which is rock-solid). Higher values trigger best-effort infinite-scroll to load more, but Booking throttles this — for guaranteed large datasets, run several narrower searches (by city area, star class, or price band). Lower it to control cost.

## `enrichDetails` (type: `boolean`):

When true, the actor opens each property page to add description, full amenities, check-in/out times, and precise coordinates. This is slower and adds a per-property detail charge. Leave false for fast listing-only scraping. Off by default.

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

Proxy settings. Defaults to Apify Proxy (datacenter), which works on Booking.com with the actor's browser engine. If you have RESIDENTIAL proxy access and hit blocks, switch the group here. Set a country for geo-specific pricing.

## Actor input object example

```json
{
  "search": "Paris, France",
  "startUrls": [],
  "checkIn": "2026-07-10",
  "checkOut": "2026-07-12",
  "adults": 2,
  "children": 0,
  "rooms": 1,
  "currency": "USD",
  "language": "en-gb",
  "minStars": 0,
  "maxResults": 25,
  "enrichDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `properties` (type: `string`):

No description

## `summary` (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 = {
    "search": "Amsterdam"
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/booking-scraper-pro").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 = { "search": "Amsterdam" }

# Run the Actor and wait for it to finish
run = client.actor("khadinakbar/booking-scraper-pro").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 '{
  "search": "Amsterdam"
}' |
apify call khadinakbar/booking-scraper-pro --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking Scraper PRO",
        "description": "Scrape Booking.com hotels & properties — prices, review scores, stars, location, amenities. MCP-ready.",
        "version": "0.1",
        "x-build-id": "fnr9xy2xEYRIav8z6"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/khadinakbar~booking-scraper-pro/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-khadinakbar-booking-scraper-pro",
                "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/khadinakbar~booking-scraper-pro/runs": {
            "post": {
                "operationId": "runs-sync-khadinakbar-booking-scraper-pro",
                "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/khadinakbar~booking-scraper-pro/run-sync": {
            "post": {
                "operationId": "run-sync-khadinakbar-booking-scraper-pro",
                "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": {
                    "search": {
                        "title": "Destination search",
                        "type": "string",
                        "description": "Free-text destination to search on Booking.com, e.g. 'Amsterdam', 'Paris, France', or 'Bali'. Use this when you want every matching property for a place. Leave empty if you instead paste exact URLs in Start URLs. NOT a hotel name on its own — for one specific hotel paste its URL in Start URLs."
                    },
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Booking.com search-results URLs or individual hotel URLs to scrape directly (e.g. 'https://www.booking.com/searchresults.html?ss=Rome' or 'https://www.booking.com/hotel/nl/jerome.html'). Use this when you already have a filtered Booking URL or specific hotels. Each item is auto-detected as a search page or a hotel page. NOT for non-Booking.com domains — those are skipped.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Check-in date in YYYY-MM-DD format, e.g. '2026-07-10'. Use together with Check-out to get live, date-specific room prices. If left empty, Booking.com returns indicative prices without a fixed stay. Must be paired with Check-out — a check-in alone is ignored by Booking.com."
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Check-out date in YYYY-MM-DD format, e.g. '2026-07-12'. Must be after Check-in and paired with it for accurate nightly prices. If empty, prices are indicative only. NOT a number of nights — provide the actual calendar date."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of adult guests used to compute room availability and price, e.g. 2. Defaults to 2 when omitted. Affects which rooms and prices Booking.com returns. NOT the number of rooms — set that separately in Rooms.",
                        "default": 2
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Number of child guests included in the occupancy, e.g. 0 or 2. Defaults to 0. Some properties price or filter differently when children are present. Does not set children ages (Booking.com assumes a default age).",
                        "default": 0
                    },
                    "rooms": {
                        "title": "Rooms",
                        "minimum": 1,
                        "maximum": 30,
                        "type": "integer",
                        "description": "Number of rooms requested, e.g. 1. Defaults to 1. Increasing this changes which properties have availability and their total price. NOT the same as guests — set guest counts in Adults and Children.",
                        "default": 1
                    },
                    "currency": {
                        "title": "Currency",
                        "enum": [
                            "USD",
                            "EUR",
                            "GBP",
                            "AUD",
                            "CAD",
                            "INR",
                            "AED",
                            "JPY",
                            "CNY",
                            "BRL",
                            "MXN",
                            "ZAR",
                            "SGD",
                            "CHF",
                            "SEK",
                            "PLN",
                            "CZK",
                            "TRY"
                        ],
                        "type": "string",
                        "description": "ISO currency code that prices are returned in, e.g. 'USD', 'EUR', 'GBP'. Defaults to USD. Booking.com converts displayed prices to this currency. Use a 3-letter code, not a symbol.",
                        "default": "USD"
                    },
                    "language": {
                        "title": "Language / locale",
                        "enum": [
                            "en-gb",
                            "en-us",
                            "de",
                            "fr",
                            "es",
                            "it",
                            "nl",
                            "pt-br",
                            "pt-pt",
                            "pl",
                            "ru",
                            "ja",
                            "zh-cn",
                            "ar",
                            "tr"
                        ],
                        "type": "string",
                        "description": "Booking.com locale that controls page language and the domain variant used, e.g. 'en-gb', 'en-us', 'de', 'fr'. Defaults to en-gb. Affects review wording and some field text. Use a Booking locale code, not a country name.",
                        "default": "en-gb"
                    },
                    "minPrice": {
                        "title": "Minimum price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound for nightly price in the selected currency, e.g. 50. Leave empty for no minimum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs."
                    },
                    "maxPrice": {
                        "title": "Maximum price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound for nightly price in the selected currency, e.g. 300. Leave empty for no maximum. Applied as a Booking.com price filter on the search. Has no effect on direct hotel URLs."
                    },
                    "minStars": {
                        "title": "Minimum star rating",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Filter to properties with at least this hotel-class star rating, 1-5 (e.g. 4 = 4 stars and up). Set 0 (default) for no star filter. This is the official property star class, NOT the guest review score (which is 0-10).",
                        "default": 0
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on properties scraped and billed per search, e.g. 25. Defaults to 25 (Booking.com's first results page, which is rock-solid). Higher values trigger best-effort infinite-scroll to load more, but Booking throttles this — for guaranteed large datasets, run several narrower searches (by city area, star class, or price band). Lower it to control cost.",
                        "default": 25
                    },
                    "enrichDetails": {
                        "title": "Enrich with property details",
                        "type": "boolean",
                        "description": "When true, the actor opens each property page to add description, full amenities, check-in/out times, and precise coordinates. This is slower and adds a per-property detail charge. Leave false for fast listing-only scraping. Off by default.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Defaults to Apify Proxy (datacenter), which works on Booking.com with the actor's browser engine. If you have RESIDENTIAL proxy access and hit blocks, switch the group here. Set a country for geo-specific pricing.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
