# Booking.com Property Scraper (`scrapyspider/booking-property-scraper`) Actor

Extract property details from Booking.com listings. Get title, address, price, coordinates, rating, and host info in structured JSON. Supports property URLs and search pages. No login required.

- **URL**: https://apify.com/scrapyspider/booking-property-scraper.md
- **Developed by:** [ScrapySpider](https://apify.com/scrapyspider) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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 Property Scraper

Extracts detailed property information from Booking.com hotel and accommodation pages — no account or cookies required — and returns structured JSON with title, address, pricing, coordinates, rating, and host info.

- No Booking.com account or cookies needed
- Extracts property details, pricing, and review scores
- Returns GPS coordinates for every listing
- Optional Google Maps geocoding to full street addresses
- Handles both individual property URLs and search result pages
- Outputs clean, structured JSON ready for analysis or CRM import

#### What data does it extract?

Each result contains:

**Property info:** title, on-page address, features headline, bedrooms, number of adults

**Pricing:** listed price for the property

**Location:** latitude, longitude, and optionally a full geocoded address (street number, route, city, state, postal code) via Google Maps API

**Host info:** property manager / host name

**Review data:** review score / rating

All results are available as JSON, CSV, or Excel via Apify dataset export.

#### Use cases

- **Vacation rental research:** Collect property details, pricing, and host info from Booking.com listings in a target market
- **Competitive analysis:** Monitor pricing and ratings across competitor properties in a region
- **Property management lead generation:** Identify hosts managing multiple properties for outreach
- **Market intelligence:** Aggregate Booking.com data to analyze supply, pricing trends, and occupancy indicators
- **Real estate enrichment:** Geocode Booking.com properties to precise street addresses for mapping and analysis
- **Travel aggregation:** Build datasets of accommodation options with structured pricing and location data

#### How to use

1. Click **Try for free** above
2. In the **Input** tab, paste one or more Booking.com property URLs (one per line)
3. Optionally add a Google Maps API key to convert coordinates to full street addresses
4. Click **Start** and wait for the run to complete (usually under 2 minutes per property)
5. Download your results as JSON, CSV, or Excel from the **Output** tab

#### Input parameters

| Parameter | Type | Required | Description |
|---|---|---|---|
| `startUrls` | Array of strings | Yes | Booking.com property page URLs to scrape. Example: `https://www.booking.com/hotel/us/the-nest-fayston.html` |
| `googleMapsApiKey` | String | No | Google Maps Geocoding API key. If provided, coordinates are geocoded to full street addresses. Stored securely. |
| `proxyConfiguration` | Object | No | Proxy configuration. Defaults to Apify Proxy. Recommended to leave as default. |

#### Output example

```json
{
    "url": "https://www.booking.com/hotel/us/the-nest-fayston.html",
    "title": "The Nest, Fayston – Updated 2025 Prices",
    "address": "673 Mill Brook Rd, Fayston, VT 05673, United States",
    "features": "1 bedroom, 1 bathroom, kitchen",
    "bedrooms": "1 bedroom",
    "adults": "2",
    "price": "185",
    "coordinates": {
        "latitude": 44.197702,
        "longitude": -72.885478
    },
    "googleAddress": {
        "formatted_address": "673 Mill Brook Rd, Fayston, VT 05673",
        "street_number": "673",
        "route": "Mill Brook Rd",
        "city": "Fayston",
        "state": "VT",
        "postal_code": "05673"
    },
    "rating": "9.2",
    "managedBy": "Property Host"
}
````

#### Pricing

This Actor is **free to use** — you only pay for Apify platform compute time and proxy usage.
A typical run scraping 10 properties costs approximately $0.10–$0.25 in Apify platform credits.

New Apify accounts receive $5 in free credits — enough for dozens of property scrapes.

If you use the optional Google Maps geocoding, standard Google Maps API charges apply separately.

#### Technical notes

- **No account needed:** This Actor does not require a Booking.com login or cookies to operate
- **Proxies recommended:** Use Apify Proxy (enabled by default) for reliable access to Booking.com
- **Headful browser:** Runs Puppeteer with Chromium. Memory recommendation: 2–4 GB for runs with 50+ URLs
- **Data freshness:** All data is scraped live from Booking.com — no cached or stale data
- **Geocoding:** Google Maps geocoding is optional. Without an API key, raw latitude/longitude coordinates are still returned
- **Rate limits:** For large runs (100+ properties), consider increasing memory allocation

#### Integrations

Outputs are compatible with:

- **Make (formerly Integromat):** Use the Apify module to trigger runs and send data to Google Sheets or Airtable
- **Zapier:** Connect Actor runs to 5,000+ apps via the Apify Zapier app
- **n8n:** Self-host and automate via the Apify n8n node
- **Google Sheets:** Export dataset directly as CSV and import
- **REST API:** Run the Actor programmatically and poll results via the Apify API

#### Support

Have questions or found a bug? Reach out:

- **Email:** ScrapySpider@protonmail.com
- **Website:** [ScrapySpider.com](https://ScrapySpider.com)
- **GitHub:** [github.com/ScrapySpider-com](https://github.com/ScrapySpider-com)
- **Apify:** Open a support issue on this Actor page
- **Response time:** Within 24–48 hours on weekdays

# Actor input Schema

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

List of Booking.com property page URLs to scrape. Each URL should be a direct link to a Booking.com hotel/property page.

## `googleMapsApiKey` (type: `string`):

Optional Google Maps Geocoding API key. If provided, converts coordinates to formatted street addresses.

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

Proxy configuration. Use Apify Proxy or custom proxies.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.booking.com/hotel/us/the-nest-fayston.html"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "startUrls": [
        "https://www.booking.com/hotel/us/the-nest-fayston.html"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapyspider/booking-property-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 = {
    "startUrls": ["https://www.booking.com/hotel/us/the-nest-fayston.html"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapyspider/booking-property-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 '{
  "startUrls": [
    "https://www.booking.com/hotel/us/the-nest-fayston.html"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapyspider/booking-property-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Booking.com Property Scraper",
        "description": "Extract property details from Booking.com listings. Get title, address, price, coordinates, rating, and host info in structured JSON. Supports property URLs and search pages. No login required.",
        "version": "1.0",
        "x-build-id": "mrtk88KjF5el6azNm"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapyspider~booking-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapyspider-booking-property-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/scrapyspider~booking-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapyspider-booking-property-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/scrapyspider~booking-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapyspider-booking-property-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Booking.com Property URLs",
                        "type": "array",
                        "description": "List of Booking.com property page URLs to scrape. Each URL should be a direct link to a Booking.com hotel/property page.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "googleMapsApiKey": {
                        "title": "Google Maps API Key (Optional)",
                        "type": "string",
                        "description": "Optional Google Maps Geocoding API key. If provided, converts coordinates to formatted street addresses."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration. Use Apify Proxy or custom proxies."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
