Booking.com Scraper By Amenity & Board Filter
Pricing
from $3.99 / 1,000 results
Booking.com Scraper By Amenity & Board Filter
๐จ BookingScraper extracts real-time hotel data from Booking.com โ prices, availability, ratings, reviews, amenities, photos & locations. ๐ Perfect for price monitoring, market research, and travel apps. ๐ Fast, reliable, SEO-ready datasets. ๐
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Booking.com Scraper โ Extract Hotels, Rooms and Amenities as JSON
A Booking.com scraper that searches a destination (or your own Booking.com URLs) and returns hotels, room types, and facility data as typed JSON โ but only the hotels that genuinely have the amenities, board type and cancellation policy you asked for. Every candidate is scraped, then re-checked against its own extracted facilities list, room/rate text and cancellation markers before it is counted as a match. Unlike scraping frameworks that hand you raw HTML to parse, Booking.com Scraper By Amenity & Board Filter returns typed JSON โ ready for your model, your database, or your pipeline without any parsing. This guide covers every input parameter, every output field, and how teams deploy amenity-filtered hotel data in real pipelines.
๐งญ What Does Booking.com Scraper By Amenity & Board Filter Do?
Booking.com Scraper By Amenity & Board Filter searches Booking.com by destination or crawls the direct hotel URLs you supply, and returns one JSON row per matching hotel โ its price, star rating, guest rating, rooms, facilities, board type, cancellation status, address, geolocation and (optionally) trader/host contact info. No Booking.com account, login, or API key is required โ the actor fetches only the public search-results and property pages any visitor can see.
- Search by destination (city, region, landmark) or paste Booking.com URLs directly โ search-results URLs and hotel-detail URLs are both accepted
- Filter by required facilities โ pool, parking, WiFi, gym, spa, pets, airport shuttle, restaurant, air conditioning, family rooms, beachfront, non-smoking โ matched ALL or ANY
- Filter by board / meal plan โ breakfast included, half board, full board, or all-inclusive
- Filter by free cancellation, minimum guest rating, star count, property type, and price range
- Return full hotel detail on request โ rooms, images, room-specific images, house-rule policies, trader/host contact, hotel chain and license info
- Every filtered row carries
matchedFacilities, proving which of your requested facilities were actually found on that hotel
Features & Capabilities
Booking.com Scraper By Amenity & Board Filter combines a destination/URL search engine with a row-level verification filter, so it competes on filter precision rather than raw volume.
Core features
- Guaranteed amenity match โ
requiredFacilitiesnarrows the Booking.com search server-side using Booking's own facility codes, then every candidate hotel is independently re-checked against its scrapedfacilitiesarray before being kept. A hotel can never appear in your output missing a facility you required. - Board-level filtering โ
boardTypekeeps hotels at or abovebreakfast_included,half_board,full_board, orall_inclusive, detected from room/rate text and house-rule data. - Free-cancellation filtering โ
freeCancellationOnlykeeps only hotels showing a refundable rate; accuracy improves oncecheckIn/checkOutare set, because rate-level cancellation terms only render on a dated page. - Full property detail, optional โ
scrapeAdditionalHotelDatatogglesrooms,images,roomImages,hostInfo,traderInfoandlicenseInfoon or off for a leaner payload. - Direct-URL mode โ paste one or many
startUrls(search-results or hotel-detail pages) instead of searching by destination. - Typed JSON output โ every field is a primitive, object or array copied straight from Booking.com's own Apollo state, schema.org JSON-LD, and DOM โ
price,rating,starsandreviewsare numbers,hasBreakfastandfreeCancellationare booleans,facilities,roomsandimagesare arrays.
How Booking.com Scraper By Amenity & Board Filter compares to other Booking.com scrapers
| Feature | Booking.com Scraper By Amenity & Board Filter | automation-lab/booking-scraper | santamaria-automations/booking-com-scraper |
|---|---|---|---|
| Facility/amenity filter (pool, spa, WiFi, etc.) | Server-side narrowing + row-level verification against scraped facilities | Not documented (checked 2026-07-26) | Not documented (checked 2026-07-26) |
| Board/meal-plan filter (breakfast, half/full board, all-inclusive) | Yes โ 5 levels, keeps hotels at or above the level requested | Not documented โ breakfastIncluded is an output field only (checked 2026-07-26) | Not documented โ meal_plan is an output field only (checked 2026-07-26) |
| Free-cancellation filter | Yes | Not documented as an input filter (checked 2026-07-26) | free_cancellation is an output field only (checked 2026-07-26) |
| Row-level match proof | matchedFacilities field on every row | Not documented | Not documented |
| Fetch strategy | Chrome-TLS HTTP client (impit) with Playwright Chromium fallback and a 3-tier proxy ladder | Playwright browser, per their own listing (checked 2026-07-26) | Booking.com's internal GraphQL API, HTTP-only, per their own listing (checked 2026-07-26) |
| Direct hotel URL input | Yes | Yes | Not documented (destination search only, checked 2026-07-26) |
| Full property detail (rooms, images, host/trader/license info) | Yes, toggleable via scrapeAdditionalHotelData | Not documented at this depth | Not documented at this depth |
If your use case is feeding structured data to an LLM or an automated pipeline, the fetch-strategy and match-proof rows are the decision-makers โ a scraper that returns every result and leaves you to re-filter it in code is a reliability failure mode when the filter logic actually matters, not a minor inconvenience.
When another tool might suit you better
If you need full guest review text โ positive/negative comments, per-category sentiment, reviewer demographics โ rather than filtered hotel listings, plowdata's Booking.com Review Scraper is purpose-built for that; this actor returns rating, reviews and categoryReviews subscores but not individual review text (per their listing, checked 2026-07-26). If your goal is a large, unfiltered destination export with no amenity or board requirements at all, a GraphQL-only actor without a browser-fallback layer may complete a plain search faster, since it never needs the Playwright path this actor keeps in reserve for blocked pages.
Booking.com Scraper By Amenity & Board Filter within the Scrapio data stack
Booking.com Scraper By Amenity & Board Filter is currently Scrapio's only Booking.com actor โ it covers destination search, direct-URL scraping, and amenity/board/cancellation filtering end to end, so there is no separate "basic" Booking.com scraper to fall back to in this account. For local point-of-interest ratings and open-status data near a destination (useful for enriching a hotel shortlist with nearby amenities), pair it with Scrapio's Google Maps Scraper: Rating, Review & Open-Status Filter.
Why do developers and data teams scrape Booking.com?
๐ข Revenue managers, OTAs and travel agencies
Revenue managers pull price, boardType and freeCancellation for a set of competitor properties in their market, on the same checkIn/checkOut window, to see where their own rate sits against comparable inventory. Travel agencies and OTAs use requiredFacilities and propertyType to pre-build shortlists โ "all-inclusive resorts with a pool in a destination" โ that match a client brief without manual browsing, then push name, price, matchedFacilities and url straight into a quote or booking tool.
๐ AI training data and RAG indexing
The description, highlights, finePrint and facilities[].name fields are the high-information text fields for RAG โ they describe the property in natural language and are exactly what a travel-assistant agent needs to answer "does this hotel have a pool and free WiFi?" without re-scraping the page. For training data, rating, price, boardType, stars and matchedFacilities are the fields with the most consistent structure across every row, since they come from the same extraction path on every hotel. Both use cases benefit from matchedFacilities acting as ground truth โ it is the verified answer to "does this hotel actually have facility X," not an inferred one.
๐ฑ Competitive and market intelligence
Track price and freeCancellation for the same set of hotels over repeated runs to see when a competitor drops price or opens up a refundable rate โ timeOfScrapeISO timestamps each observation so a time series is trivial to build. categoryReviews (per-category guest subscores such as facilities and cleanliness) lets you see which specific dimension is driving a competitor's rating up or down, rather than just the headline number.
๐ฌ Research and academic use
rating, reviews, stars, price, boardType and address across a destination form a structured dataset for research on accommodation pricing, amenity availability, or review-score distribution by property type or region. The actor only reaches publicly listed Booking.com pages โ no guest-account or booking-flow data is collected.
๐ฅ Product and SaaS development
Build a hotel-comparison widget, a destination-content page, or a booking-assistant feature on top of matchedFacilities, boardType, price and image โ the fields are typed primitives and arrays, so no HTML parsing or regex cleanup sits between the scrape and your product's data layer.
๐ Input Parameters
All input is read directly from .actor/input_schema.json. Nothing is required โ leave everything at its default to run a plain destination search, or set filters to narrow the output. Parameters are listed in schema order.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
location | No | string | Destination to search โ city, region or landmark (e.g. Barcelona, Bali). Ignored when startUrls is set. Also accepts the legacy search key. Default: "". | "Barcelona" |
startUrls | No | array | Booking.com search-results or hotel-detail URLs. Search URLs are expanded into candidates and then filtered; detail URLs are scraped and filtered individually. Default: []. | ["https://www.booking.com/hotel/es/example.html"] |
maxResults | No | integer | How many hotels that pass the filters to return per destination/URL (minimum 1, maximum 20000, default 10). Extra candidates are scraped and only matches are kept โ 5 matches may scan 20โ30 candidates. Also accepts the legacy maxItems key. | 5 |
requiredFacilities | No | array (multi-select) | Only return hotels that have ALL or ANY (see facilityMatchMode) of these facilities: pool, parking, wifi, gym, spa, pet, airport_shuttle, restaurant, air_conditioning, family_rooms, beachfront, non_smoking. Default: []. | ["pool", "spa"] |
facilityMatchMode | No | string (enum) | all โ a hotel must have every selected facility. any โ at least one selected facility. Default: "all". | "all" |
boardType | No | string (enum) | Keep only hotels offering at least this board level: any, breakfast_included, half_board, full_board, all_inclusive. "Breakfast included" keeps hotels where breakfast is offered; higher tiers require half/full board or all-inclusive to appear in the room/rate text. Default: "any". | "breakfast_included" |
freeCancellationOnly | No | boolean | Keep only hotels showing a free-cancellation rate. Most reliable when checkIn/checkOut are set. Default: false. | true |
scrapeAdditionalHotelData | No | boolean | Extract rooms, images, roomImages, hostInfo, traderInfo and licenseInfo for each matching hotel. Turn off for a leaner, faster payload. Default: true. | true |
propertyType | No | string (enum) | Filter by accommodation type: none, hotels, apartments, hostels, guest houses, homestays, bed and breakfasts, holiday homes, boats, villas, motels, resorts, holiday parks, campsites, luxury tents. Default: "none". | "hotels" |
sortBy | No | string (enum) | How to sort search candidates before filtering: distance_from_search, price, review_score_and_price, review_score, class. Default: "distance_from_search". | "review_score_and_price" |
minimumRating | No | string | Minimum guest rating (e.g. "7", "8", "9"). Leave empty for no filter. Default: "". | "8" |
starsCountFilter | No | string (enum) | Filter by star rating: any, 1, 2, 3, 4, 5. Default: "any". | "4" |
currency | No | string (enum) | Currency for displayed prices: USD, EUR, GBP, CAD, AUD, CHF, JPY, CNY, INR, BRL, MXN. Default: "USD". | "EUR" |
language | No | string (enum) | Interface language for the search: en-gb, en-us, de, fr, es, it, pt-br, nl, pl, ru, ja, zh. Default: "en-gb". | "en-gb" |
checkIn | No | string | Absolute date (YYYY-MM-DD) or relative (e.g. "2 weeks"). Leave empty for a flexible search. Default: "". | "2026-08-10" |
checkOut | No | string | Absolute date (YYYY-MM-DD) or relative (e.g. "1 week"). Leave empty for a flexible search. Default: "". | "2026-08-13" |
flexWindow | No | string (enum) | Allow dates to shift by this many days: 0, 1, 2, 3, 7. 0 = exact dates only. Default: "0". | "0" |
rooms | No | integer | Number of rooms for the stay (minimum 1, maximum 9). Default: 1. | 1 |
adults | No | integer | Number of adult guests (minimum 1, maximum 30). Default: 2. | 2 |
children | No | integer | Number of children (minimum 0, maximum 30). Default: 0. | 0 |
minMaxPrice | No | string | Min-max price filter, e.g. "50-200" or "100+" for minimum only. Default: "0-999999". | "50-300" |
proxyConfiguration | No | object | Apify Proxy configuration. Booking.com blocks direct traffic, so Residential proxy is enabled by default. Default: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}. | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
Example input
{"location": "Barcelona","maxResults": 5,"requiredFacilities": ["pool", "spa"],"facilityMatchMode": "all","boardType": "breakfast_included","freeCancellationOnly": true,"scrapeAdditionalHotelData": true,"propertyType": "hotels","sortBy": "review_score_and_price","minimumRating": "8","starsCountFilter": "4","currency": "EUR","language": "en-gb","checkIn": "2026-08-10","checkOut": "2026-08-13","flexWindow": "0","rooms": 1,"adults": 2,"children": 0,"minMaxPrice": "50-300","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Supported URL types and input formats
- Destination search โ
{"location": "Bali"}. Any city, region or landmark Booking.com's own search resolves. - Direct hotel-detail URL โ
{"startUrls": ["https://www.booking.com/hotel/id/example.html"]}. Scraped and filtered on its own;locationis ignored whenstartUrlsis set. - Booking.com search-results URL โ
{"startUrls": ["https://www.booking.com/searchresults.en-gb.html?ss=Rome"]}. Expanded into candidate hotel URLs, then filtered the same way a destination search would be. - Legacy input keys are still accepted for backward compatibility with older variant inputs:
search(alias forlocation),maxItems(alias formaxResults), andurls(alias forstartUrls, accepting either plain strings or{"url": "..."}/{"link": "..."}objects). Any URL not containingbooking.comis discarded.
๐ฆ Output Format
Every matching hotel is pushed as one typed JSON row to the Apify dataset. The default dataset view surfaces all 41 fields the actor writes โ there is no hidden subset; what you see in the view is the complete row.
Output for hotels
{"order": 1,"url": "https://www.booking.com/hotel/es/example-poblenou.html","startUrlOrQuery": "Barcelona","name": "Hotel Example Poblenou","type": "hotel","stars": 4,"price": 214.0,"currency": "EUR","rating": 8.9,"ratingLabel": "Superb","reviews": 1532,"boardType": "breakfast_included","hasBreakfast": true,"breakfast": "Available","freeCancellation": true,"requestedFacilities": ["pool", "spa"],"matchedFacilities": ["pool", "spa"],"facilities": [{ "name": "Outdoor swimming pool", "id": "433" },{ "name": "Spa and wellness centre", "id": "54" },{ "name": "Free WiFi", "id": "107" }],"checkIn": "From 14:00 to 23:00","checkOut": "Until 11:00","checkInDate": "2026-08-10","checkOutDate": "2026-08-13","location": { "lat": 41.3995, "lng": 2.1955 },"address": { "full": "Carrer de Pere IV 272", "country": "ES", "city": "Barcelona" },"image": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/example1.jpg","rooms": [{"id": "10221458_1","name": "Double Room with Pool View","description": "22 m2 room with a balcony overlooking the pool.","size": "22 m2","occupancy": 2,"price": 214.0}],"highlights": ["Outdoor swimming pool", "Spa and wellness centre", "Great breakfast"],"finePrint": "Guests are required to show a photo ID and credit card upon check-in.","policies": ["Check-in: From 14:00 to 23:00", "Check-out: Until 11:00"],"images": ["https://cf.bstatic.com/xdata/images/hotel/max1024x768/example1.jpg","https://cf.bstatic.com/xdata/images/hotel/max1024x768/example2.jpg"],"roomImages": [{ "roomId": "10221458_1", "images": ["https://cf.bstatic.com/xdata/images/room/max1024x768/room1.jpg"] }],"categoryReviews": [{ "name": "Facilities", "score": 8.7 },{ "name": "Cleanliness", "score": 9.1 }],"hotelChain": null,"licenseInfo": null,"hostInfo": "Maria G.","traderInfo": {"isBusiness": true,"email": "reservations@example.com","phone": "+34600000000","companyName": "Hotel Example Poblenou S.L.","firstName": null,"middleName": null,"lastName": null,"registrationNumber": "B12345678","tradeRegisterName": "Registro Mercantil de Barcelona","address": {"street": "Carrer de Pere IV 272","street2": null,"postalCode": "08005","city": "Barcelona","countryCode": "ES","state": null}},"breadcrumbs": [{ "name": "Spain", "url": "https://www.booking.com/country/es.html" },{ "name": "Barcelona", "url": "https://www.booking.com/city/es/barcelona.html" }],"hotelId": "10221458","description": "Set in the Poblenou district, this hotel offers an outdoor pool, a spa and free WiFi throughout.","timeOfScrapeISO": "2026-07-26T09:14:32.118Z","source_url": "https://www.booking.com/hotel/es/example-poblenou.html"}
Nested room, facility and photo data
rooms, facilities, images and roomImages are not separate dataset items โ they are structured arrays embedded inside each hotel row:
facilitiesโ every facility the hotel lists, as{"name": ..., "id": ...};matchedFacilitiesis the subset of yourrequiredFacilitiesactually found in this array.roomsโ every room type Booking.com exposes for the property, as{"id", "name", "description", "size", "occupancy", "price"}.priceisnullwhen a room's rate wasn't resolvable from the page.roomImagesโ per-room photo galleries, as{"roomId": ..., "images": [...]}, only populated whenscrapeAdditionalHotelDataistrue.categoryReviewsโ Booking.com's own per-category guest subscores (e.g. facilities, cleanliness, location), as{"name", "score"}.
When scrapeAdditionalHotelData is false, rooms, images, roomImages, hostInfo, traderInfo and licenseInfo are returned empty ([] or null) โ the facility, board and cancellation fields that drive the filters are always populated regardless of this setting.
Schema stability and export options
Field names stay stable across runs โ they are fixed keys assigned by the extraction code, not raw HTML snippets, so a Booking.com front-end redesign only breaks a field if Booking.com also removes the underlying data (Apollo state, schema.org JSON-LD, or the DOM fallback selectors this actor already falls back to). A field with no data on a given hotel is returned as null or an empty array/string rather than omitted, so downstream schemas stay consistent. Results are stored in the Apify dataset and can be exported as JSON, CSV, Excel, XML, or HTML directly from the Apify Console or the API โ there is no separate export mechanism outside the standard Apify dataset.
๐ก Booking.com Scraper By Amenity & Board Filter Strategy Guide
๐ฏ Strategy 1: Real-time enrichment pipeline
Trigger a run whenever an inbound record needs hotel data โ a travel-planning tool submitting a destination and date range, or a CRM lead requesting a shortlist. Call the actor with location, checkIn/checkOut, requiredFacilities and boardType set from the record, then append price, matchedFacilities, boardType, freeCancellation and url back onto the source record once the run finishes. Because the actor only pushes rows that already passed your filters, no downstream filtering step is needed before the record is written back to its destination system.
๐ฏ Strategy 2: Scheduled monitoring and alerting
Use an Apify Schedule to re-run the same location, checkIn/checkOut and filter set daily or weekly. Diff each new dataset against the previous run on price, freeCancellation and matchedFacilities โ a price drop, a newly refundable rate, or a facility that disappeared from the extracted facilities list are the deltas worth alerting on. timeOfScrapeISO on every row gives you the timestamp to key the diff on without adding your own.
๐ฏ Strategy 3: Bulk dataset build
For a research or market dataset spanning many destinations, run one Actor call per destination (or per batch of startUrls) and aggregate each run's dataset into a single CSV or database table via the Apify API. The actor processes hotel candidates sequentially within a single run โ it does not expose an internal concurrency setting โ so parallelism for a bulk build comes from starting multiple Actor runs in parallel (via the Apify API or Console), not from a single oversized run.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Appending live hotel data to an inbound record | Single on-demand run per record | JSON row appended to source system |
| Scheduled monitoring | Tracking price/facility/cancellation changes over time | Recurring Apify Schedule, same input each run | Dataset per run, diffed on price/freeCancellation |
| Bulk dataset build | Multi-destination research or training datasets | One run per destination, run in parallel via the API | Aggregated CSV or database table |
Related Booking.com Scrapers & Tools
| Scraper | What it extracts |
|---|---|
| Booking.com Scraper By Amenity & Board Filter (this actor) | Hotels filtered by required facilities, board type and free cancellation, with full property detail |
| Google Maps Scraper: Rating, Review & Open-Status Filter (Scrapio) | Local businesses and points of interest filtered by rating, review count and open status โ useful for enriching a hotel shortlist with nearby amenities |
| Booking.com Review Scraper (plowdata) | Full guest review text, per-review scores and Booking.com's internal per-category subscores, per their listing (checked 2026-07-26) |
Scrapio does not currently publish a separate general-purpose (unfiltered) Booking.com scraper or an Airbnb scraper โ this actor is the account's Booking.com coverage today.
How to integrate Booking.com Scraper By Amenity & Board Filter with your stack
Booking.com Scraper By Amenity & Board Filter works with any language or tool that can make an HTTP request, through the Apify API and the official Apify client libraries.
Python
from apify_client import ApifyClientimport csvclient = ApifyClient("<YOUR_APIFY_TOKEN>")destinations = ["Barcelona", "Lisbon", "Rome"]rows = []for city in destinations:run = client.actor("<YOUR_USERNAME>/booking-scraper-by-amenity-board-filter").call(run_input={"location": city,"maxResults": 10,"requiredFacilities": ["pool", "spa"],"facilityMatchMode": "all","boardType": "breakfast_included","freeCancellationOnly": True,"checkIn": "2026-08-10","checkOut": "2026-08-13","currency": "EUR",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append(item)fields = ["name", "price", "currency", "rating", "boardType", "matchedFacilities", "url"]with open("matching_hotels.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=fields)writer.writeheader()for r in rows:writer.writerow({k: r.get(k) for k in fields})print(f"Collected {len(rows)} matching hotels across {len(destinations)} destinations.")
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<YOUR_USERNAME>/booking-scraper-by-amenity-board-filter').call({location: 'Barcelona',maxResults: 10,requiredFacilities: ['pool', 'spa'],facilityMatchMode: 'all',boardType: 'breakfast_included',freeCancellationOnly: true,checkIn: '2026-08-10',checkOut: '2026-08-13',currency: 'EUR',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Matched ${items.length} hotels`);items.forEach((hotel) => {console.log(hotel.name, hotel.price, hotel.currency, (hotel.matchedFacilities || []).join(', '));});
MCP for AI agents
Every Apify Actor, including this one, is reachable through Apify's MCP server, so an AI agent can call it mid-task without leaving the IDE. Register it for Claude Code with:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=<YOUR_USERNAME>/booking-scraper-by-amenity-board-filter"
For Claude Desktop, Cursor, or VS Code, add the equivalent server URL (https://mcp.apify.com?tools=<YOUR_USERNAME>/booking-scraper-by-amenity-board-filter) to the client's MCP configuration. Once connected, a prompt like "find hotels in Lisbon with a pool and free cancellation for next weekend" runs the actor with the matching input and returns typed JSON directly into the agent's context.
Async and scheduled pipelines
For large or recurring jobs, start the run via the Apify API and poll for completion (waitForFinish), or fire-and-forget and check the dataset later โ the actor has no synchronous webhook of its own, but Apify's platform-level Schedules and run-status webhooks apply to any actor, including this one, for recurring or notify-on-completion pipelines.
Who Needs Booking.com Scraper By Amenity & Board Filter? (Use Cases & Industries)
๐ข Travel agencies and OTAs
A travel agency building a client shortlist sets requiredFacilities: ["pool", "family_rooms"], boardType: "half_board" and propertyType: "resorts" for a destination, then hands the returned name, price, matchedFacilities and url rows straight to the client โ no manual filtering of a generic search-results export required.
๐ Hotel revenue managers
Revenue managers run the same checkIn/checkOut window against a set of named competitor startUrls weekly, tracking price, boardType and freeCancellation to see where their own property's rate sits relative to comparable, amenity-matched inventory in the same market.
๐ฑ Travel content and comparison sites
Destination-page and comparison-site builders pull description, highlights, image, rating and matchedFacilities for a curated set of amenity-matched hotels per destination, publishing pages that only feature properties verified to meet a stated criterion (e.g. "pool + free cancellation") rather than a generic top-N list.
๐ฌ Researchers
Academic and market researchers use rating, reviews, stars, price, boardType and address across a destination to study accommodation pricing, amenity prevalence, or review-score distribution by property type or region, working only from publicly listed Booking.com data.
๐ฅ Product and SaaS builders
Teams building a booking-assistant, hotel-comparison widget, or destination-recommendation feature use matchedFacilities, boardType, price and rooms as the structured backbone of the feature, without needing to write or maintain their own Booking.com HTML parser.
Is it legal to scrape Booking.com?
Scraping publicly available web data is generally lawful in the United States. In hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019), the court held that scraping data not gated behind a login does not violate the Computer Fraud and Abuse Act. Booking.com Scraper By Amenity & Board Filter extracts only publicly accessible search-results and property pages โ no login, account, or paywalled data is accessed. Separately, running automated tools against Booking.com may put you at odds with its own Terms of Service; that is a contractual and civil matter between you and Booking.com, not a criminal one, and risk depends on how the data is used and at what scale. On data protection: Booking.com hotel listings are business and product records, not personal data about individuals, and this actor does not target guest or reviewer data. Two fields, hostInfo and traderInfo, may echo a property's own publicly listed business contact details (name, email, phone) exactly as Booking.com displays them; if you store or process that information, data-protection law in your jurisdiction may still apply, and the lawful basis for that use is your responsibility. Booking.com Scraper By Amenity & Board Filter returns only publicly accessible data. What you do with that data is your responsibility โ consult legal counsel for commercial applications involving personal data.
โ Frequently asked questions
Does Booking.com Scraper By Amenity & Board Filter work without a Booking.com account?
Yes. The actor fetches only public Booking.com search-results and property pages โ no login, account, cookie session, or API key is required or accepted anywhere in the input schema. None of the actor's input parameters are credential fields.
How does Booking.com Scraper By Amenity & Board Filter handle Booking.com's anti-scraping measures?
It fetches with impit, a Chrome-TLS-impersonating HTTP client, and falls back to a headless Playwright Chromium browser when a response looks blocked (a response under 3,000 characters, or containing markers like "captcha," "robot check" or "access denied"). If a page still fails, the actor escalates through a three-tier proxy ladder โ Residential, then Datacenter, then no proxy โ retrying up to 3 times per tier before giving up on that page.
Can I run Booking.com Scraper By Amenity & Board Filter at scale without getting blocked?
There is no published uptime or success-rate figure. Two real, documented limits apply instead: when any amenity/board/cancellation filter is active, the actor caps how many candidate hotels it will scan per destination or search URL at 150 (it scrapes max(maxResults ร 6, 20) candidates, capped at 150) โ so a very high maxResults on a destination with fewer than 150 matching candidates will return fewer hotels than requested. The actor also processes candidates one at a time within a run rather than concurrently, so scaling a large multi-destination job means running more Actor runs in parallel, not raising maxResults on a single run.
How fresh is the data Booking.com Scraper By Amenity & Board Filter returns?
Every run performs a live fetch against Booking.com at the time it runs โ there is no caching layer in the source code, so results reflect Booking.com's pages at run time, not a stored snapshot.
Which Booking.com fields work best for AI training and RAG indexing?
For RAG, the high-information text fields are description, highlights, finePrint, and facilities[].name โ natural-language content that answers "what does this property offer." For training data, rating, price, boardType, stars and matchedFacilities are the most consistently structured fields across every row, since every hotel goes through the same extraction path. All fields return as typed primitives, objects, or arrays โ no string parsing is required before use.
Does using traderInfo or hostInfo create data-protection obligations?
Potentially. Those fields return the property's own publicly displayed business contact details โ company name, email, phone, and registered address where Booking.com shows them โ exactly as published on the listing. Booking.com Scraper By Amenity & Board Filter does not add, infer, or enrich this data; if you store it, applicable data-protection law in your jurisdiction may still apply, and establishing a lawful basis for that storage and use is your responsibility.
Does Booking.com Scraper By Amenity & Board Filter work with Claude, ChatGPT, and other AI agent tools?
Yes. It is reachable through Apify's MCP server at https://mcp.apify.com?tools=<YOUR_USERNAME>/booking-scraper-by-amenity-board-filter for Claude Code, Claude Desktop, Cursor, VS Code and other MCP clients, and it is callable as a plain Apify API call by any HTTP-capable agent framework. Every response is typed JSON โ no HTML parsing is required before passing it into an LLM's context window.
How does Booking.com Scraper By Amenity & Board Filter compare to other Booking.com scrapers?
Neither automation-lab's Booking.com Scraper nor santamaria-automations' Booking.com Hotel Scraper documents an amenity or board-type input filter as of 2026-07-26 โ both return every result and leave filtering to you downstream. automation-lab's is stronger on documented automatic pagination through very large result sets (their listing states "no hard limit" with maxResults: 0 for unlimited results, checked 2026-07-26); this actor caps candidate scanning at 150 per destination once a filter is active, by design, to keep the row-level verification pass bounded. If you need raw, unfiltered volume with no facility or board requirement, either competitor may suit you better; if you need every returned row to provably match a facility, board or cancellation requirement, that verification is this actor's core feature and is not documented on either competitor's listing.
Disclaimer
Booking.com Scraper By Amenity & Board Filter extracts only publicly available data from Booking.com. This tool is intended for lawful use cases only. Users are responsible for complying with Booking.com's terms of service and applicable data protection laws in their jurisdiction.