# booking\_com\_property\_listings (`vagadro/booking-com-property-listings`) Actor

Scrape Booking.com search results without an API. Extract property name, address, guest\
ratings, review count, price with currency, most popular facilities, and full description for\
every listing. Export as JSON or CSV. Proxy support included.

- **URL**: https://apify.com/vagadro/booking-com-property-listings.md
- **Developed by:** [Vagadro](https://apify.com/vagadro) (community)
- **Categories:** Travel, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 results

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.com Scraper — Price, Ratings, Facilities & Description

Scrape Booking.com search results at scale. Extract detailed property data from any Booking.com search URL — no login or API key required.

> **More actors by this author:**
> - [Airbnb Listings Scraper](https://console.apify.com/actors/GVge7YfGl5SkaXAo8/source) — Extract price, ratings, amenities, GPS coordinates, and full descriptions from any Airbnb search URL.
> - [Google Maps Review Scraper](https://console.apify.com/actors/ejsM2UibLls8YaktM/source) — Extract reviews, ratings, and reviewer details from any Google Maps business listing.

---

### What does this actor do?

This actor takes a **Booking.com search URL** (with your desired location, dates, and filters already applied) and scrapes every property listing on the results page. It clicks through all "Load more results" pages automatically. For each property, it visits the detail page and extracts structured data you can export as **JSON or CSV**.

### Data extracted per property

| Field | Description | Example |
|---|---|---|
| **Title** | Property name as displayed on Booking.com | `Jardim a Mar` |
| **URL** | Direct link to the property page | `https://www.booking.com/hotel/in/jardim-a-mar...` |
| **Address** | Full property address from the detail page | `Agonda Beach, Near Church, 403702 Agonda, India` |
| **Ratings** | Guest review score out of 10 | `8.7` |
| **Reviews Count** | Total number of guest reviews | `730` |
| **Property Spec** | Room type, bed configuration, and availability note | `Budget Double Room · 1 large double bed · We have 7 left` |
| **Price** | Nightly price with currency symbol | `₹2599` |
| **Facilities** | Most popular facilities, pipe-separated | `Free WiFi \| Beachfront \| Restaurant \| Bar` |
| **Description** | Full property description text from the detail page | `Offering a massage parlour, Jardim a Mar...` |

### How to use

1. Go to [Booking.com](https://www.booking.com/) and search for your desired location, dates, guest count, and any other filters.
2. Copy the **full URL** from your browser's address bar after the results load.
3. Paste it into the **Booking.com search URL** input field in the actor.
4. Enable **Use Apify proxy** (strongly recommended — Booking.com blocks datacenter IPs).
5. Click **Start** and wait for the results.

### Input parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `searchUrl` | string | ✅ | — | Full Booking.com search URL with location, dates, and filters applied |
| `useProxy` | boolean | — | `true` | Use Apify residential proxy (strongly recommended to avoid blocks) |

#### Example input

```json
{
    "searchUrl": "https://www.booking.com/searchresults.en-gb.html?dest_id=-2088239&dest_type=city&checkin=2026-04-25&checkout=2026-04-26&group_adults=2&no_rooms=1",
    "useProxy": true
}
````

### Example output

```json
{
    "title": "Jardim a Mar",
    "url": "https://www.booking.com/hotel/in/jardim-a-mar.en-gb.html?...",
    "address": "Agonda Beach, Near Church, House No. 357a, Agonda Goa, India, 403702 Agonda, India",
    "ratings": "8.7",
    "reviews_count": "730",
    "property_spec": "Budget Double Room1 large double bedWe have 7 left at this price",
    "price": "₹2599",
    "facilities": "Airport shuttle | Restaurant | Free WiFi | Non-smoking rooms | Beachfront | Family rooms | Bar | Good breakfast",
    "description": "Offering a massage parlour, Jardim a Mar, a beachfront property offers accommodation in Agonda, on the Agonda Beach. Guests can enjoy the on-site restaurant. Certain rooms include views of the sea or garden..."
}
```

### Use cases

- **Hotel market research** — Analyse pricing trends, guest ratings, and facility offerings across locations and travel dates.
- **Competitor benchmarking** — Compare properties against nearby listings on price, reviews, and amenities.
- **Dynamic pricing intelligence** — Track nightly rates across different dates and regions to optimise revenue strategy.
- **Travel aggregation** — Feed structured listing data into your platform, dashboard, or comparison tool.
- **Hospitality analytics** — Map accommodation supply using address and facility data.
- **Investment analysis** — Evaluate short-term rental and hotel market potential in target locations using real listing data.

### How it works

1. The actor opens the Booking.com search URL using a headless Chromium browser via Playwright.
2. It scrolls the page and automatically clicks **Load more results** until all properties are loaded.
3. All card-level data (title, ratings, price, etc.) is parsed directly from the search results page — no extra requests needed for these fields.
4. For each property, the actor opens the detail page and extracts the address, most popular facilities, and description.
5. All data is pushed to an Apify dataset — export as JSON or CSV from the Apify console.

### Tips for best results

- **Apply all your filters on Booking.com first** (property type, star rating, price range, facilities) before copying the URL — this reduces unwanted results and speeds up the run.
- **Always enable the proxy** — Booking.com aggressively blocks requests from datacenter IPs. Residential proxies are essential for reliable results.
- **Match your currency and language** in the URL before copying — the price and text will be extracted exactly as shown in your browser.
- For large result sets (100+ properties), the run will take longer since each property requires a separate page visit to fetch the full details.

### Limitations

- Booking.com may update its page structure at any time, which could affect data extraction accuracy.
- Prices shown depend on the dates, currency, and market settings in your search URL.
- Some properties may not have a facilities section or description, in which case those fields will be `N/A`.
- Very high-volume runs may still encounter occasional blocks even with residential proxies — if this happens, try re-running with a different proxy country code.

### Need help?

Open an issue on this actor's page or reach out through Apify. Feedback and feature requests are welcome.

# Actor input Schema

## `searchUrl` (type: `string`):

Full Booking.com search URL with location, dates, and filters already applied. Copy it from your browser.

## `useProxy` (type: `boolean`):

Enable Apify residential proxy (recommended to avoid blocks).

## Actor input object example

```json
{
  "searchUrl": "https://www.booking.com/searchresults.en-gb.html?dest_id=-2088239&dest_type=city&checkin=2026-04-25&checkout=2026-04-26&group_adults=2&no_rooms=1",
  "useProxy": 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 = {
    "searchUrl": "https://www.booking.com/searchresults.en-gb.html?dest_id=-2088239&dest_type=city&checkin=2026-04-25&checkout=2026-04-26&group_adults=2&no_rooms=1"
};

// Run the Actor and wait for it to finish
const run = await client.actor("vagadro/booking-com-property-listings").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 = { "searchUrl": "https://www.booking.com/searchresults.en-gb.html?dest_id=-2088239&dest_type=city&checkin=2026-04-25&checkout=2026-04-26&group_adults=2&no_rooms=1" }

# Run the Actor and wait for it to finish
run = client.actor("vagadro/booking-com-property-listings").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 '{
  "searchUrl": "https://www.booking.com/searchresults.en-gb.html?dest_id=-2088239&dest_type=city&checkin=2026-04-25&checkout=2026-04-26&group_adults=2&no_rooms=1"
}' |
apify call vagadro/booking-com-property-listings --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "booking_com_property_listings",
        "description": "Scrape Booking.com search results without an API. Extract property name, address, guest        \n  ratings, review count, price with currency, most popular facilities, and full description for  \n  every listing. Export as JSON or CSV. Proxy support included.",
        "version": "0.0",
        "x-build-id": "DgXOekJaXZ0NOUbnY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/vagadro~booking-com-property-listings/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-vagadro-booking-com-property-listings",
                "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/vagadro~booking-com-property-listings/runs": {
            "post": {
                "operationId": "runs-sync-vagadro-booking-com-property-listings",
                "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/vagadro~booking-com-property-listings/run-sync": {
            "post": {
                "operationId": "run-sync-vagadro-booking-com-property-listings",
                "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": [
                    "searchUrl"
                ],
                "properties": {
                    "searchUrl": {
                        "title": "Booking.com search URL",
                        "type": "string",
                        "description": "Full Booking.com search URL with location, dates, and filters already applied. Copy it from your browser."
                    },
                    "useProxy": {
                        "title": "Use Apify proxy",
                        "type": "boolean",
                        "description": "Enable Apify residential proxy (recommended to avoid blocks).",
                        "default": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
