Booking.com Scraper
Pricing
from $1.99 / 1,000 results
Booking.com Scraper
Scrape Booking.com hotel listings with ease. Extract prices, reviews, availability & ratings instantly. Perfect for price monitoring, travel market research, competitor analysis & accommodation data collection. Scale your data insights.
Pricing
from $1.99 / 1,000 results
Rating
5.0
(6)
Developer
Shahid Irfan
Maintained by CommunityActor stats
2
Bookmarked
23
Total users
5
Monthly active users
12 days ago
Last modified
Categories
Share
What does Booking.com Scraper do?
Booking.com Scraper collects structured hotel listings from a public Booking.com search results URL. Enter a search URL with the destination, dates, and guest details, then receive one dataset item per unique property with hotel identity, location, ratings, displayed prices, booking policy flags, sustainability signals, and image URLs.
Use the dataset for travel market research, accommodation catalogs, price and position monitoring, hospitality competitor analysis, or travel applications that need structured Booking.com listing data. The Actor follows pagination until it reaches your requested result limit or the configured page limit.
Why use Booking.com Scraper?
- Compare hotel supply - Build city and destination datasets with property names, addresses, coordinates, accommodation types, star ratings, and review counts.
- Monitor pricing signals - Save displayed stay prices, average nightly amounts, original prices, currencies, and price text when Booking.com publishes them for the search.
- Analyze booking policies - Identify free cancellation, no-prepayment, pet, meal-plan, and other listing-level policy signals.
- Create hospitality catalogs - Keep direct Booking.com URLs, descriptions, badges, certifications, and photo URLs in a reusable dataset.
- Automate repeat collection - Run on demand or schedule runs in Apify, then export the results or send them to downstream tools through the Apify API, webhooks, and integrations.
- Avoid repeated properties - Duplicate listings are removed by property identity before they are saved.
What data can you extract from Booking.com?
Each dataset item represents a unique hotel or accommodation listing. Optional fields are included only when Booking.com provides them for that result.
| Field | Type | Description |
|---|---|---|
searchUrl | String | Normalized Booking.com search URL used for collection. |
searchLocation | String | Destination text from the search. |
checkinDate | String | Check-in date from the search, when provided. |
checkoutDate | String | Check-out date from the search, when provided. |
stayLengthDays | Integer | Length of stay from the search, when provided. |
rooms | Integer | Number of rooms requested. |
adults | Integer | Number of adults requested. |
children | Integer | Number of children requested. |
hotelId | Integer | Booking.com property identifier. |
hotelName | String | Display name of the property. |
hotelUrl | String | Direct Booking.com property page URL. |
address | String | Property address, when published. |
city | String | Property city. |
countryCode | String | Country code associated with the property. |
latitude | Number | Property latitude, when available. |
longitude | Number | Property longitude, when available. |
displayLocation | String | Location text shown on the listing card. |
starRating | Number | Property star rating. |
reviewScore | Number | Main Booking.com review score. |
reviewCount | Integer | Main Booking.com review count. |
reviewScoreText | String | Human-readable review score label. |
finalPriceAmount | Number | Final price amount from the best available listing block. |
finalPriceCurrency | String | Currency for finalPriceAmount. |
originalPriceAmount | Number | Original price before a displayed reduction, when available. |
originalPriceCurrency | String | Currency for originalPriceAmount. |
displayPriceText | String | Price text shown on the listing card. |
displayPriceAmount | Number | Numeric displayed stay price, when available. |
displayPriceCurrency | String | Currency for displayPriceAmount. |
averageNightlyAmount | Number | Average nightly price, when available. |
averageNightlyCurrency | String | Currency for averageNightlyAmount. |
freeCancellation | Boolean | Whether free cancellation is shown for the listing. |
noPrepaymentNeeded | Boolean | Whether no prepayment is shown. |
petsAllowedFree | Boolean | Whether pets are shown as allowed free of charge. |
mealPlan | String | Included meal-plan text, when available. |
mealPlanType | String | Included meal-plan type, when available. |
description | String | Listing description or summary. |
isPreferred | Boolean | Preferred listing flag. |
isSustainable | Boolean | Sustainability flag. |
certifications | Array of Strings | Sustainability certifications shown for the property. |
uspBadges | Array of Strings | Property benefits or selling-point badges. |
cardLabels | Array of Strings | Labels displayed on the listing card. |
photoUrls | Array of Strings | Available property photo URLs. |
topPhotoUrls | Array of Strings | Main or top photo URLs, when available. |
How to use Booking.com Scraper
- Open Booking.com Scraper in Apify Console.
- Paste a public Booking.com search results URL into
startUrl. Include dates and guest details when you need date-specific price signals. - Set
results_wantedto the maximum number of unique properties to save. - Adjust
max_pagesif the target search requires more or fewer result pages. - Optionally configure an Apify Proxy in
proxyConfiguration. - Start the run and open the dataset when it finishes.
- Download the results or connect the dataset to your workflow.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | Yes | London search URL | Booking.com search results, city, or country URL. The Actor normalizes the URL and uses the destination and guest parameters present in it. |
results_wanted | Integer | No | 20 | Maximum number of unique hotel listings to save. |
max_pages | Integer | No | 10 | Maximum number of result pages to process as a safety limit. |
proxyConfiguration | Object | No | Not used | Optional Apify Proxy settings. For protected or inconsistent searches, use an appropriate proxy configuration. |
Usage Examples
Basic hotel listing collection
Use a Booking.com search URL and collect up to 20 unique properties.
{"startUrl": "https://www.booking.com/searchresults.html?ss=London%2C+Greater+London%2C+United+Kingdom&group_adults=2&no_rooms=1&group_children=0","results_wanted": 20}
Larger destination dataset
Increase both limits when you need more properties from a destination search.
{"startUrl": "https://www.booking.com/searchresults.html?ss=Paris%2C+Ile-de-France%2C+France&group_adults=2&no_rooms=1&group_children=0","results_wanted": 150,"max_pages": 20}
Collection with Apify Proxy
Enable an Apify residential proxy when the target search is inconsistent or needs additional connection reliability.
{"startUrl": "https://www.booking.com/searchresults.html?ss=Dubai%2C+United+Arab+Emirates&checkin=2026-09-10&checkout=2026-09-13&group_adults=2&no_rooms=1&group_children=0","results_wanted": 60,"max_pages": 12,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
The following is an example of one dataset item. Price, date, policy, and badge fields can vary with the search URL and the information published for each listing.
{"searchUrl": "https://www.booking.com/searchresults.html?ss=London%2C+Greater+London%2C+United+Kingdom&group_adults=2&no_rooms=1&group_children=0&lang=en-us","searchLocation": "London, Greater London, United Kingdom","rooms": 1,"adults": 2,"children": 0,"hotelId": 1929259,"hotelName": "Montcalm Royal London House, London City","hotelUrl": "https://www.booking.com/hotel/gb/the-montcalm-royal-london-house.html","address": "Royal London House, 22-25 Finsbury Square","city": "London","countryCode": "gb","latitude": 51.5201,"longitude": -0.0844,"displayLocation": "Islington, London","starRating": 5,"reviewScore": 8.5,"reviewCount": 8880,"reviewScoreText": "Very good","displayPriceText": "Price for 1 night, 2 adults","displayPriceAmount": 245.0,"displayPriceCurrency": "GBP","averageNightlyAmount": 245.0,"averageNightlyCurrency": "GBP","freeCancellation": false,"noPrepaymentNeeded": false,"isPreferred": true,"isSustainable": true,"certifications": ["Green Key (FEE)"],"photoUrls": ["https://cf.bstatic.com/xdata/images/hotel/square600/86639018.webp"],"topPhotoUrls": ["https://cf.bstatic.com/xdata/images/hotel/square600/86639018.webp"]}
Tips for best results
- Use a complete Booking.com search URL copied after selecting the destination, dates, guests, and rooms.
- Include check-in and check-out dates when you need meaningful price or cancellation signals. Listing prices depend on the search context.
- Start with
results_wanted: 20to confirm the destination and output before requesting a larger dataset. - Increase
max_pageswhen the result limit is higher than the first page can provide. - Use
proxyConfigurationwhen a run returns no listings or the source page is inconsistent. - Review the dataset preview before scheduling recurring collection. Public listing content and field availability can change.
Integrations and export formats
Apify datasets can be used directly in other workflows or downloaded in common formats.
| Option | Useful for |
|---|---|
| JSON | Applications, data pipelines, and AI or RAG workflows. |
| CSV | Spreadsheet analysis and quick imports. |
| Excel | Travel reporting and business analysis. |
| XML | Systems that require XML feeds. |
| Google Sheets | Shared destination and competitor reports. |
| Webhooks | Notifying another service after a run completes. |
| Make or Zapier | No-code workflow automation. |
| Apify API | Starting runs and reading datasets programmatically. |
Frequently Asked Questions
Can I collect Booking.com listings for a specific destination?
Yes. Set startUrl to a Booking.com search URL for the destination you want to analyze. City and country pages are also supported when they resolve to a search results page.
Can I collect multiple destinations in one run?
No. This Actor processes one startUrl per run. Create separate runs for separate destinations, or schedule multiple runs when you need recurring coverage.
Does the Actor return room-level availability?
No. The dataset contains listing-card information and listing-level price and policy signals. Room inventory, exact room options, and availability can depend on the dates, guests, and session used for the search.
Why are price or policy fields missing?
Fields can be missing when Booking.com does not publish them for a listing or when the search URL does not include dates and guest details. The Actor omits empty values from each dataset item.
How many hotel listings can I collect?
Set results_wanted to your desired maximum and use max_pages as the page-processing limit. The Actor stops when it reaches the result limit or has no additional results to save.
Can I export Booking.com data to CSV or Excel?
Yes. Apify datasets support CSV, Excel, JSON, XML, and other export options available in Apify Console.
Can I schedule recurring Booking.com data collection?
Yes. Create an Apify schedule to run the Actor hourly, daily, weekly, or at a custom interval, then connect the run to a dataset, webhook, or integration.
Is it legal to collect Booking.com data?
Public web data collection can be subject to laws, privacy requirements, and website terms. You are responsible for using the Actor lawfully, respecting Booking.com rules, and handling downloaded data responsibly.
Related Actors
- Agoda Hotels Scraper ๐จ - Collect hotel data from another major accommodation marketplace.
- Expedia Hotels Scraper - Gather Expedia hotel listings, prices, ratings, and location data.
- Trip.com Hotels Scraper - Collect Trip.com hotel listings for travel comparison workflows.
Support
For bugs, field requests, or source changes, use the Issues tab on the Actor page or contact the developer through Apify. Include the input URL, run ID, and a short description of the missing or unexpected result.
Legal Notice
This Actor is intended for legitimate collection and analysis of publicly available Booking.com listing information. You are responsible for complying with Booking.com terms, applicable laws, privacy obligations, and any restrictions that apply to your intended use of the data.