Booking.com Hotel Price & Amenity Search Scraper
Pricing
from $0.49 / 1,000 results
Booking.com Hotel Price & Amenity Search Scraper
Search Booking.com for a destination and dates, and collect each property's price, rating, review count, amenities, and breakfast info for the stay you specify.
Pricing
from $0.49 / 1,000 results
Rating
0.0
(0)
Developer
Nimbryxo-studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Booking.com Hotel Search & Details Scraper
Search Booking.com for a destination and travel dates, or paste hotel links directly, and get one row per property with the stay price, room and rate options, guest scores, review subscores, facilities, photos, description and booking policies.
What this actor does
- Search mode runs a Booking.com destination search for your dates, guests and filters, then scrolls and clicks Load more results to go beyond the first page. It collects up to 250 properties per run.
- Details mode loads Booking.com hotel URLs you provide and returns the same rich row for each one.
- Solves Booking.com's AWS WAF challenge once in a browser, then reuses the session cookie over HTTP for the rest of the run. If a detail request is challenged again, the actor refreshes the cookie and falls back to the browser for that page.
- Applies Booking.com's own filters for property type, review score, stars, free cancellation, breakfast, pool and nightly price.
- Returns the cheapest room-table price for the whole stay, plus every room and rate option when
includeRoomsis on. - Optionally renders each hotel in a browser to collect the complete facility list, not just the headline amenities.
- If some detail pages fail, the run finishes with a
PARTIALwarning and keeps the search rows instead of failing the whole run.
Output per hotel
| Field | What it contains |
|---|---|
hotelId, name, url | Property identity and its Booking.com page |
propertyType, stars | Property type and star rating |
address, city, country | Full address and location |
latitude, longitude | Map coordinates |
distance | Distance from the city centre as Booking.com shows it |
rating, reviewCount, reviewWord | Guest score, number of reviews and Booking.com's label |
reviewSubscores | Category scores such as Location, Cleanliness and Staff |
price, pricePerNight, currency | Cheapest total for the stay, nightly equivalent and ISO currency code |
originalPrice, discountPercent | Pre-discount price and discount percentage when a deal is shown |
taxesAndFees, priceWithTaxes | Taxes and fees for the cheapest rate and the resulting total |
roomTypes | Room name, rate-plan count, price, original price, total, taxes, breakfast, cancellation, sleeps, bed, size and room amenities |
topAmenities, fullAmenities | Headline facilities, plus the complete list when includeFullAmenities is on |
amenities | Amenity keywords found on the search card |
photos, photoUrl | Photo URLs and the main image |
description | Property description |
breakfastIncluded, breakfastAvailable, breakfastPrice | Whether breakfast is included, merely available, or paid separately |
freeCancellation | Whether a free-cancellation rate exists |
checkinTime, checkoutTime | Property check-in and check-out times |
checkin, checkout, nights, adults, rooms | The stay used for pricing |
mode, detailStatus, source, scrapedAt | Run metadata and enrichment status |
Empty values are omitted from a record instead of being written as null.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | search | search a destination or load hotel details |
destination | string | – | City, region or landmark; required in search mode |
startUrls | array | [] | Booking.com hotel URLs; required in details mode |
checkIn | string | - | Check-in date (YYYY-MM-DD); empty uses tomorrow |
checkOut | string | - | Check-out date (YYYY-MM-DD); empty uses a 3-night stay |
adults | integer | 2 | Adult guests (1–30) |
rooms | integer | 1 | Rooms needed (1–30) |
propertyType | select | all | All, hotels, apartments, hostels, guesthouses, villas or resorts |
minReviewScore | number | 0 | Minimum guest score (0–10) |
stars | select | 0 | Exact star rating, or any |
freeCancellation | boolean | false | Keep properties with a free-cancellation rate |
breakfast | boolean | false | Keep properties with breakfast included |
pool | boolean | false | Keep properties with a swimming pool |
minPrice, maxPrice | number | – | Nightly price bounds in the chosen currency |
currency | string | USD | Three-letter currency code |
language | select | en-us | Page language |
maxItems | integer | 3 | Maximum hotels to return (1–250) |
includeRooms | boolean | true | Add the room and rate table |
includeFullAmenities | boolean | false | Render each hotel page to collect every facility |
proxyConfiguration | object | AUTO | Apify proxy used for browser and HTTP requests |
Example: search Paris for three nights
{"mode": "search","destination": "Paris","checkIn": "2026-11-10","checkOut": "2026-11-13","adults": 2,"rooms": 1,"maxItems": 3,"includeFullAmenities": false}
Example: five-star hotels with a pool and free cancellation
{"mode": "search","destination": "Barcelona","checkIn": "2026-11-10","checkOut": "2026-11-13","stars": 5,"pool": true,"freeCancellation": true,"minReviewScore": 8,"currency": "EUR","maxItems": 25}
Example: load specific hotel pages
{"mode": "details","startUrls": [{ "url": "https://www.booking.com/hotel/fr/sorbonne.html" },{ "url": "https://www.booking.com/hotel/fr/moxy-paris-la-villette.html" }],"checkIn": "2026-11-10","checkOut": "2026-11-13","includeRooms": true,"includeFullAmenities": true}
Use cases
- Price comparison — compare stay totals for the same dates across a destination
- Rate tracking — schedule runs to watch prices and discounts move
- Room-level analysis — compare room types, breakfast and cancellation terms
- Travel apps and spreadsheets — feed structured hotel data into your own tools
- Market research — analyse ratings, review subscores and facilities by city or property type
FAQ
Do I need a Booking.com account? No. The actor reads public hotel and search pages. It solves the site's technical challenge without you providing cookies or a login.
Why does the first request take longer? Booking.com uses an AWS WAF JavaScript challenge. The actor opens one browser page to solve it, then reuses the resulting cookie over HTTP. That bootstrap is a few seconds per run.
What does price mean?
It is the cheapest total for the whole stay, for the dates, guest count and room count in your input. pricePerNight divides that total by the number of nights. Use originalPrice when Booking.com shows a strike-through price.
Why do some prices differ from the search card? The search card can show a promotional or selected-room price. The detail parser takes the cheapest valid room-table price, which is the same number Booking.com uses for the cheapest rate on that page.
Why is fullAmenities missing?
It is only collected when includeFullAmenities is on. That setting renders a hotel page in a browser, so it is slower and costs more than the default HTTP-only detail fetch.
What happens when Booking.com blocks the run?
The actor fails with a BLOCKED status instead of returning an empty dataset. If only some detail pages fail, it finishes with a PARTIAL status and keeps the rows it did collect.
What happens when a search has no results?
A valid search with no matches fails with NO_RESULTS, so you can tell it apart from a block. Loosen your filters or check the destination spelling.
How many results can I get?
Set maxItems up to 250. Booking.com loads 25 cards at a time and exposes a "Load more results" button; the actor scrolls and clicks it until your cap or the page stops growing. Booking.com itself caps a single query at about 1,000 results.
Are prices and availability live? Yes. They are captured when the actor runs and can change as availability changes.
Is this affiliated with Booking.com? No. This is an independent third-party actor that reads publicly available Booking.com pages.