Booking.com Scraper avatar

Booking.com Scraper

Pricing

from $0.80 / 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 $0.80 / 1,000 results

Rating

5.0

(7)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

3

Bookmarked

25

Total users

2

Monthly active users

14 days ago

Last modified

Security

Limited permissions

Share

What does Booking.com Scraper do?

Booking.com Scraper collects structured hotel listings from a public Booking.com search results or destination page. Paste one search, city, region, district, or country URL with a destination, and the Actor returns one dataset item per unique property with hotel identity, location, ratings, displayed prices, booking policies, sustainability signals, and photo URLs.

The Actor is built for travel market research, accommodation catalogs, price and position monitoring, and hospitality competitor analysis. It paginates automatically until it reaches your result limit or page limit, removes duplicate properties, and saves each page as soon as it is ready.

Why use Booking.com Scraper?

  • Build destination datasets - Collect hotel names, addresses, coordinates, star ratings, review scores, and accommodation types for a city or region.
  • Track price signals - Save displayed stay prices, price before discount, average nightly amounts, currencies, and total price fields when Booking.com publishes them.
  • Compare booking policies - Identify free cancellation, no-prepayment, pet-friendly, and meal-plan signals across a destination.
  • Create reusable catalogs - Keep direct Booking.com hotel URLs, descriptions, badges, certifications, and photos in one exportable dataset.
  • Run repeat collection - Use Apify schedules to refresh a destination weekly or daily, then send results to sheets, databases, or webhooks.
  • Avoid duplicates - Properties are deduplicated by hotel identity before they are saved, even across pages.

What data can you extract from Booking.com?

Each item represents one hotel or accommodation listing. Optional fields appear only when Booking.com publishes them for that property and search context.

FieldTypeDescription
searchUrlStringNormalized Booking.com search URL used for collection
searchLocationStringDestination text from the search
checkinDateStringCheck-in date used for the search
checkoutDateStringCheck-out date used for the search
stayLengthDaysIntegerNumber of nights in the stay
roomsIntegerNumber of rooms requested
adultsIntegerNumber of adults requested
childrenIntegerNumber of children requested
hotelIdIntegerBooking.com property identifier
hotelNameStringProperty display name
hotelUrlStringDirect Booking.com property page URL
addressStringProperty address when published
cityStringProperty city
countryCodeStringProperty country code
latitudeNumberProperty latitude
longitudeNumberProperty longitude
displayLocationStringNeighborhood or location text from the listing
starRatingNumberProperty star rating
reviewScoreNumberMain guest review score
reviewCountIntegerMain guest review count
reviewScoreTextStringReview score label, such as Very Good
externalReviewScoreNumberExternal review score when shown
externalReviewCountIntegerExternal review count when shown
displayPriceTextStringPrice label shown for the stay
displayPriceAmountNumberDisplayed stay price
displayPriceCurrencyStringCurrency for the displayed price
priceBeforeDiscountAmountNumberPrice before a displayed reduction
finalPriceAmountNumberFinal price from the best available price block
finalPriceCurrencyStringCurrency for the final price
originalPriceAmountNumberOriginal price when reported in the same currency as the final price
originalPriceCurrencyStringCurrency for the original price
freeCancellationBooleanWhether free cancellation is shown
noPrepaymentNeededBooleanWhether no prepayment is shown
petsAllowedFreeBooleanWhether pets are shown as allowed free of charge
mealPlanStringIncluded meal-plan text when available
descriptionStringShort property description
isPreferredBooleanPreferred property flag
isPreferredPlusBooleanPreferred Plus flag
geniusRateAvailableBooleanGenius rate availability flag
isSustainableBooleanSustainability flag
certificationsArray of StringsSustainability certifications
uspBadgesArray of StringsProperty benefit badges
cardLabelsArray of StringsAdditional listing labels
photoUrlsArray of StringsProperty photo URLs
topPhotoUrlsArray of StringsMain property photo URLs

How to use Booking.com Scraper

  1. Open the Actor on Apify.
  2. Paste a public Booking.com search results or city page URL into startUrl.
  3. Set results_wanted to the maximum number of unique properties to save.
  4. Adjust max_pages if the search needs more or fewer result pages.
  5. Keep the residential proxy default for cloud runs, or adjust it for local runs.
  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
startUrlStringNoLondon search URLBooking.com search results, city, region, district, or country URL. Destination, dates, rooms, and guest details from the URL are used.
results_wantedIntegerNo20Maximum number of unique properties to save
max_pagesIntegerNo10Safety cap for result pages
proxyConfigurationObjectNoApify residential proxyApify proxy settings. Keep the residential default for cloud runs.

The startUrl field includes a working default, so an empty run still collects a small London dataset. Provide your own URL to target another destination.

Usage Examples

Basic destination collection

Collect the first 20 unique properties for London.

{
"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
}

Date-specific price collection

Include check-in and check-out dates to receive price and cancellation data for a specific stay.

{
"startUrl": "https://www.booking.com/searchresults.html?ss=Paris%2C+Ile-de-France%2C+France&checkin=2026-11-10&checkout=2026-11-14&group_adults=2&no_rooms=1&group_children=0",
"results_wanted": 100,
"max_pages": 8
}

