# Fast Booking Scraper

Scrape Booking with this hotel scraper and get data about accommodation on Booking.com. Extract data by keywords or URLs for hotel prices, ratings, location, number of reviews, stars. Scrape and download data from Booking.com in JSON, Excel, HTML ,and CSV.

## Actor Statistics

- Total users: 1033
- Monthly users: 58
- Runs succeeded: 95.54%
- Categories: Travel

## Pricing

$2.00 / 1,000 results

## Input Schema

- **search** (type: string): Insert the destination name here
- **startUrls** (type: array): Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.
- **maxItems** (type: integer): Limit the number of places to be scraped. Input a value over `1000` to activate the 'overcome 1000 results limit' feature.
- **propertyType** (type: string): Choose type of property
- **sortBy** (type: string): Hotel attribute by which the results will be ordered
- **minScore** (type: string): Minimum rating of a hotel in "8.4" format.
- Searching below a rating of `5` may be very inefficient, as it's not natively supported by Booking.
- **starsCountFilter** (type: string): Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.
- **currency** (type: string): Currency to be set on the website
- **language** (type: string): Language to be set on the website (does not apply to reviews)
- **checkIn** (type: string): Select the check-in date in format YYYY-MM-DD or {number} {unit}.
- ***Input the date in the UTC timezone!***
  Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.
- **checkOut** (type: string): Select the check-out date in format YYYY-MM-DD or {number} {unit}.
- ***Input the date in the UTC timezone!***
  Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.
- **flexWindow** (type: string): Number of days to flex around the check-in and check-out dates. E.g. setting `3` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates.
- **rooms** (type: integer): No description
- **adults** (type: integer): No description
- **children** (type: integer): No description
- **minMaxPrice** (type: string): Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

## API example

## Fast Booking Scraper

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

Scrape Booking with this hotel scraper and get data about accommodation on Booking.com. Extract data by keywords or URLs for hotel prices, ratings, location, number of reviews, stars. Scrape and download data from Booking.com in JSON, Excel, HTML ,and CSV.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/voyager~fast-booking-scraper/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`adults`**

  `integer`, default: `2`

- **`checkIn`**

  `string` — Select the check-in date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`checkOut`**

  `string` — Select the check-out date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`children`**

  `integer`, default: `0`

- **`currency`**

  `string`, possible values: `"ARS", "AUD", "AZN", "BHD", "BRL", "BGN", "CAD", "XOF", "CLP", "CNY", "COP", "CZK", "DKK", "EGP", "EUR", "FJD", "GEL", "HKD", "HUF", "INR", "IDR", "ILS", "JPY", "JOD", "KZT", "KRW", "KWD", "MYR", "MXN", "MDL", "NAD", "TWD", "NZD", "NOK", "OMR", "PLN", "GBP", "QAR", "RON", "RUB", "SAR", "SGD", "ZAR", "SEK", "CHF", "THB", "TRY", "AED", "USD", "UAH"`, default: `"USD"` — Currency to be set on the website

