# Booking.com Hotels Scraper - Worldwide Search & Categories (`lentic_clockss/booking-hotels-scraper`) Actor

Scrape Booking.com hotel search results for any destination worldwide. Extract names, prices, ratings, locations, room types, and listing links. Filter by property category or leave empty for all types.

- **URL**: https://apify.com/lentic\_clockss/booking-hotels-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Travel, Lead generation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Hotels Scraper

**Scrape Booking.com search results for any destination worldwide** — prices, ratings, locations, and listing links in structured JSON. Filter by property category, stars, review score, and free cancellation. No Booking partner API required.

> Architecture: this Apify Actor is a thin client. Scraping runs on the **booking-com** Cloud Run worker (Patchright headed Chrome + Xvfb) over HTTPS + API key. Input/output fields and Store pricing are unchanged.
>
> **Worker URL is config, not code:** the Actor reads `WORKER_BASE_URL` from Actor environment variables (plus optional per-run `workerBaseUrl`). If you migrate the worker to a new host, update `WORKER_BASE_URL` (and `WORKER_AUTH` if the API key changes) in Apify Console — no Actor code change required. Set `WORKER_PROVIDES_PROXY=1` when the worker supplies its own `PROXY_URL` instead of Apify RESIDENTIAL.

### What does this Actor do?

- Search **Booking.com** stays for cities, regions, countries, or landmarks worldwide
- Resolve destinations via Booking autocomplete (`dest_id` / `dest_type`) when possible; falls back to free-text `ss=` search if autocomplete is unavailable
- Filter by **property types** (empty = all), **stars**, **min review score**, and **free cancellation**
- Support **children** / **child ages** in the search URL
- Sort by popularity, price, reviews, stars, or distance
- Extract **hotelId, name, price, total price (when shown), rating, review count, location, room type, and image**
- Paginate up to your `maxResults` limit via a Cloud Run scrape worker (headed Chrome + sticky Apify RESIDENTIAL proxies; never unproxied)

### Output fields

| Field | Description |
| --- | --- |
| `source` | Always `booking` |
| `hotelId` | Stable id from URL/card when available (e.g. `sg/marina-bay-sands`) |
| `name` | Property name |
| `url` | Booking.com listing URL |
| `price` | Nightly / primary displayed price (when available) |
| `totalPrice` | Total stay price when visible on the search card |
| `currency` | ISO currency code |
| `rating` | Numeric review score (typically 1–10) |
| `ratingText` | Raw rating text from the card |
| `reviewCount` | Number of reviews |
| `propertyType` | Inferred type (Hotel, Apartment, Hostel, …) |
| `location` | Neighborhood / area text |
| `distanceFromCenter` | Distance-from-center text |
| `imageUrl` | Primary card image |
| `roomType` | Recommended unit / room text |
| `amenities` | Amenity labels when present on SERP (often empty) |
| `destination` / `checkin` / `checkout` | Echoed from the search input when set |
| `scrapedAt` | ISO timestamp |

***

### More Actors like this

Looking for another **travel / stays** scraper, or a specialized Actor outside Booking.com hotels? Use a dedicated Actor when one exists — structured fields, better coverage, usually lower cost. Use this Actor for **Booking.com** hotel / accommodation search results.

#### Similar travel & stays Actors

