Booking.com Scraper avatar

Booking.com Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
Booking.com Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

2

Bookmarked

23

Total users

5

Monthly active users

12 days ago

Last modified

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.

FieldTypeDescription
searchUrlStringNormalized Booking.com search URL used for collection.
searchLocationStringDestination text from the search.
checkinDateStringCheck-in date from the search, when provided.
checkoutDateStringCheck-out date from the search, when provided.
stayLengthDaysIntegerLength of stay from the search, when provided.
roomsIntegerNumber of rooms requested.
adultsIntegerNumber of adults requested.
childrenIntegerNumber of children requested.
hotelIdIntegerBooking.com property identifier.
hotelNameStringDisplay name of the property.
hotelUrlStringDirect Booking.com property page URL.
addressStringProperty address, when published.
cityStringProperty city.
countryCodeStringCountry code associated with the property.
latitudeNumberProperty latitude, when available.
longitudeNumberProperty longitude, when available.
displayLocationStringLocation text shown on the listing card.
starRatingNumberProperty star rating.
reviewScoreNumberMain Booking.com review score.
reviewCountIntegerMain Booking.com review count.
reviewScoreTextStringHuman-readable review score label.
finalPriceAmountNumberFinal price amount from the best available listing block.
finalPriceCurrencyStringCurrency for finalPriceAmount.
originalPriceAmountNumberOriginal price before a displayed reduction, when available.
originalPriceCurrencyStringCurrency for originalPriceAmount.
displayPriceTextStringPrice text shown on the listing card.
displayPriceAmountNumberNumeric displayed stay price, when available.
displayPriceCurrencyStringCurrency for displayPriceAmount.
averageNightlyAmountNumberAverage nightly price, when available.
averageNightlyCurrencyStringCurrency for averageNightlyAmount.
freeCancellationBooleanWhether free cancellation is shown for the listing.
noPrepaymentNeededBooleanWhether no prepayment is shown.
petsAllowedFreeBooleanWhether pets are shown as allowed free of charge.
mealPlanStringIncluded meal-plan text, when available.
mealPlanTypeStringIncluded meal-plan type, when available.
descriptionStringListing description or summary.
isPreferredBooleanPreferred listing flag.
isSustainableBooleanSustainability flag.
certificationsArray of StringsSustainability certifications shown for the property.
uspBadgesArray of StringsProperty benefits or selling-point badges.
cardLabelsArray of StringsLabels displayed on the listing card.
photoUrlsArray of StringsAvailable property photo URLs.
topPhotoUrlsArray of StringsMain or top photo URLs, when available.

How to use Booking.com Scraper

  1. Open Booking.com Scraper in Apify Console.
  2. Paste a public Booking.com search results URL into startUrl. Include dates and guest details when you need date-specific price signals.
  3. Set results_wanted to the maximum number of unique properties to save.
  4. Adjust max_pages if the target search requires more or fewer result pages.
  5. Optionally configure an Apify Proxy in proxyConfiguration.
  6. Start the run and open the dataset when it finishes.
  7. Download the results or connect the dataset to your workflow.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlStringYesLondon search URLBooking.com search results, city, or country URL. The Actor normalizes the URL and uses the destination and guest parameters present in it.
results_wantedIntegerNo20Maximum number of unique hotel listings to save.
max_pagesIntegerNo10Maximum number of result pages to process as a safety limit.
proxyConfigurationObjectNoNot usedOptional 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: 20 to confirm the destination and output before requesting a larger dataset.
  • Increase max_pages when the result limit is higher than the first page can provide.
  • Use proxyConfiguration when 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.

OptionUseful for
JSONApplications, data pipelines, and AI or RAG workflows.
CSVSpreadsheet analysis and quick imports.
ExcelTravel reporting and business analysis.
XMLSystems that require XML feeds.
Google SheetsShared destination and competitor reports.
WebhooksNotifying another service after a run completes.
Make or ZapierNo-code workflow automation.
Apify APIStarting 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.

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.

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.

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.