Booking.com Hotel Details Scraper avatar

Booking.com Hotel Details Scraper

Pricing

from $1.75 / 1,000 hotel-scrapeds

Go to Apify Store
Booking.com Hotel Details Scraper

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

BonCross API

Maintained by Community

Actor 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?

FieldNotes
🏨hotelId, name, slug, url, accommodationTypethe property
📍address, city, countryCode, lat, lngfull location
chainIdschain membership
currency, hotelCurrencythe currency calendar prices are quoted in, and the property's own
💬rating, ratingScale, reviewCountguest score out of 10
📊ratingBreakdownscore and review count per category: staff, cleanliness, value and so on
facilities, facilityGroups, facilitiesCountevery facility, and grouped
🛏roomsthe room types the property lists, each with its roomId and name
🕓checkInFrom, checkInUntil, checkOutFrom, checkOutUntilas the site states them
partiesPolicy, arePetsAllowed, petsPolicyText, minCheckInAge, checkInAgePolicy, groupBookingRoomLimithouse 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, acceptsCashhow the property takes payment
⭐stars, qualityRatingofficial star rating; qualityRating is Booking's own award for homes and apartments
spokenLanguageslanguages spoken at the property
❓questionsAndAnswersguest questions with the property's replies and the date asked
📷photos, mainPhotogallery photos
licenseNumbers, restaurantsCountregistration numbers, on-site restaurants
🧭surroundingstop attractions, nearby places, airports, public transport, restaurants, cafés and bars, beaches and natural sights: distance in km, coordinates, walking or driving time
📆availabilityCalendaroptional: per-day availability and a rounded average price
scrapedAtwhen the row was collected

How much does it cost?

EventFree planStarterScaleBusiness
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

  1. Create a free Apify account and open Booking.com Hotel Details Scraper.
  2. 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.
  3. Choose what each row includes: the street address, the surroundings, a photo cap, and the availability calendar.
  4. Click Start.
  5. 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.

InputTypeNotes
hotelsarrayHotel links, country/slug (gb/the-savoy), bare slugs or Booking hotel ids
startUrlsarrayThe same hotels as links, a file, or a Google Sheet
maxItemsnumberCeiling for the whole run, one row per hotel. 0 (default) means no ceiling
includeAddressbooleanLook up the street address (on by default). Coordinates are included either way
includeSurroundingsbooleanAdd what is around the property, with distances and travel times (on by default)
maxPhotosnumberCap the photo list (default 100, 0 for every photo). The site returns up to 500
includeAvailabilityCalendarbooleanAdd per-day availability (off by default)
calendarStartDate, calendarDaysstring, numberCalendar window: starts tomorrow unless set, 61 days by default, which is the site's cap
checkIn, checkOut, adults, roomsstring, numberOptional. adults and rooms also set the party the calendar is priced for
currency, languagestringCurrency code (default USD) and Booking language code (default en-gb)
maxConcurrency, delayMsnumberParallel 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

  • includeAddress costs 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.
  • availabilityCalendar is on the row only with includeAvailabilityCalendar: true, and surroundings is absent with includeSurroundings: 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. petsPolicyText is one of three sentences: "Pets are allowed.", "Pets are allowed on request." or "Pets are not allowed." arePetsAllowed is 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. stars is the official hotel rating. Homes and apartments get qualityRating, Booking's own award. In our sample the riads, the apartments and a guest house had a quality rating and no stars.
  • Currencies. currency is what the prices on the row are quoted in, set by the "Currency" input. hotelCurrency is 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), restaurant and cafeBar (up to 3 each, with cuisine), and beach and naturalBeauty where there are any. distanceKm is the straight-line distance. commuteMode, commuteMeters and commuteMinutes are the shortest way there as Booking.com gives it (walk or drive). 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: avgPrice and avgPriceText are 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. licenseNumbers came back only on Japanese hotels, where the law requires it, and groupBookingRoomLimit only where a hotel sets one. A property with no reviews has an empty rating, not 0.

How many properties, and how fast?

You get one row per property, and the row is large.

RunRowsTime
Two properties, address on22 to 8 s
14 properties, address and calendar on148 to 24 s
500 properties, address on50068 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.

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. rooms is 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.

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

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.