- [Booking.com & Airbnb Scraper](https://apify.com/lentic_clockss/booking-airbnb-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Agoda Scraper](https://apify.com/lentic_clockss/agoda-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [Trip.com Scraper](https://apify.com/lentic_clockss/trip-com-scraper)
- [Traveloka Scraper](https://apify.com/lentic_clockss/traveloka-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)
- [Despegar Scraper](https://apify.com/lentic_clockss/despegar-scraper)
- [Travelstart Flights Scraper](https://apify.com/lentic_clockss/travelstart-scraper)

#### Prefer another specialized scraper?

**Jobs & Freelance**

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)

**E-commerce**

- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [Costco Product Scraper](https://apify.com/lentic_clockss/costco-scraper)
- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)

**Real Estate**

- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)

**Social & Content**

- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)

**Ads Intelligence**

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

**Local & Maps**

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

**General Tools**

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ See the full catalog in [Related Actors](#related-actors) below, or browse [apify.com/lentic\_clockss](https://apify.com/lentic_clockss).

***

### How to use

1. Enter a **destination** (city, region, country, or landmark — e.g. `Tokyo`, `France`, `near Times Square`)
2. Set **check-in** / **check-out** (`YYYY-MM-DD`) for accurate prices
3. Optionally choose **property types**, stars, review score, sort, language, currency, and proxy country
4. Click **Start** — results appear in the Dataset tab

#### Example: worldwide city search

```json
{
  "destination": "Tokyo",
  "checkin": "2026-08-01",
  "checkout": "2026-08-03",
  "adults": 2,
  "maxResults": 20,
  "currency": "USD",
  "lang": "en-us",
  "proxyCountry": "JP"
}
```

#### Example: apartments only in Paris

```json
{
  "destination": "Paris",
  "checkin": "2026-08-01",
  "checkout": "2026-08-05",
  "adults": 2,
  "propertyTypes": ["apartment"],
  "sort": "price",
  "maxResults": 30,
  "currency": "EUR",
  "lang": "en-us",
  "proxyCountry": "FR"
}
```

#### Example: family stay with filters

```json
{
  "destination": "Singapore",
  "checkin": "2026-08-01",
  "checkout": "2026-08-03",
  "adults": 2,
  "children": 1,
  "childAges": [8],
  "stars": [4, 5],
  "minReviewScore": 8.0,
  "freeCancellation": true,
  "propertyTypes": ["hotel"],
  "maxResults": 20,
  "currency": "SGD",
  "proxyCountry": "SG"
}
```

Leaving `propertyTypes` empty means **all accommodation categories**.

#### Example output

```json
{
  "source": "booking",
  "hotelId": "fr/negresco",
  "name": "Hotel Negresco Nice",
  "url": "https://www.booking.com/hotel/fr/negresco.html",
  "price": 312.0,
  "totalPrice": 1248.0,
  "currency": "USD",
  "rating": 8.7,
  "ratingText": "Fabulous",
  "reviewCount": 4521,
  "propertyType": "Hotel",
  "location": "Promenade des Anglais, Nice",
  "distanceFromCenter": "1.2 km from center",
  "imageUrl": "https://cf.bstatic.com/xdata/images/hotel/square200/12345.webp",
  "roomType": "Superior Double Room",
  "amenities": [],
  "destination": "Nice",
  "checkin": "2026-08-01",
  "checkout": "2026-08-05",
  "scrapedAt": "2026-07-20T05:00:00Z"
}
```

### Input

| Field | Type | Default | Notes |
| --- | --- | --- | --- |
| `destination` | string | `Singapore` | City / region / country / landmark |
| `checkin` / `checkout` | string | *(empty)* | `YYYY-MM-DD` |
| `adults` | integer | `2` | 1–10 |
| `children` | integer | `0` | 0–10 |
| `childAges` | integer\[] | `[]` | Ages 0–17; padded to `children` |
| `rooms` | integer | `1` | 1–10 |
| `maxResults` | integer | `50` | 1–500 |
| `currency` | string | `USD` | ISO code + `cur_curr` cookie |
| `lang` | string | `en-us` | UI language tag |
| `sort` | enum | `popularity` | popularity, price, review\_score, … |
| `propertyTypes` | string\[] | `[]` | Empty = all categories |
| `stars` | integer\[] | `[]` | 1–5 → `class=` filters |
| `minReviewScore` | number | *(null)* | 0–10 → `review_score=` tenths |
| `freeCancellation` | boolean | `false` | → `oos=1` |
| `destId` / `destType` | string | *(empty)* | Skip autocomplete when both set |
| `customNfltFilters` | string\[] | `[]` | Raw `nflt` fragments |
| `proxyCountry` | string | *(empty)* | RESIDENTIAL country (default US) |
| `proxy` | object | *(none)* | Optional Apify proxy editor |

#### Supported property types

`hotel`, `apartment`, `hostel`, `motel`, `resort`, `bed_and_breakfast`, `villa`, `guesthouse`, `holiday_home`, `aparthotel`, `lodge`, `homestay`, `country_house`, `capsule_hotel`, `campground`, `inn`, `ryokan`, `riad`, `chalet`, `holiday_park`, `tent`, `love_hotel`, `pension`

### Limits & notes

- **SERP only** — no detail-page enrichment; amenities/`totalPrice` are often empty on cards
- **Autocomplete** — tries API + UI suggestion fallback; if both fail, search continues with free-text `ss=` (`destSource:query_only` in warnings)
- **Proxy required** — sticky RESIDENTIAL is mandatory; the Actor does not fall back to direct/unproxied browsing
- **Anti-bot** — headed Chrome + Xvfb; Cloudflare challenges are waited on and fail the page/attempt if unresolved (no CapSolver)

### Diagnostics

Each run writes:

- `INPUT_ECHO` — sanitized input including resolved `destId`/`destType` and `nflt`
- `RUN_SUMMARY` — status, counters, field completeness, warnings (`destSource:…`, proxy mode, etc.)
- `ERROR_SUMMARY` — written only on hard failures

Statuses: `ok` | `partial` | `blocked`.

### Pricing

This Actor uses **Pay per event** pricing. Platform usage costs are paid by the Actor developer (not passed to the user).

| Event | Price |
| --- | --- |
| `apify-actor-start` (Actor Start) | $0.005 per start (memory-scaled) |
| `apify-default-dataset-item` (Result) | $3.00 / 1,000 listings ($0.003 each) |

#### Free Apify plan limits (set by this Actor's developer)

| Limit | Free Apify plan | Paid Apify plan |
| --- | --- | --- |
| Runs of this Actor | **10 runs total** | Unlimited |
| Results per run (`maxResults`) | **Up to 500** | Up to 500 |

When the run cap is hit, the run finishes with a clear status message — not an Apify platform error. Paying Apify users are not subject to the run cap.

### FAQ

**Can I search any country?**\
Yes. Enter a city, region, or country name. The Actor tries Booking autocomplete for `dest_id`; if that fails it still searches with the destination text. Inventory is global on `www.booking.com`.

**What does empty propertyTypes mean?**\
All categories — hotels, apartments, hostels, and other accommodation types shown on the SERP.

**Do I need a Booking.com account?**\
No.

**Are amenities always filled?**\
No. This Actor scrapes search results only; amenities are often absent on SERP cards.

**Why did my free-plan run stop after 10 runs?**\
Free Apify plan users get **10 runs** of this Actor and **up to 500 results per run**. These limits are set by the Actor developer (not Apify). When you hit the run cap, the run finishes with a clear status message — it is not a platform bug. Upgrade to a paid Apify plan for unlimited runs.

### Related Actors

All **77** public Actors from \[[lentic\_clockss](https://apify.com/lentic_clockss)]. Click a name to open the Store detail page.

#### Jobs & Freelance

- [LinkedIn Jobs Scraper](https://apify.com/lentic_clockss/linkedin-jobs-scraper)
- [Bayt Jobs Scraper](https://apify.com/lentic_clockss/bayt-scraper)
- [Fiverr Gigs Scraper](https://apify.com/lentic_clockss/fiverr-programming-tech-gigs-scraper)
- [Freelancer.com Scraper](https://apify.com/lentic_clockss/freelancer-scraper)
- [Glassdoor Scraper](https://apify.com/lentic_clockss/glassdoor-scraper)
- [Himalayas Jobs Scraper](https://apify.com/lentic_clockss/himalayas-jobs-scraper)
- [Indeed Jobs Scraper](https://apify.com/lentic_clockss/indeed-jobs-scraper)
- [Jobicy Remote Jobs Scraper](https://apify.com/lentic_clockss/jobicy-remote-jobs-scraper)
- [RemoteOK Jobs Scraper](https://apify.com/lentic_clockss/remoteok-all-jobs-scraper)
- [SEEK Jobs Scraper](https://apify.com/lentic_clockss/seek-scraper)
- [Upwork Jobs Scraper](https://apify.com/lentic_clockss/upwork-jobs-scraper)

#### Real Estate

- [Zillow & Zumper Scraper](https://apify.com/lentic_clockss/us-real-estate-scraper)
- [Realtor.com Scraper](https://apify.com/lentic_clockss/realtor-com-scraper)
- [99.co Scraper](https://apify.com/lentic_clockss/ninetynine-co-sg-scraper)
- [Realtor.com Agents Scraper](https://apify.com/lentic_clockss/realtor-com-agents-scraper)
- [Apartments.com Rental Scraper](https://apify.com/lentic_clockss/apartments-com-rental-scraper)
- [Bayut Scraper](https://apify.com/lentic_clockss/bayut-uae-scraper)
- [Craigslist Housing Scraper](https://apify.com/lentic_clockss/craigslist-housing-scraper)
- [Daft.ie Scraper](https://apify.com/lentic_clockss/daft-property-scraper)
- [Dot Property Scraper](https://apify.com/lentic_clockss/dot-property-th-scraper)
- [FINN.no Scraper](https://apify.com/lentic_clockss/finn-scraper)
- [Funda Scraper](https://apify.com/lentic_clockss/funda-scraper)
- [Hepsiemlak Scraper](https://apify.com/lentic_clockss/hepsiemlak-scraper)
- [Idealista Scraper](https://apify.com/lentic_clockss/idealista-scraper)
- [Immobiliare.it Scraper](https://apify.com/lentic_clockss/immobiliare-property-scraper)
- [ImmoScout24 Scraper](https://apify.com/lentic_clockss/immobilienscout24-scraper)
- [Naver Land Scraper](https://apify.com/lentic_clockss/naver-land-scraper)
- [OpenSooq Scraper](https://apify.com/lentic_clockss/opensooq-real-estate-scraper)
- [Otodom Scraper](https://apify.com/lentic_clockss/otodom-scraper)
- [Property Finder Scraper](https://apify.com/lentic_clockss/property-finder-uae-scraper)
- [PropertyGuru Scraper](https://apify.com/lentic_clockss/propertyguru-sg-scraper)
- [realestate.com.au Scraper](https://apify.com/lentic_clockss/realestate-com-au-scraper)
- [Realtor.ca Scraper](https://apify.com/lentic_clockss/realtor-ca-scraper)
- [Rightmove Scraper](https://apify.com/lentic_clockss/rightmove-property-scraper)
- [SeLoger Scraper](https://apify.com/lentic_clockss/seloger-property-scraper)
- [SUUMO Scraper](https://apify.com/lentic_clockss/suumo-property-scraper)
- [Zillow Group Scraper](https://apify.com/lentic_clockss/zillow-group-scraper)

#### E-commerce

- [Shopee Search Scraper](https://apify.com/lentic_clockss/shopee-search-scraper)
- [E-commerce Scraper](https://apify.com/lentic_clockss/ecommerce-scraper)
- [1688 Global Product Search Scraper](https://apify.com/lentic_clockss/1688-global-scraper)
- [Allegro Scraper](https://apify.com/lentic_clockss/allegro-scraper)
- [Amazon Search Scraper](https://apify.com/lentic_clockss/amazon-search-results-collector)
- [ASOS Product Scraper](https://apify.com/lentic_clockss/asos-scraper)
- [Cdiscount Product Scraper](https://apify.com/lentic_clockss/cdiscount-scraper)
- [Costco Product Scraper](https://apify.com/lentic_clockss/costco-scraper)
- [Coupang Product Scraper](https://apify.com/lentic_clockss/coupang-scraper)
- [Etsy Scraper](https://apify.com/lentic_clockss/etsy-scraper)
- [Lazada Scraper](https://apify.com/lentic_clockss/lazada-ph-search-results-collector)
- [MercadoLibre Scraper](https://apify.com/lentic_clockss/mercadolibre-scraper)
- [Mercari Japan Scraper](https://apify.com/lentic_clockss/mercari-scraper)
- [Rakuten Japan Scraper](https://apify.com/lentic_clockss/rakuten-scraper)
- [SHEIN Product Scraper](https://apify.com/lentic_clockss/shein-scraper)
- [Target Product Scraper](https://apify.com/lentic_clockss/target-scraper)
- [Temu Product Scraper](https://apify.com/lentic_clockss/temu-scraper)
- [Walmart Product Scraper](https://apify.com/lentic_clockss/walmart-scraper)

#### Travel & Stays

- [Booking.com & Airbnb Scraper](https://apify.com/lentic_clockss/booking-airbnb-scraper)
- [Agoda Scraper](https://apify.com/lentic_clockss/agoda-scraper)
- [Airbnb Listings Scraper](https://apify.com/lentic_clockss/airbnb-listings-scraper)
- [Booking.com Hotels Scraper](https://apify.com/lentic_clockss/booking-hotels-scraper)
- [Despegar Scraper](https://apify.com/lentic_clockss/despegar-scraper)
- [Expedia Scraper](https://apify.com/lentic_clockss/expedia-scraper)
- [Traveloka Scraper](https://apify.com/lentic_clockss/traveloka-scraper)
- [Travelstart Flights Scraper](https://apify.com/lentic_clockss/travelstart-scraper)
- [Trip.com Scraper](https://apify.com/lentic_clockss/trip-com-scraper)
- [TripAdvisor Scraper](https://apify.com/lentic_clockss/tripadvisor-scraper)

#### Social & Content

- [TikTok Scraper](https://apify.com/lentic_clockss/tiktok-scraper)
- [Reddit Scraper](https://apify.com/lentic_clockss/reddit-scraper)
- [YouTube Shorts Scraper](https://apify.com/lentic_clockss/youtube-shorts-scraper)
- [YouTube Research Scraper](https://apify.com/lentic_clockss/youtube-research-scraper)
- [Hacker News Scraper](https://apify.com/lentic_clockss/hacker-news-scraper)

#### Ads Intelligence

- [Facebook Ad Library Scraper](https://apify.com/lentic_clockss/facebook-ad-library-scraper)
- [Google Ads Transparency VN](https://apify.com/lentic_clockss/google-ads-transparency-center-vn)
- [TikTok Ads Scraper](https://apify.com/lentic_clockss/tiktok-ads-top-ads-actor)

#### Local & Maps

- [Google Maps Scraper](https://apify.com/lentic_clockss/google-maps-scraper)

#### General Tools

- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Risk Validator](https://apify.com/lentic_clockss/email-risk-validator)
- [Phone Number Intelligence](https://apify.com/lentic_clockss/phone-number-intelligence)

→ Browse the full profile: [apify.com/lentic\_clockss](https://apify.com/lentic_clockss)

# Actor input Schema

## `destination` (type: `string`):

City, region, country, area, or landmark (e.g. 'Tokyo', 'France', 'near Times Square'). Resolved via Booking autocomplete when destId is empty.

## `checkin` (type: `string`):

Check-in date in YYYY-MM-DD format. Strongly recommended for accurate pricing.

## `checkout` (type: `string`):

Check-out date in YYYY-MM-DD format.

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

Number of adult guests.

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

Number of children. When set without childAges, ages default to 8.

## `childAges` (type: `array`):

Ages for each child (0–17). Length should match children; padded/truncated automatically.

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

Number of rooms (Booking.com no\_rooms).

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

Maximum number of listings to scrape in this run (1–500). Free Apify plan users are limited to 500 results per run and 10 total runs of this Actor — limits set by the Actor developer.

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

Preferred ISO currency code (e.g. 'USD', 'EUR', 'SGD'). Passed as selected\_currency and cur\_curr cookie.

## `lang` (type: `string`):

Booking.com UI language tag (e.g. 'en-us', 'en-gb', 'de', 'fr', 'ja').

## `sort` (type: `string`):

SERP sort order.

## `propertyTypes` (type: `array`):

Accommodation categories to include. Empty = all categories. Maps to Booking.com ht\_id filters.

## `stars` (type: `array`):

Hotel star classes to include (1–5). Maps to nflt class= filters.

## `minReviewScore` (type: `number`):

Minimum guest review score (0–10). Leave empty for no filter. Maps to Booking review\_score in tenths (e.g. 8.0 → 80).

## `freeCancellation` (type: `boolean`):

When true, only listings with free cancellation (nflt oos=1).

## `destId` (type: `string`):

Optional Booking dest\_id from autocomplete. When set with destType, skips autocomplete.

## `destType` (type: `string`):

Optional Booking dest\_type (city, region, country, landmark, airport, district, hotel, coordinates).

## `customNfltFilters` (type: `array`):

Raw Booking.com nflt fragments (e.g. 'class=5', 'oos=1', 'review\_score=80'). Merged with propertyTypes.

## `proxyCountry` (type: `string`):

ISO country code for sticky RESIDENTIAL proxy (e.g. 'US', 'JP', 'FR'). Defaults to US when empty.

## `proxy` (type: `object`):

Optional Apify proxy configuration. When omitted, the Actor uses sticky RESIDENTIAL proxies by default.

## `workerBaseUrl` (type: `string`):

Override the Cloud Run worker origin for this run. Defaults to Actor env WORKER\_BASE\_URL. Use when testing a staging worker; production migrations should update WORKER\_BASE\_URL in Actor settings (no code change).

## Actor input object example

```json
{
  "destination": "Singapore",
  "checkin": "2026-08-01",
  "checkout": "2026-08-03",
  "adults": 2,
  "children": 0,
  "childAges": [],
  "rooms": 1,
  "maxResults": 50,
  "currency": "USD",
  "lang": "en-us",
  "sort": "popularity",
  "propertyTypes": [],
  "stars": [],
  "freeCancellation": false,
  "destId": "",
  "destType": "",
  "customNfltFilters": [],
  "proxyCountry": ""
}
```

# Actor output Schema

## `accommodations` (type: `string`):

Dataset containing all scraped hotel records.

## `runSummary` (type: `string`):

Key-value store record with run counters, selected input, proxy state, and completion timestamp.

## `inputEcho` (type: `string`):

Key-value store record containing the sanitized input used by this run.

## `errorSummary` (type: `string`):

Key-value store record containing controlled error details when the Actor cannot complete the requested scrape.

# 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 = {
    "destination": "Singapore"
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/booking-hotels-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 = { "destination": "Singapore" }

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vXrlagWWqZiiL48YR/builds/Vn0lb4nKTyhzYCPdH/openapi.json
