Booking.com Hotel Details Scraper
Pricing
from $1.75 / 1,000 hotel-scrapeds
Booking.com Hotel Details Scraper
Scrape the full Booking.com record for a property. Just add hotel links and get facilities, photos, house rules, check-in and check-out times, guest review scores by category, guest questions and answers, languages spoken and licence numbers. Export to CSV, JSON or Excel.
Pricing
from $1.75 / 1,000 hotel-scrapeds
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
What is Booking.com Hotel Details Scraper?
Paste a Booking.com hotel link and Booking.com Hotel Details Scraper hands you the whole property record as one row. For Bellagio in Las Vegas that row held 127 facilities in 21 groups, 15 room types, 20 guest questions with the hotel's answers, nine review categories with their scores, and 29 places around the hotel with walking or driving times.
It's built for people who need to know what a property has and allows, not what it costs tonight:
- Facilities come as a flat list and grouped the way the site groups them, which makes "does it have X" a lookup.
- House rules are data you can filter on: check-in and check-out times, minimum check-in age, accepted cards, cash, group booking limit, and pets as a clear yes, no or "on request".
- What's around the property is included at no extra charge: top attractions, airports, public transport, restaurants and cafés, each with distance, coordinates and travel time.
- Homes and apartments get Booking's own quality rating, kept apart from hotel stars.
- A 61-day availability calendar is one switch away.
- It keeps up with long lists. 500 properties took 68 seconds.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 29 of 29 live checks on its inputs and filters passed on 8 October 2026
- 16 properties run on 7 October 2026, hotels, homes, ryokan and riads, plus one bad link: 16 records, 1 error row
- The bad link got an error row saying Booking has no such page
A wrong link never gets you the wrong hotel. If Booking has no page for what you gave, you get an error row naming the nearest hotel it suggests, and that row is free.
What data do you get in a property record?
| Field | Notes | |
|---|---|---|
| 🏨 | hotelId, name, slug, url, accommodationType | the property |
| 📍 | address, city, countryCode, lat, lng | full location |
chainIds | chain membership | |
currency, hotelCurrency | the currency calendar prices are quoted in, and the property's own | |
| 💬 | rating, ratingScale, reviewCount | guest score out of 10 |
| 📊 | ratingBreakdown | score and review count per category: staff, cleanliness, value and so on |
facilities, facilityGroups, facilitiesCount | every facility, and grouped | |
| 🛏 | rooms | the room types the property lists, each with its roomId and name |
| 🕓 | checkInFrom, checkInUntil, checkOutFrom, checkOutUntil | as the site states them |
partiesPolicy, arePetsAllowed, petsPolicyText, minCheckInAge, checkInAgePolicy, groupBookingRoomLimit | house rules. petsPolicyText is the site's three-way answer in English (allowed, allowed on request, not allowed); arePetsAllowed is true or false for the first and last and null for "on request" | |
| 💳 | acceptedCards, acceptsCash | how the property takes payment |
| ⭐ | stars, qualityRating | official star rating; qualityRating is Booking's own award for homes and apartments |
spokenLanguages | languages spoken at the property | |
| ❓ | questionsAndAnswers | guest questions with the property's replies and the date asked |
| 📷 | photos, mainPhoto | gallery photos |
licenseNumbers, restaurantsCount | registration numbers, on-site restaurants | |
| 🧭 | surroundings | top attractions, nearby places, airports, public transport, restaurants, cafés and bars, beaches and natural sights: distance in km, coordinates, walking or driving time |
| 📆 | availabilityCalendar | optional: per-day availability and a rounded average price |
scrapedAt | when the row was collected |
How much does it cost?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.001 | $0.001 | $0.001 | $0.001 |
hotel-scraped, per property record written | $0.0025 | $0.00225 | $0.002 | $0.00175 |
availability-calendar, per property with the optional calendar added | $0.001 | $0.0009 | $0.0008 | $0.0007 |
Enterprise plans pay the Business price.
$2.50 per 1,000 hotels on the Free plan, $1.75 on Business. The address, the surroundings and the photos are all inside that. You're charged the calendar event only when a calendar was added, error rows are never charged, and proxy usage and platform usage are included.
- 100 hotels: $0.001 + 100 × $0.0025 = $0.251 ($0.176 on Business).
- 100 hotels with the availability calendar: $0.001 + 100 × ($0.0025 + $0.001) = $0.351 ($0.246 on Business).
With the $5 of monthly credits on Apify's Free plan you can pull about 2,000 property records before paying anything.
How to scrape Booking.com hotel details
- Create a free Apify account and open Booking.com Hotel Details Scraper.
- Add your hotels: paste Booking.com hotel links, slugs or hotel ids. For a long list, use Start URLs with a file or a Google Sheet.
- Choose what each row includes: the street address, the surroundings, a photo cap, and the availability calendar.
- Click Start.
- Download the records as CSV, Excel or JSON. Nested lists such as facilities and surroundings are easiest to work with in JSON.
⬇️ Input
All you have to enter is the hotels. You don't need dates: the record is the same with or without them.
"Max properties in total" caps the run, one row per hotel, and 0 (the default) means no ceiling.
| Input | Type | Notes |
|---|---|---|
hotels | array | Hotel links, country/slug (gb/the-savoy), bare slugs or Booking hotel ids |
startUrls | array | The same hotels as links, a file, or a Google Sheet |
maxItems | number | Ceiling for the whole run, one row per hotel. 0 (default) means no ceiling |
includeAddress | boolean | Look up the street address (on by default). Coordinates are included either way |
includeSurroundings | boolean | Add what is around the property, with distances and travel times (on by default) |
maxPhotos | number | Cap the photo list (default 100, 0 for every photo). The site returns up to 500 |
includeAvailabilityCalendar | boolean | Add per-day availability (off by default) |
calendarStartDate, calendarDays | string, number | Calendar window: starts tomorrow unless set, 61 days by default, which is the site's cap |
checkIn, checkOut, adults, rooms | string, number | Optional. adults and rooms also set the party the calendar is priced for |
currency, language | string | Currency code (default USD) and Booking language code (default en-gb) |
maxConcurrency, delayMs | number | Parallel requests, 1 to 32 (default 32), and an optional pause before each call in ms (default 0). Neither changes the rows |
One hotel with everything on, including the calendar
{"hotels": ["https://www.booking.com/hotel/us/bellagio.html"],"includeAddress": true,"includeSurroundings": true,"maxPhotos": 50,"includeAvailabilityCalendar": true,"calendarDays": 61,"currency": "USD"}
Several hotels, mixing a link, a slug and an id, with a small photo cap
{"hotels": ["https://www.booking.com/hotel/us/bellagio.html", "gb/the-savoy", "245881"],"maxPhotos": 10,"maxItems": 3}
That second input returned Bellagio, The Savoy in London and Marina Bay Sands in Singapore (hotel id 245881) when we ran it on 7 October 2026.
For developers
includeAddresscosts one extra lookup per property, which is why you can turn it off. It also brings the city and the star rating. Coordinates are returned either way.availabilityCalendaris on the row only withincludeAvailabilityCalendar: true, andsurroundingsis absent withincludeSurroundings: false.maxConcurrency(default 32, 1 to 32) is how many requests run at once. Several properties are read together. At 1, properties are read strictly one after another, and you get the same rows in the same order.delayMs(default 0) is an optional pause before each call. Anything above 2000 counts as 2000.- A restarted or migrated run continues from where it stopped. Properties already in the dataset aren't fetched, delivered or billed twice. We tested that by restarting a 500-property run part-way: the same 500 rows as an uninterrupted run.
⬆️ Output
One row per property. This is Bellagio from the first example, run on 7 October 2026. The long lists are cut to a few entries each here, and the real row has 127 facilities, 21 facility groups, 15 rooms, 20 questions, 50 photos, 29 surroundings and 61 calendar days.
{"id": "186104","hotelId": 186104,"name": "Bellagio","slug": "bellagio","url": "https://www.booking.com/hotel/us/bellagio.html","address": "3600 Las Vegas Boulevard South","city": "Las Vegas (Nevada)","countryCode": "US","lat": 36.1120109558105,"lng": -115.175338745117,"stars": 5,"qualityRating": null,"accommodationType": "RESORT","chainIds": [],"hotelCurrency": "USD","rating": 8.6,"ratingScale": 10,"reviewCount": 9586,"ratingBreakdown": [{ "name": "hotel_staff", "score": 8.5, "reviewCount": 9384 },{ "name": "hotel_services", "score": 8.8, "reviewCount": 9415 },{ "name": "hotel_clean", "score": 9.1, "reviewCount": 9407 }],"facilitiesCount": 127,"facilities": ["Minimarket on site", "Vending machine (drinks)", "Designated smoking area", "Air conditioning"],"facilityGroups": [{ "group": "Activities", "facilities": ["Live music/performance", "Happy hour", "Evening entertainment", "Casino", "Golf course (within 3 km)"] }],"spokenLanguages": ["en", "es", "fr", "ja", "zh"],"checkInFrom": "15:00","checkInUntil": null,"checkOutFrom": null,"checkOutUntil": "11:00","partiesPolicy": null,"acceptedCards": ["American Express", "Visa", "Euro/Mastercard", "Diners Club", "JCB", "Discover"],"acceptsCash": false,"minCheckInAge": 21,"checkInAgePolicy": "The minimum age for check-in is 21","groupBookingRoomLimit": 9,"arePetsAllowed": false,"petsPolicyText": "Pets are not allowed.","licenseNumbers": [],"restaurantsCount": 1,"rooms": [{ "roomId": 18610403, "name": "Strip View Spa King" },{ "roomId": 18610404, "name": "Salone Suite" }],"questionsAndAnswers": [{ "question": "I’m booking for my family aged 50,45, 25 and 20 I read online somewhere you have to be 21 to be able to stay in this hotel, is that true ?", "answer": "Good Afternoon, Guests must be at least 21 years of age in order to check into the hotel.", "askedAt": "2022-08-23", "askedAtText": "23 August 2022" }],"photos": ["https://cf.bstatic.com/xdata/images/hotel/max1024x768/193378702.jpg?k=98609da2fd2d673cc37ba59a55f4352cdcb38c689f155a70aee694b6c8810861&o="],"mainPhoto": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/193378702.jpg?k=98609da2fd2d673cc37ba59a55f4352cdcb38c689f155a70aee694b6c8810861&o=","scrapedAt": "2026-10-07T20:35:25.090Z","currency": "USD","input": "https://www.booking.com/hotel/us/bellagio.html","surroundings": [{ "category": "nearby", "name": "Bellagio Fountains", "type": "Fountains", "distanceKm": 0.155, "lat": 36.112778, "lng": -115.17389, "commuteMode": "walk", "commuteMeters": 417, "commuteMinutes": 5 },{ "category": "topAttraction", "name": "Mob Museum", "type": "Museums", "distanceKm": 7.429, "lat": 36.1729930000001, "lng": -115.14125, "commuteMode": "drive", "commuteMeters": 7938, "commuteMinutes": 11 },{ "category": "airport", "name": "Harry Reid International Airport", "type": "Airports", "distanceKm": 1.658, "lat": 36.0828, "lng": -115.153, "commuteMode": "walk", "commuteMeters": 2189, "commuteMinutes": 26 },{ "category": "restaurant", "name": "Juice Press", "type": "Restaurants", "cuisine": null, "distanceKm": 0.121, "lat": 36.11306052, "lng": -115.1757063, "commuteMode": "walk", "commuteMeters": 54, "commuteMinutes": 1 }],"availabilityCalendar": [{ "date": "2026-10-08", "isAvailable": true, "minLengthOfStay": 1, "avgPrice": 270, "avgPriceText": "270" },{ "date": "2026-10-09", "isAvailable": true, "minLengthOfStay": 1, "avgPrice": 417, "avgPriceText": "417" },{ "date": "2026-10-10", "isAvailable": true, "minLengthOfStay": 1, "avgPrice": 497, "avgPriceText": "497" }]}
What to know about a few of these:
- Pets.
petsPolicyTextis one of three sentences: "Pets are allowed.", "Pets are allowed on request." or "Pets are not allowed."arePetsAllowedis true for the first, false for the last, and null for "on request", because the property decides that per booking. In our 16-property sample, 13 said not allowed and 3 said on request. - Stars and quality rating.
starsis the official hotel rating. Homes and apartments getqualityRating, Booking's own award. In our sample the riads, the apartments and a guest house had a quality rating and no stars. - Currencies.
currencyis what the prices on the row are quoted in, set by the "Currency" input.hotelCurrencyis the property's own market currency, which is often a different one. - Surroundings. These are grouped by
category:topAttraction(up to 10),nearby(up to 10),airport(up to 3),publicTransport(metro, train and bus stops),restaurantandcafeBar(up to 3 each, withcuisine), andbeachandnaturalBeautywhere there are any.distanceKmis the straight-line distance.commuteMode,commuteMetersandcommuteMinutesare the shortest way there as Booking.com gives it (walkordrive). Three hotels we measured had 33 to 35 places each. - The calendar. It comes in date order, one entry per night. A night with no price is a night with no availability:
avgPriceandavgPriceTextare both null there, not zero. The prices are the site's own rounded averages, quoted as Booking.com shows them to a visitor in the United States on every run. - Empty house rules. Some rules are published by only a minority of properties.
licenseNumberscame back only on Japanese hotels, where the law requires it, andgroupBookingRoomLimitonly where a hotel sets one. A property with no reviews has an emptyrating, not 0.
How many properties, and how fast?
You get one row per property, and the row is large.
| Run | Rows | Time |
|---|---|---|
| Two properties, address on | 2 | 2 to 8 s |
| 14 properties, address and calendar on | 14 | 8 to 24 s |
| 500 properties, address on | 500 | 68 s |
These are whole runs on Apify with start-up included, measured on 2 October 2026. Booking.com's answer time for a property record varies through the day, which is the spread. The 500-property run worked out at about 440 properties a minute, and thousands fit in the default one-hour run limit.
FAQ
Can I give it a hotel name?
No, and that's deliberate. A name can match several hotels, and this actor never substitutes one property for another. Pass a link, a slug or a Booking hotel id. If you only have names, Booking.com Hotel Search Scraper returns the link and id of each property in a destination.
What if my link or slug is slightly wrong?
You get an error row, free of charge, naming the nearest hotel Booking suggests and its id. If that's the right property, pass that id.
How do I find the pet-friendly properties in my list?
Filter on petsPolicyText. arePetsAllowed === true gives you only the properties that say yes outright, and the "on request" ones are null there, which keeps them out of a strict filter and lets you treat them as a maybe.
Why are some house-rule fields empty?
The property published no statement for them. An empty parties policy means the site said nothing, not that parties are allowed.
How far ahead does the availability calendar go, and can I book at its prices?
61 days, which is Booking.com's ceiling. Its prices are rounded by the site, and they're a signal of availability and trend. For exact rates use Booking.com Room Rates Scraper, or Booking.com Hotel Search Scraper for one price per property across a destination.
Do I need proxies or a Booking.com account?
You don't need either. Property pages are read without any login, and the price covers the proxy usage.
What doesn't it return?
- Smoking and quiet-hours rules. The properties we measured didn't publish them.
- Room prices, sizes and bed types.
roomsis the list of room types with ids. The rates actor has the rest. - Reviews themselves. You get the scores and counts here, and the text from Booking.com Reviews Scraper.
- Star ratings on many property types, because Booking shows none for them.
Is it legal to scrape Booking.com hotel pages?
A property record is public listing content that Booking.com shows to any visitor, and the actor doesn't sign in or touch private data. Scraping public pages is generally lawful in the UK, EU and US. Photos and descriptions can be copyrighted by the property or by Booking.com, so check before you republish them.
Enriching a hotel list from your own stack
The common job is enrichment: you already have hotel ids or links, and you want facilities, policies and review scores joined on. One request does it for a short list:
POST https://api.apify.com/v2/acts/boncross~booking-hotel-details/run-sync-get-dataset-items
Send the input JSON as the body and the records come back in the response. The apify-client package for JavaScript or Python handles longer runs, and Apify's integrations can drop the rows into Airtable or Google Sheets. An AI agent can call booking-hotel-details with a hotel link through the Apify MCP server at mcp.apify.com and reason over the structured record it gets back.
More from BonCross
- Booking.com Hotel Search Scraper: Every hotel Booking.com is selling for a destination and your dates.
- Booking.com Reviews Scraper: Every Booking.com guest review for any hotel.
- Booking.com Room Rates Scraper: Every room Booking.com is selling for a hotel and your dates.
- Expedia Hotel Details Scraper: The full property record from Expedia and Hotels.com.
- Expedia Hotel Search Scraper: Every hotel Expedia and Hotels.com list for a destination and your dates.
- Expedia Room Rates Scraper: Every room Expedia and Hotels.com are selling for a hotel and your dates.
Your feedback
Is there something on a Booking.com property page that isn't in the record? Tell us which page and which detail on the Issues tab in Apify Console. We read each one and reply there.