Collection with a specific proxy country

Cloud runs use the residential default. Set a proxy country when you need stable pricing.

{
"startUrl": "https://www.booking.com/searchresults.html?ss=Dubai%2C+United+Arab+Emirates&checkin=2026-11-10&checkout=2026-11-13&group_adults=2&no_rooms=1&group_children=0",
"results_wanted": 60,
"max_pages": 5,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "GB"
}
}

Sample Output

{
"searchUrl": "https://www.booking.com/searchresults.html?ss=London%2C+Greater+London%2C+United+Kingdom&group_adults=2&no_rooms=1&group_children=0&checkin=2026-10-24&checkout=2026-10-25&lang=en-us",
"searchLocation": "London",
"checkinDate": "2026-10-24",
"checkoutDate": "2026-10-25",
"stayLengthDays": 1,
"rooms": 1,
"adults": 2,
"children": 0,
"hotelId": 417266,
"hotelName": "Mayfair House",
"hotelUrl": "https://www.booking.com/hotel/gb/mayfair-house.html",
"address": "22-28 Shepherd Street",
"city": "London",
"countryCode": "gb",
"latitude": 51.5061055745871,
"longitude": -0.14794796705246,
"displayLocation": "Westminster Borough, London",
"starRating": 5,
"reviewScore": 8.5,
"reviewCount": 344,
"reviewScoreText": "Very Good",
"displayPriceText": "Total",
"displayPriceAmount": 136007.11,
"displayPriceCurrency": "PKR",
"priceBeforeDiscountAmount": 226676.05,
"finalPriceAmount": 136007.11,
"finalPriceCurrency": "PKR",
"freeCancellation": false,
"noPrepaymentNeeded": false,
"isPreferred": true,
"isSustainable": false,
"photoUrls": [
"https://cf.bstatic.com/xdata/images/hotel/square600/868213787.webp?k=77a032d72e244baa879888b3b1bf931202dfc2e32a755cfe3996305e7fe64fda&o="
]
}

Prices and currencies reflect the network location and stay context of the run. A search from another country can return a different currency and a different set of available properties.

Tips for best results

  • Use a complete search URL copied after selecting the destination, dates, guests, and rooms. City pages such as https://www.booking.com/city/gb/london.html also work.
  • Include dates when you need price or cancellation signals. If the URL has no dates, the Actor uses upcoming dates and reports them in each item.
  • Stale dates are moved to the next available stay range so the search still returns prices.
  • Start with results_wanted: 20 to confirm the destination and field coverage before a large run.
  • Increase max_pages when the result limit is higher than one page can provide. Pagination is capped at 40 pages.
  • Keep the residential proxy enabled for cloud runs. Booking.com blocks datacenter IPs, and runs without a proxy return no listings.
  • Public listing content changes often. Review the dataset preview before scheduling recurring runs.

Integrations and export formats

OptionUseful for
JSONApplications, data pipelines, and AI or RAG workflows
CSVSpreadsheet analysis and quick imports
ExcelTravel reporting and business reviews
XMLSystems that require XML feeds
Google SheetsShared destination and competitor reports
WebhooksStarting another service after a run finishes
Make or ZapierNo-code automation
Apify APIStarting runs and reading datasets from your own systems

Frequently Asked Questions

Can I collect Booking.com listings for a specific destination?

Yes. Set startUrl to a Booking.com search results page or a city, region, district, or country page for that destination.

Can I collect multiple destinations in one run?

No. One run processes one startUrl. Create separate runs for separate destinations, or schedule several runs when you need recurring coverage.

Why is the price in an unexpected currency?

Booking.com chooses a currency from the network location and session context. To compare prices across runs, use the same proxy country and the same stay dates, or convert the saved amounts after collection.

Why are some price or policy fields missing?

Fields can be missing when Booking.com does not publish them for a property, when the search has no available inventory, or when a listing has no current offer. The Actor omits empty values from each item.

How many hotel listings can I collect?

Set results_wanted up to 1000 and max_pages up to 40. The Actor stops when it reaches the result limit, the page limit, or the end of available inventory.

Does the Actor return room-level availability?

No. It returns listing-card details and listing-level price and policy signals. Room inventory, exact room types, and live availability depend on the dates and session used for the search.

Can I export Booking.com data to CSV or Excel?

Yes. Apify datasets support CSV, Excel, JSON, XML, and other export options in Apify Console.

Can I schedule recurring Booking.com collection?

Yes. Create an Apify schedule to run the Actor hourly, daily, or weekly, then connect the run to a dataset, webhook, or integration.

What should I do if a run returns no listings?

Check that the URL is a Booking.com search results page with a destination. Add dates, try a nearby date range, and keep the residential proxy enabled if the source is inconsistent from your network. If the problem continues, report the input URL and run ID through the Issues tab.

Public web data collection can be subject to laws, privacy rules, and website terms. You are responsible for using the Actor lawfully, respecting Booking.com rules, and handling collected 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.