- **`flexWindow`**

  `string`, possible values: `"0", "1", "2", "3", "7"` — Number of days to flex around the check-in and check-out dates. E.g. setting \`3\` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates.

- **`language`**

  `string`, possible values: `"en-gb", "en-us", "de", "nl", "fr", "es", "es-ar", "ca", "it", "pt-pt", "pt-br", "no", "fi", "sv", "da", "cs", "hu", "ro", "ja", "zh-cn", "zh-tw", "pl", "el", "ru", "tr", "bg", "ar", "ko", "he", "lv", "uk", "id", "ms", "th", "et", "hr", "lt", "sk", "sr", "sl", "vi", "tl", "is"`, default: `"en-gb"` — Language to be set on the website (does not apply to reviews)

- **`maxItems`**

  `integer` — Limit the number of places to be scraped. Input a value over \`1000\` to activate the 'overcome 1000 results limit' feature.

- **`minMaxPrice`**

  `string` — Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

- **`minScore`**

  `string` — Minimum rating of a hotel in "8.4" format. - Searching below a rating of \`5\` may be very inefficient, as it's not natively supported by Booking.

- **`propertyType`**

  `string`, possible values: `"none", "Hotels", "Apartments", "Hostels", "Guest houses", "Homestays", "Bed and breakfasts", "Holiday homes", "Boats", "Villas", "Motels", "Resorts", "Holiday parks", "Campsites", "Luxury tents"`, default: `"none"` — Choose type of property

- **`rooms`**

  `integer`, default: `1`

- **`search`**

  `string` — Insert the destination name here

- **`sortBy`**

  `string`, possible values: `"bayesian_review_score", "distance_from_search", "class_asc", "price", "review_score_and_price", "class_and_price"`, default: `"distance_from_search"` — Hotel attribute by which the results will be ordered

- **`starsCountFilter`**

  `string`, possible values: `"any", "1", "2", "3", "4", "5", "unrated"`, default: `"any"` — Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.

- **`startUrls`**

  `array` — Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "search": "",
  "startUrls": [
    {
      "url": ""
    }
  ],
  "maxItems": 1,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minScore": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": ""
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/voyager~fast-booking-scraper/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`adults`**

  `integer`, default: `2`

- **`checkIn`**

  `string` — Select the check-in date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`checkOut`**

  `string` — Select the check-out date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`children`**

  `integer`, default: `0`

- **`currency`**

  `string`, possible values: `"ARS", "AUD", "AZN", "BHD", "BRL", "BGN", "CAD", "XOF", "CLP", "CNY", "COP", "CZK", "DKK", "EGP", "EUR", "FJD", "GEL", "HKD", "HUF", "INR", "IDR", "ILS", "JPY", "JOD", "KZT", "KRW", "KWD", "MYR", "MXN", "MDL", "NAD", "TWD", "NZD", "NOK", "OMR", "PLN", "GBP", "QAR", "RON", "RUB", "SAR", "SGD", "ZAR", "SEK", "CHF", "THB", "TRY", "AED", "USD", "UAH"`, default: `"USD"` — Currency to be set on the website

- **`flexWindow`**

  `string`, possible values: `"0", "1", "2", "3", "7"` — Number of days to flex around the check-in and check-out dates. E.g. setting \`3\` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates.

- **`language`**

  `string`, possible values: `"en-gb", "en-us", "de", "nl", "fr", "es", "es-ar", "ca", "it", "pt-pt", "pt-br", "no", "fi", "sv", "da", "cs", "hu", "ro", "ja", "zh-cn", "zh-tw", "pl", "el", "ru", "tr", "bg", "ar", "ko", "he", "lv", "uk", "id", "ms", "th", "et", "hr", "lt", "sk", "sr", "sl", "vi", "tl", "is"`, default: `"en-gb"` — Language to be set on the website (does not apply to reviews)

- **`maxItems`**

  `integer` — Limit the number of places to be scraped. Input a value over \`1000\` to activate the 'overcome 1000 results limit' feature.

- **`minMaxPrice`**

  `string` — Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

- **`minScore`**

  `string` — Minimum rating of a hotel in "8.4" format. - Searching below a rating of \`5\` may be very inefficient, as it's not natively supported by Booking.

- **`propertyType`**

  `string`, possible values: `"none", "Hotels", "Apartments", "Hostels", "Guest houses", "Homestays", "Bed and breakfasts", "Holiday homes", "Boats", "Villas", "Motels", "Resorts", "Holiday parks", "Campsites", "Luxury tents"`, default: `"none"` — Choose type of property

- **`rooms`**

  `integer`, default: `1`

- **`search`**

  `string` — Insert the destination name here

- **`sortBy`**

  `string`, possible values: `"bayesian_review_score", "distance_from_search", "class_asc", "price", "review_score_and_price", "class_and_price"`, default: `"distance_from_search"` — Hotel attribute by which the results will be ordered

- **`starsCountFilter`**

  `string`, possible values: `"any", "1", "2", "3", "4", "5", "unrated"`, default: `"any"` — Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.

- **`startUrls`**

  `array` — Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "search": "",
  "startUrls": [
    {
      "url": ""
    }
  ],
  "maxItems": 1,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minScore": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": ""
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/voyager~fast-booking-scraper/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`adults`**

  `integer`, default: `2`

- **`checkIn`**

  `string` — Select the check-in date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`checkOut`**

  `string` — Select the check-out date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

- **`children`**

  `integer`, default: `0`

- **`currency`**

  `string`, possible values: `"ARS", "AUD", "AZN", "BHD", "BRL", "BGN", "CAD", "XOF", "CLP", "CNY", "COP", "CZK", "DKK", "EGP", "EUR", "FJD", "GEL", "HKD", "HUF", "INR", "IDR", "ILS", "JPY", "JOD", "KZT", "KRW", "KWD", "MYR", "MXN", "MDL", "NAD", "TWD", "NZD", "NOK", "OMR", "PLN", "GBP", "QAR", "RON", "RUB", "SAR", "SGD", "ZAR", "SEK", "CHF", "THB", "TRY", "AED", "USD", "UAH"`, default: `"USD"` — Currency to be set on the website

- **`flexWindow`**

  `string`, possible values: `"0", "1", "2", "3", "7"` — Number of days to flex around the check-in and check-out dates. E.g. setting \`3\` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates.

- **`language`**

  `string`, possible values: `"en-gb", "en-us", "de", "nl", "fr", "es", "es-ar", "ca", "it", "pt-pt", "pt-br", "no", "fi", "sv", "da", "cs", "hu", "ro", "ja", "zh-cn", "zh-tw", "pl", "el", "ru", "tr", "bg", "ar", "ko", "he", "lv", "uk", "id", "ms", "th", "et", "hr", "lt", "sk", "sr", "sl", "vi", "tl", "is"`, default: `"en-gb"` — Language to be set on the website (does not apply to reviews)

- **`maxItems`**

  `integer` — Limit the number of places to be scraped. Input a value over \`1000\` to activate the 'overcome 1000 results limit' feature.

- **`minMaxPrice`**

  `string` — Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

- **`minScore`**

  `string` — Minimum rating of a hotel in "8.4" format. - Searching below a rating of \`5\` may be very inefficient, as it's not natively supported by Booking.

- **`propertyType`**

  `string`, possible values: `"none", "Hotels", "Apartments", "Hostels", "Guest houses", "Homestays", "Bed and breakfasts", "Holiday homes", "Boats", "Villas", "Motels", "Resorts", "Holiday parks", "Campsites", "Luxury tents"`, default: `"none"` — Choose type of property

- **`rooms`**

  `integer`, default: `1`

- **`search`**

  `string` — Insert the destination name here

- **`sortBy`**

  `string`, possible values: `"bayesian_review_score", "distance_from_search", "class_asc", "price", "review_score_and_price", "class_and_price"`, default: `"distance_from_search"` — Hotel attribute by which the results will be ordered

- **`starsCountFilter`**

  `string`, possible values: `"any", "1", "2", "3", "4", "5", "unrated"`, default: `"any"` — Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.

- **`startUrls`**

  `array` — Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "search": "",
  "startUrls": [
    {
      "url": ""
    }
  ],
  "maxItems": 1,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minScore": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": ""
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`adults`**

  `integer`, default: `2`

* **`checkIn`**

  `string` — Select the check-in date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

* **`checkOut`**

  `string` — Select the check-out date in format YYYY-MM-DD or {number} {unit}. - \*\*\*Input the date in the UTC timezone!\*\*\* Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.

* **`children`**

  `integer`, default: `0`

* **`currency`**

  `string`, possible values: `"ARS", "AUD", "AZN", "BHD", "BRL", "BGN", "CAD", "XOF", "CLP", "CNY", "COP", "CZK", "DKK", "EGP", "EUR", "FJD", "GEL", "HKD", "HUF", "INR", "IDR", "ILS", "JPY", "JOD", "KZT", "KRW", "KWD", "MYR", "MXN", "MDL", "NAD", "TWD", "NZD", "NOK", "OMR", "PLN", "GBP", "QAR", "RON", "RUB", "SAR", "SGD", "ZAR", "SEK", "CHF", "THB", "TRY", "AED", "USD", "UAH"`, default: `"USD"` — Currency to be set on the website

* **`flexWindow`**

  `string`, possible values: `"0", "1", "2", "3", "7"` — Number of days to flex around the check-in and check-out dates. E.g. setting \`3\` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates.

* **`language`**

  `string`, possible values: `"en-gb", "en-us", "de", "nl", "fr", "es", "es-ar", "ca", "it", "pt-pt", "pt-br", "no", "fi", "sv", "da", "cs", "hu", "ro", "ja", "zh-cn", "zh-tw", "pl", "el", "ru", "tr", "bg", "ar", "ko", "he", "lv", "uk", "id", "ms", "th", "et", "hr", "lt", "sk", "sr", "sl", "vi", "tl", "is"`, default: `"en-gb"` — Language to be set on the website (does not apply to reviews)

* **`maxItems`**

  `integer` — Limit the number of places to be scraped. Input a value over \`1000\` to activate the 'overcome 1000 results limit' feature.

* **`minMaxPrice`**

  `string` — Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'

* **`minScore`**

  `string` — Minimum rating of a hotel in "8.4" format. - Searching below a rating of \`5\` may be very inefficient, as it's not natively supported by Booking.

* **`propertyType`**

  `string`, possible values: `"none", "Hotels", "Apartments", "Hostels", "Guest houses", "Homestays", "Bed and breakfasts", "Holiday homes", "Boats", "Villas", "Motels", "Resorts", "Holiday parks", "Campsites", "Luxury tents"`, default: `"none"` — Choose type of property

* **`rooms`**

  `integer`, default: `1`

* **`search`**

  `string` — Insert the destination name here

* **`sortBy`**

  `string`, possible values: `"bayesian_review_score", "distance_from_search", "class_asc", "price", "review_score_and_price", "class_and_price"`, default: `"distance_from_search"` — Hotel attribute by which the results will be ordered

* **`starsCountFilter`**

  `string`, possible values: `"any", "1", "2", "3", "4", "5", "unrated"`, default: `"any"` — Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.

* **`startUrls`**

  `array` — Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.

  **Items:**

  - **`url` (required)**

    `string`, format: `uri`

**Example:**

```
{
  "search": "",
  "startUrls": [
    {
      "url": ""
    }
  ],
  "maxItems": 1,
  "propertyType": "none",
  "sortBy": "distance_from_search",
  "minScore": "",
  "starsCountFilter": "any",
  "currency": "USD",
  "language": "en-gb",
  "checkIn": "",
  "checkOut": "",
  "flexWindow": "0",
  "rooms": 1,
  "adults": 2,
  "children": 0,
  "minMaxPrice": ""
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

### 🏎 What does Fast Booking Scraper do?

This [web scraping](https://apify.com/web-scraping) tool expands Booking data extraction beyond the official Booking.com limitations. Our Fast Booking Scraper allows you to scrape **over 1,000** **basic listings data at once from the Booking.com search**. To scrape the full details of each listing separately, use our dedicated [Booking Scraper](https://apify.com/voyager/booking-scraper).

### 🧳 What data can I scrape from Booking search?

<table>
<tr>
<td>🏖 Hotel name</td>
<td>📍 Location</td>
</tr>
<tr>
<td>💵 Price and currency</td>
<td>🌆 Image URLs</td>
</tr>
<tr>
<td>✍️ Number of reviews</td>
<td>⭐️ Rating and stars</td>
</tr>
<tr>
<td>🛏 Room types</td>
<td>🧑‍🦰 Number of persons</td>
</tr>
</table>

### 💸 How much will it cost to scrape Booking search results?

This scraper uses the pay-per-result pricing model, so your costs can be easily calculated. It will cost you **$3 to scrape 1,000 search results, so 0.003 USD per item**.

Apify’s Free plan provides $5 free usage credits every month. For those credits, you can get up to **1,700 results from Booking search results for free**.

If you need to get more Booking listings regularly, you should grab an Apify subscription. We recommend our [$49/month **Starter** **plan**](https://apify.com/pricing) - that one could get you up to 17,000 hotel results every month.

### ⬇️ Input

For input, you can either specify a **Destination ✈️** or use specific **URLs from Booking.com website 🔗** (you can apply all the necessary filters beforehand).

You can apply extra filters on which content you want to scrape (property type, minimum rating, price range, currency, language, etc.) You can also set the range of check-in and check-out dates and how many results you want.

If you want a step-by-step tutorial on how to scrape Booking, read our blog post on [how to scrape Booking.com](https://blog.apify.com/crawling-booking-com-47511a59eef/) or watch this quick video tutorial.

[scrape hotel data from Booking](https://www.youtube.com/watch?v=FZgi9YxNBa0)

#### Tips for scraping Booking hotels

1️⃣ Booking.com website will only display a maximum of 1,000 results so that’s how much the scraper can get at once. If you need more than that, you can use the **Get more than 1000 results** toggle. However, in that case, you won’t be able to apply any limiting filters in **URLs** because the scraper will override them. Scraping by **Destination** will not be affected by the toggle.

2️⃣ If you need to get detailed data about pricing or specific rooms, you need to provide `checkIn` and `checkOut` dates. The reason for this is that Booking.com only shows complete room and pricing info when dates are indicated.

3️⃣ Sometimes [Booking.com](http://booking.com/) may return some suggested hotels outside of the expected city/region as a recommendation. The scraper will return all of them in the data results, so you may get more results than expected for your search.

### ⬆️ Output example

The scraped Booking listings will be shown as a dataset which you can find in the **Storage** tab. Note that the output is organized as a table for viewing convenience:

<img width="80%" src="https://i.imgur.com/ErVcqnY.png" /> <br> <br>

You can preview all the fields and choose in which format to download the data you’ve extracted: JSON, Excel, HTML table, CSV, or XML. Here below is the same dataset in JSON:

```json
[
  {
    "url": "https://www.booking.com/hotel/us/trump-international-new-york.html?selected_currency=USD&changed_currency=1&lang=en-us&group_adults=2&no_rooms=1&checkin=2023-09-01&checkout=2023-09-02&nflt=price%3DUSD-0-999999-1",
    "name": "Trump International New York",
    "address": "Upper West Side, New York",
    "rating": 8.9,
    "reviews": 1064,
    "stars": 5,
    "price": 775,
    "currency": "US$",
    "roomType": "Deluxe King Room",
    "persons": 2,
    "image": "https://cf.bstatic.com/xdata/images/hotel/square200/78707107.webp?k=00573a915d7f50fb3d2ba3ffd63b5fc0e31c5c3e89f1246e83bd166e91bf2595&o="
  },
  {
    "url": "https://www.booking.com/hotel/us/monderne.html?selected_currency=USD&changed_currency=1&lang=en-us&group_adults=2&no_rooms=1&checkin=2023-09-01&checkout=2023-09-02&nflt=price%3DUSD-0-999999-1",
    "name": "Moderne Hotel",
    "address": "Manhattan, New York",
    "rating": 7.9,
    "reviews": 721,
    "stars": 4,
    "price": 609,
    "currency": "US$",
    "roomType": "Deluxe Room",
    "persons": 2,
    "image": "https://cf.bstatic.com/xdata/images/hotel/square200/63338224.webp?k=c28959d8a2fd35027eac230d8268064a11c418605ec99a7f052df6f9311d2581&o="
  },
  {
    "url": "https://www.booking.com/hotel/us/the-manhattan-club.html?selected_currency=USD&changed_currency=1&lang=en-us&group_adults=2&no_rooms=1&checkin=2023-09-01&checkout=2023-09-02&nflt=price%3DUSD-0-999999-1",
    "name": "The Manhattan Club",
    "address": "Manhattan, New York",
    "rating": 8.1,
    "reviews": 2443,
    "stars": 4,
    "price": 413,
    "currency": "US$",
    "roomType": "Executive Junior Suite",
    "persons": 2,
    "image": "https://cf.bstatic.com/xdata/images/hotel/square200/202656761.webp?k=4bde2fc628012ddb1db86ca81e2e3ea682e55197a766a8d51c246b0ffe09685a&o="
  },
```

### ⭐️ Need to scrape reviews from Booking.com?

Use a dedicated ⭐️ [Booking Reviews Scraper](https://apify.com/voyager/booking-reviews-scraper). It was built to extract review text, ratings, stars, basic reviewer info, length of stay, liked/disliked parts, room info, date of stay, and more for each listing.

### ❓FAQ

#### What are the disadvantages of the Booking API?

The Booking.com API interface is quite user-friendly, but getting that data in machine-processable format is no easy task. Booking.com places a lot of restrictions on how data can be collected from its listings, one of them being that **Booking.com will display a maximum of 1,000 results for any given search**. Our Fast Booking Scraper doesn't impose any limitations on your results, so you can scrape data from Booking.com at scale.

#### Is it legal to scrape listings on Booking.com?

Yes. However, you should note that personal data is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. We also recommend that you read our blog post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

#### Can I integrate Fast Booking Scraper with other apps?

Yes. Fast Booking Scraper can be connected with almost any cloud service or web app thanks to [integrations](https://apify.com/integrations) on the Apify platform. You can integrate with Zapier, Slack, Make, LangChain, Airbyte, GitHub, Google Sheets, Google Drive, and <a href="https://docs.apify.com/integrations" target="_blank">and with other Actors</a>. Or you can use <a href="https://docs.apify.com/integrations/webhooks" target="_blank">webhooks</a> to carry out an action whenever an event occurs, e.g. get a notification whenever this scraper successfully finishes a run.

#### Can I use Fast Booking Scraper with API?

Yes. You can use Apify API to get programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify actors. The API also lets you access any datasets, monitor Actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the `apify-client` NPM package. To access the API using Python, use the `apify-client` PyPI package.

Check out the <a href="https://docs.apify.com/api/v2"  target="_blank"> Apify API reference</a> docs for full details or click on the <a href="https://apify.com/voyager/fast-booking-scraper/api"  target="_blank"> API tab</a> for code examples. You can also follow [this video guide](https://www.youtube.com/watch?v=ViYYDHSBAKM).
