Booking.com Hotel Scraper avatar

Booking.com Hotel Scraper

Pricing

Pay per usage

Go to Apify Store
Booking.com Hotel Scraper

Booking.com Hotel Scraper

Scrape hotel listings from Booking.com search results. Provide a destination, check-in/check-out dates, number of adults, children (with ages), and rooms — the Actor builds the search URL and crawls every property listing automatically.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

ScrapySpider

ScrapySpider

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

a day ago

Last modified

Share

Scrape hotel and property listings from Booking.com. Provide a destination, dates, and guest counts — the Actor builds the search URL, scrolls through all results, visits every property page, and returns rich structured data.


Features

  • Structured search input — fill in location, dates, adults, children (with ages), and rooms; the Actor builds the Booking.com search URL automatically
  • Automatic infinite scroll — loads all listings on the search-results page before following links
  • Popup auto-dismiss — presses Escape on every page load to handle sign-in and cookie popups
  • Rich detail extraction — images, features, facilities, description, house rules, important info, GPS coordinates, and Google-reverse-geocoded address
  • Proxy support — works with Apify Proxy or your own proxies to avoid IP blocking
  • Direct URL mode — also accepts raw startUrls if you prefer to provide a Booking.com search URL directly

Input

The Actor supports two modes:

Fill in the fields and the Actor builds the URL for you.

FieldTypeDefaultDescription
locationString"Ahmedabad, India"Destination name, e.g. "Paris, France"
checkInString (YYYY-MM-DD)"2026-06-01"Check-in date
checkOutString (YYYY-MM-DD)"2026-06-05"Check-out date — must be after check-in
adultsInteger ≥ 12Number of adult guests
childrenInteger ≥ 00Number of child guests
childAgesInteger[] (0–17)[]Age of each child — must have one entry per child. Example: 3 children aged 2, 5 and 13 → [2, 5, 13]
roomsInteger ≥ 11Number of rooms

Example INPUT.json:

{
"location": "Ahmedabad, India",
"checkIn": "2026-06-01",
"checkOut": "2026-06-05",
"adults": 3,
"children": 5,
"childAges": [2, 4, 4, 5, 13],
"rooms": 3
}

Mode 2 — Direct start URLs (advanced)

Provide one or more fully-formed Booking.com search-results URLs. When startUrls is set, the location/date/guest fields are ignored.

FieldTypeDescription
startUrlsArray of { url }One or more Booking.com search-results page URLs

Example INPUT.json:

{
"startUrls": [
{ "url": "https://www.booking.com/searchresults.html?ss=Ahmedabad%2C+India&checkin=2026-06-01&checkout=2026-06-05&group_adults=2&no_rooms=1&group_children=0" }
]
}

Output

Each property is saved as one item in the Apify Dataset.

FieldTypeDescription
urlStringFull Booking.com property page URL
titleStringHTML page title (includes location and year)
nameStringClean property name
addressStringProperty address
bedroomsStringSelected room / bedroom type label
adultsStringNumber of adults from the search
roomsStringNumber of rooms from the search
priceStringDisplayed total price as a numeric string (e.g. "4,500")
imagesString[]Array of full image URLs from the property gallery
featuresListString[]Highlighted features (e.g. "Free Wifi", "Outdoor swimming pool")
facilitiesString[]Popular facilities (e.g. "Fitness center", "Room service")
descriptionStringFull property description text
homeRulesObjectHouse rules as a flat key/value map — keys include Check-in, Check-out, Cancellation and prepayment, Child policies, Pets, etc.
importantInfoStringText from the Important Information section
coordinatesObjectGPS coordinates: { latitude, longitude }
GoogleAddressStringPrimary address from Google Maps reverse geocoding
GoogleAddress2StringSecondary address from Google Maps reverse geocoding

Example output item:

{
"url": "https://www.booking.com/hotel/in/itc-narmada-a-luxury-collection.html?...",
"title": "ITC Narmada, a Luxury Collection Hotel, Ahmedabad (updated prices 2026)",
"name": "ITC Narmada, a Luxury Collection Hotel, Ahmedabad",
"address": "Survey # 104 A, Judges Bunglow Road, Vastrapur, 380015 Ahmedabad, India",
"bedrooms": "King Room with City View - Club Level",
"adults": "3",
"rooms": "3",
"price": "14,671",
"images": [
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/590624878.jpg?k=...&o=",
"https://cf.bstatic.com/xdata/images/hotel/max1024x768/487539087.jpg?k=...&o="
],
"featuresList": [
"Free Wifi",
"Outdoor swimming pool",
"Very Good Breakfast",
"Free on-site parking",
"Fitness center"
],
"facilities": [
"Outdoor swimming pool",
"Free Wifi",
"Fitness center",
"Room service",
"Free parking",
"5 restaurants"
],
"description": "Elegant Accommodations: Rooms feature air-conditioning, private bathrooms, city views, and modern amenities...",
"homeRules": {
"Check-in": "From 3:00 PM",
"Check-out": "Until 12:00 PM",
"Cancellation and prepayment": "policies vary according to accommodation type.",
"Child policies": "Children of all ages are welcome.",
"Age restriction": "The minimum age for check-in is 18",
"Pets": "are not allowed."
},
"importantInfo": "Guests are required to show a photo identification and credit card upon check-in...",
"coordinates": { "latitude": 23.029633, "longitude": 72.529972 },
"GoogleAddress": "Itc Narmada, Survey # 104 A, Judges Bunglow Rd, Vastrapur, Ahmedabad, Gujarat 380015, India",
"GoogleAddress2": "Itc Narmada, Survey # 104A, Judges Bunglow Rd, Vastrapur, Ahmedabad, Gujarat 380015, India"
}

Running locally

  1. Install dependencies:
    $npm install
  2. Edit storage/key_value_stores/default/INPUT.json with your search parameters.
  3. Run the Actor:
    $apify run

Results are saved to storage/datasets/default/.


Deploy to Apify

Option A — Push from local machine

apify login
apify push

Option B — Connect a Git repository

  1. Go to Apify Console → New Actor
  2. Click Link Git Repository and follow the prompts.

Resources