Booking.com Scraper By Amenity & Board Filter avatar

Booking.com Scraper By Amenity & Board Filter

Pricing

from $3.99 / 1,000 results

Go to Apify Store
Booking.com Scraper By Amenity & Board Filter

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

Scrapio

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

2 days ago

Last modified

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 โ€” requiredFacilities narrows the Booking.com search server-side using Booking's own facility codes, then every candidate hotel is independently re-checked against its scraped facilities array before being kept. A hotel can never appear in your output missing a facility you required.
  • Board-level filtering โ€” boardType keeps hotels at or above breakfast_included, half_board, full_board, or all_inclusive, detected from room/rate text and house-rule data.
  • Free-cancellation filtering โ€” freeCancellationOnly keeps only hotels showing a refundable rate; accuracy improves once checkIn/checkOut are set, because rate-level cancellation terms only render on a dated page.
  • Full property detail, optional โ€” scrapeAdditionalHotelData toggles rooms, images, roomImages, hostInfo, traderInfo and licenseInfo on 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, stars and reviews are numbers, hasBreakfast and freeCancellation are booleans, facilities, rooms and images are arrays.

How Booking.com Scraper By Amenity & Board Filter compares to other Booking.com scrapers

FeatureBooking.com Scraper By Amenity & Board Filterautomation-lab/booking-scrapersantamaria-automations/booking-com-scraper
Facility/amenity filter (pool, spa, WiFi, etc.)Server-side narrowing + row-level verification against scraped facilitiesNot 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 requestedNot 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 filterYesNot documented as an input filter (checked 2026-07-26)free_cancellation is an output field only (checked 2026-07-26)
Row-level match proofmatchedFacilities field on every rowNot documentedNot documented
Fetch strategyChrome-TLS HTTP client (impit) with Playwright Chromium fallback and a 3-tier proxy ladderPlaywright 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 inputYesYesNot documented (destination search only, checked 2026-07-26)
Full property detail (rooms, images, host/trader/license info)Yes, toggleable via scrapeAdditionalHotelDataNot documented at this depthNot 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.

ParameterRequiredTypeDescriptionExample Value
locationNostringDestination to search โ€” city, region or landmark (e.g. Barcelona, Bali). Ignored when startUrls is set. Also accepts the legacy search key. Default: ""."Barcelona"
startUrlsNoarrayBooking.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"]
maxResultsNointegerHow 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
requiredFacilitiesNoarray (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"]
facilityMatchModeNostring (enum)all โ€” a hotel must have every selected facility. any โ€” at least one selected facility. Default: "all"."all"
boardTypeNostring (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"
freeCancellationOnlyNobooleanKeep only hotels showing a free-cancellation rate. Most reliable when checkIn/checkOut are set. Default: false.true
scrapeAdditionalHotelDataNobooleanExtract rooms, images, roomImages, hostInfo, traderInfo and licenseInfo for each matching hotel. Turn off for a leaner, faster payload. Default: true.true
propertyTypeNostring (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"
sortByNostring (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"
minimumRatingNostringMinimum guest rating (e.g. "7", "8", "9"). Leave empty for no filter. Default: ""."8"
starsCountFilterNostring (enum)Filter by star rating: any, 1, 2, 3, 4, 5. Default: "any"."4"
currencyNostring (enum)Currency for displayed prices: USD, EUR, GBP, CAD, AUD, CHF, JPY, CNY, INR, BRL, MXN. Default: "USD"."EUR"
languageNostring (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"
checkInNostringAbsolute date (YYYY-MM-DD) or relative (e.g. "2 weeks"). Leave empty for a flexible search. Default: ""."2026-08-10"
checkOutNostringAbsolute date (YYYY-MM-DD) or relative (e.g. "1 week"). Leave empty for a flexible search. Default: ""."2026-08-13"
flexWindowNostring (enum)Allow dates to shift by this many days: 0, 1, 2, 3, 7. 0 = exact dates only. Default: "0"."0"
roomsNointegerNumber of rooms for the stay (minimum 1, maximum 9). Default: 1.1
adultsNointegerNumber of adult guests (minimum 1, maximum 30). Default: 2.2
childrenNointegerNumber of children (minimum 0, maximum 30). Default: 0.0
minMaxPriceNostringMin-max price filter, e.g. "50-200" or "100+" for minimum only. Default: "0-999999"."50-300"
proxyConfigurationNoobjectApify 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; location is ignored when startUrls is 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 for location), maxItems (alias for maxResults), and urls (alias for startUrls, accepting either plain strings or {"url": "..."} / {"link": "..."} objects). Any URL not containing booking.com is 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": ...}; matchedFacilities is the subset of your requiredFacilities actually found in this array.
  • rooms โ€” every room type Booking.com exposes for the property, as {"id", "name", "description", "size", "occupancy", "price"}. price is null when a room's rate wasn't resolvable from the page.
  • roomImages โ€” per-room photo galleries, as {"roomId": ..., "images": [...]}, only populated when scrapeAdditionalHotelData is true.
  • 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

StrategyBest forRun patternOutput format
Real-time enrichmentAppending live hotel data to an inbound recordSingle on-demand run per recordJSON row appended to source system
Scheduled monitoringTracking price/facility/cancellation changes over timeRecurring Apify Schedule, same input each runDataset per run, diffed on price/freeCancellation
Bulk dataset buildMulti-destination research or training datasetsOne run per destination, run in parallel via the APIAggregated CSV or database table

ScraperWhat 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 ApifyClient
import csv
client = 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.


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.