Booking.com Hotel Scraper
Pricing
Pay per usage
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
Actor stats
0
Bookmarked
2
Total users
2
Monthly active users
a day ago
Last modified
Categories
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
startUrlsif you prefer to provide a Booking.com search URL directly
Input
The Actor supports two modes:
Mode 1 — Structured search (recommended)
Fill in the fields and the Actor builds the URL for you.
| Field | Type | Default | Description |
|---|---|---|---|
location | String | "Ahmedabad, India" | Destination name, e.g. "Paris, France" |
checkIn | String (YYYY-MM-DD) | "2026-06-01" | Check-in date |
checkOut | String (YYYY-MM-DD) | "2026-06-05" | Check-out date — must be after check-in |
adults | Integer ≥ 1 | 2 | Number of adult guests |
children | Integer ≥ 0 | 0 | Number of child guests |
childAges | Integer[] (0–17) | [] | Age of each child — must have one entry per child. Example: 3 children aged 2, 5 and 13 → [2, 5, 13] |
rooms | Integer ≥ 1 | 1 | Number 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.
| Field | Type | Description |
|---|---|---|
startUrls | Array 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.
| Field | Type | Description |
|---|---|---|
url | String | Full Booking.com property page URL |
title | String | HTML page title (includes location and year) |
name | String | Clean property name |
address | String | Property address |
bedrooms | String | Selected room / bedroom type label |
adults | String | Number of adults from the search |
rooms | String | Number of rooms from the search |
price | String | Displayed total price as a numeric string (e.g. "4,500") |
images | String[] | Array of full image URLs from the property gallery |
featuresList | String[] | Highlighted features (e.g. "Free Wifi", "Outdoor swimming pool") |
facilities | String[] | Popular facilities (e.g. "Fitness center", "Room service") |
description | String | Full property description text |
homeRules | Object | House rules as a flat key/value map — keys include Check-in, Check-out, Cancellation and prepayment, Child policies, Pets, etc. |
importantInfo | String | Text from the Important Information section |
coordinates | Object | GPS coordinates: { latitude, longitude } |
GoogleAddress | String | Primary address from Google Maps reverse geocoding |
GoogleAddress2 | String | Secondary 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
- Install dependencies:
$npm install
- Edit
storage/key_value_stores/default/INPUT.jsonwith your search parameters. - Run the Actor:
$apify run
Results are saved to storage/datasets/default/.
Deploy to Apify
Option A — Push from local machine
apify loginapify push
Option B — Connect a Git repository
- Go to Apify Console → New Actor
- Click Link Git Repository and follow the prompts.