
Booking.com Hotels Scraper
hipersoft/booking-hotels-scraper
Scrape Booking.com hotels and accommodation in bulk: name, type, address, city, country, coordinates, review score, review count, star rating, price, image and link. For travel, price research and n8n.
Total users
1Monthly users
0Total runs
74Per hotel scraped
$0.004Last rebuilt
Oct 26, 2026Overview
Scrape Booking.com hotels and accommodation in bulk and export name, property type, address, city, country, coordinates, review score, review count, star rating, price, image and link as structured data. Paste one or more Booking.com search URLs, or just type a destination with your dates, and get back clean JSON, CSV, Excel or XML.
What does Booking.com Hotels Scraper do?
Booking.com Hotels Scraper collects properties from Booking.com search results. Give it a city or a full Booking.com search URL — or a destination plus check-in/check-out dates — and it walks the results pages and returns one row per property: the name and type, full address with city and country, map coordinates, guest review score and count, official star rating, the displayed price and currency, a lead image and a direct link. Results stream into a dataset you can download or pull through the Apify API.
What data can you scrape from Booking.com?
| Data point | Description |
|---|---|
| Name | Property name as shown on Booking.com |
| Type | Accommodation type, e.g. Hotel, Apartment, Resort, Guesthouse |
| Address | Street address of the property |
| City & country | City name and 2-letter country code |
| Coordinates | Latitude and longitude for mapping |
| Review score | Guest review score (out of 10) |
| Review count | Total number of guest reviews |
| Star rating | Official star rating of the property |
| Price | Displayed price for the stay, plus currency |
| Free cancellation | Whether free cancellation is offered |
| Image | Lead photo URL |
| URL | Direct link to the property page |
What you get
One record per property:
{
"name": "The Fullerton Hotel Singapore",
"type": "Hotel",
"address": "1 Fullerton Square",
"city": "Singapore",
"country": "SG",
"latitude": 1.286476,
"longitude": 103.853058,
"reviewScore": 9.2,
"reviewCount": 4141,
"starRating": 5,
"price": 385.4,
"currency": "USD",
"url": "https://www.booking.com/hotel/sg/the-fullerton-singapore.html",
"image": "https://cf.bstatic.com/xdata/images/hotel/square600/....webp",
"freeCancellation": true
}
Output schema
| Field | Type | Description |
|---|---|---|
name |
string | Property name as shown in search results. |
type |
string | Accommodation type, e.g. Hotel, Apartment, Resort. |
address |
string | Street address of the property. |
city |
string | City the property is located in. |
country |
string | 2-letter country code, e.g. SG, GB, US. |
latitude |
number | Property latitude coordinate. |
longitude |
number | Property longitude coordinate. |
reviewScore |
number | Guest review score out of 10. |
reviewCount |
number | Total number of guest reviews. |
starRating |
number | Official star rating of the property. |
price |
number | Displayed price for the selected stay. |
currency |
string | Currency code for the price, e.g. USD, GBP. |
url |
string (URL) | Direct link to the property page. |
image |
string (URL) | URL of the property's lead photo. |
freeCancellation |
boolean | True when free cancellation is offered. |
Prices appear only when both check-in and check-out dates are set (in the URL or the date fields). A destination-only search still returns names, ratings, location and links.
Use cases
- Benchmark nightly and total prices across hotels in a market.
- Track review scores and review counts of competing properties over time.
- Map available inventory in a city or neighborhood using the coordinates.
- Build datasets for revenue-management and dynamic-pricing models.
- Compare star ratings, property types and cancellation policies.
- Enrich travel, real-estate and price-comparison apps with live hotel data.
How to scrape Booking.com hotels
- Add Booking.com Hotels Scraper to your Apify account and open the input.
- Either paste one or more Booking.com search URLs into searchUrls, or type a destination (e.g. "Singapore") with checkIn / checkOut dates and adults.
- Set maxItems to cap how many properties you collect in total.
- Optionally set a currency (e.g. USD, EUR, GBP, SGD).
- Click Run and watch properties stream into the dataset.
- Export the results as JSON, CSV, Excel or XML, or pull them through the Apify API.
Input
{
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Singapore&group_adults=2&no_rooms=1&group_children=0"
],
"destination": "London",
"checkIn": "2026-09-20",
"checkOut": "2026-09-22",
"adults": 2,
"maxItems": 50,
"currency": "USD"
}
| Field | Description |
|---|---|
searchUrls |
Booking.com search-result URLs to scrape (dates/guests/filters in the URL are respected). |
destination |
A city or place to search when you have not pasted a URL. |
checkIn / checkOut |
Stay dates in YYYY-MM-DD; required for prices. |
adults |
Number of adult guests for the structured search. |
maxItems |
Maximum number of properties to collect in total. |
currency |
3-letter currency code for displayed prices. |
proxyConfiguration |
Proxy settings; the default is tuned for reliable results. |
Using Booking.com Hotels Scraper with n8n and Make
The dataset is available over the Apify API, so you can wire it into no-code and automation tools. In n8n, use the Apify node (or an HTTP Request node) to start a run and read the dataset items, then push hotels into a database, spreadsheet or notification. The same works in Make, Zapier and any workflow that can call a REST API.
FAQ
How many hotels can I scrape?
As many as the search results contain — set maxItems to control the total volume. Booking.com returns 25 properties per results page.
Why are some prices empty?
Prices only appear when both check-in and check-out dates are provided. Add them to the search URL, or fill the checkIn and checkOut fields, to get pricing.
Can I scrape a specific city, region or filtered search?
Yes. Open the search you want on Booking.com — set the destination, dates, guests and any filters — then copy the URL from the address bar into searchUrls.
What formats can I export? JSON, CSV, Excel and XML, or pull the data live through the Apify API.
Can I automate it on a schedule? Yes. Use Apify Schedules to run the actor at any interval and keep your hotel dataset fresh.
Related scrapers
Original clean-room implementation.
Input
| Field | Type | Description |
|---|---|---|
searchUrlsBooking.com search URLs | array | Paste one or more Booking.com search-result URLs (open a city/area search on Booking.com, copy the address bar). Dates, guests and filters set in the URL are respected. One URL per line. You can use this together with, or instead of, the structured search belo |
destinationDestination | string | A city, region or place to search (e.g. "Singapore", "London", "Bali"). Used to build a Booking.com search when you have not pasted a search URL above. |
checkInCheck-in date | string | Check-in date in YYYY-MM-DD format (e.g. 2026-09-20). Optional — prices only appear when both check-in and check-out are set. Used with the Destination field. |
checkOutCheck-out date | string | Check-out date in YYYY-MM-DD format (e.g. 2026-09-22). Optional — prices only appear when both check-in and check-out are set. Used with the Destination field. |
adultsAdults | integer | Number of adult guests for the structured Destination search. Default: 2 |
maxItemsMax hotels | integer | Maximum number of hotels to collect in total across all searches (Booking.com returns 25 per page). Default: 50 |
currencyCurrency | string | 3-letter currency code for displayed prices (e.g. USD, EUR, GBP, SGD). Applied to structured searches and to pasted URLs that do not already set a currency. Default: "USD" |
proxyConfigurationProxy configuration | object | Proxy configuration. Leave the default — it is tuned for reliable results. Default: {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]} |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~booking-hotels-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Singapore&group_adults=2&no_rooms=1&group_children=0"
],
"destination": "Singapore"
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/booking-hotels-scraper").call(run_input={
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Singapore&group_adults=2&no_rooms=1&group_children=0"
],
"destination": "Singapore"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/booking-hotels-scraper').call({
"searchUrls": [
"https://www.booking.com/searchresults.html?ss=Singapore&group_adults=2&no_rooms=1&group_children=0"
],
"destination": "Singapore"
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Hotel Scraped Charged per hotel scraped. | $0.004 | $0.002 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.