Booking.com Hotel Scraper: Prices & Availability avatar

Booking.com Hotel Scraper: Prices & Availability

Pricing

from $8.00 / 1,000 hotel scrapeds

Go to Apify Store
Booking.com Hotel Scraper: Prices & Availability

Booking.com Hotel Scraper: Prices & Availability

Scrape public Booking.com accommodation search results with hotel names, prices, guest scores, review counts, cancellation signals, property IDs, images, and URLs.

Pricing

from $8.00 / 1,000 hotel scrapeds

Rating

0.0

(0)

Developer

Md Jakaria Mirza

Md Jakaria Mirza

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

11 days ago

Last modified

Categories

Share

Booking.com Hotel Scraper - Prices, Reviews & Availability

Scrape Booking.com hotel and accommodation search results for travel market research, price monitoring, and competitor analysis. The actor searches one or more destinations for a date range, extracts clean property records, deduplicates by Booking.com property ID, and saves the results to an Apify Dataset. Export to JSON, CSV, Excel, or HTML, or pull via the Apify API. No login and no API key required.

For the first run, start small: one destination, maxResults: 1, and the recommended residential proxy enabled. Dates are optional; when omitted, the Actor searches a one-night stay beginning 30 days after the run date.

Each clean hotel record is saved through the hotel-scraped pay-per-event flow, so output is only kept when the result event charge is accepted. The actor skips incomplete cards that do not expose a property name and Booking.com hotel URL, so the dataset avoids empty placeholder rows.

Features

  • Multiple destinations in one run
  • Explicit or automatically generated future check-in and check-out dates
  • Adults, rooms, currency, review score, and property type inputs
  • Pagination up to 500 properties per destination
  • Residential proxy support for Apify cloud runs
  • Random delays, session pool, and retry handling
  • Null fallbacks for fields that Booking.com does not expose on every search card

Data Extracted

FieldDescription
propertyIdBooking.com hotel slug or property ID
hotelNameProperty name
destinationDestination used for the search
starRatingStar rating when exposed
guestReviewScoreGuest review score from 0 to 10
reviewCountNumber of reviews
totalPriceTotal stay price for the searched dates
pricePerNightCalculated or exposed nightly price
originalPriceOriginal price before discount when exposed
discountPercentageDiscount percentage when calculable
currencyRequested currency
freeCancellationFree cancellation signal from the card
city / countryParsed from destination input
distanceFromCityCenterDistance text from Booking.com
propertyUrlClean direct Booking.com hotel URL
thumbnailImageUrlProperty thumbnail image URL
sustainabilityBadgeSustainability badge signal
geniusDiscountGenius discount signal
scrapedAtISO timestamp

Use Cases

  1. Hotel price monitoring across cities and dates
  2. Travel app and comparison-site data enrichment
  3. Hospitality competitor research
  4. Market research by review score, price, and destination
  5. Accommodation data collection for travel market research

Pricing and cost control

This Actor uses Apify Pay Per Event pricing. The live Store configuration charges a small Actor start event and then charges hotel rows only when clean records are saved to the dataset.

EventPriceWhen charged
apify-actor-start$0.00005 per GBWhen the run starts, minimum one event
hotel-scraped$0.008For each clean hotel record saved

The current live pricing does not expose a separate per-destination search event. Hotel records are saved through the hotel-scraped event, and the run stops when the user's maximum cost limit is reached.

Cost-control tips:

  • Start with one destination.
  • Use a one-night future date range for your first test.
  • Use maxResults: 1 for the first test run.
  • Leave minReviewScore at 0 for the broadest first test; add 7 or higher after output looks right.
  • Keep residential proxy enabled for reliability.
  • Increase destinations and result limits only after a small run returns the expected data.
  • Runtime memory is capped at 2 GB to keep runs predictable.

Input

FieldTypeRequiredDefaultDescription
destinationsarrayyes["London, United Kingdom"]One or more destinations to search. Use one destination for tests.
checkInstringno30 days after runOptional future check-in date in YYYY-MM-DD format.
checkOutstringnoone night after check-inOptional future check-out date in YYYY-MM-DD format. Must be after check-in.
adultsintegerno2Number of adults per room.
roomsintegerno1Number of rooms to search for.
propertyTypesarrayno[]Optional property type filters. Leave empty for all accommodation types.
minReviewScorenumberno0Optional guest review score threshold.
maxResultsintegerno1Maximum properties per destination. Use 1 for the first test; up to 500.
currencystringnoUSDDisplay currency for prices.
proxyConfigurationobjectnoResidentialApify proxy settings. Residential proxy is recommended.

Input Example

{
"destinations": ["London, United Kingdom"],
"adults": 2,
"rooms": 1,
"minReviewScore": 0,
"maxResults": 1,
"currency": "USD",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

To search specific dates, add checkIn and checkOut in YYYY-MM-DD format. Otherwise the dynamic one-night default remains future-safe for saved tasks and automated QA.

How to Scrape Booking.com Hotels (Step by Step)

  1. Click Try for free / Run.
  2. Enter one destination. Optionally provide future checkIn / checkOut dates.
  3. Set adults, rooms, currency, and maxResults: 1 for the first run.
  4. Optionally filter by propertyTypes and minReviewScore, then click Run.
  5. When the run finishes, export results to JSON, CSV, Excel, or HTML, or pull them via the Apify API.

Output dataset

The default Hotel Records dataset view is designed for quick export to CSV, Excel, JSON, or API workflows. It shows the most useful booking research fields first: destination, hotel name, stars, guest score, review count, total price, nightly price, currency, city/country, distance from city center, cancellation signal, property URL, property ID, and scraped timestamp. Original price, discount percentage, thumbnail, sustainability, and Genius signals remain available in full JSON when Booking.com exposes them.

{
"propertyId": "royal-national",
"hotelName": "Royal National Hotel",
"starRating": 3,
"guestReviewScore": 7.9,
"reviewCount": 19601,
"city": "London",
"country": "United Kingdom",
"distanceFromCityCenter": "1.8 km from downtown",
"totalPrice": 261,
"pricePerNight": 261,
"originalPrice": 290,
"discountPercentage": 10,
"currency": "USD",
"freeCancellation": false,
"propertyUrl": "https://www.booking.com/hotel/gb/royal-national.html",
"thumbnailImageUrl": "https://cf.bstatic.com/xdata/images/hotel/square240/example.webp",
"sustainabilityBadge": false,
"geniusDiscount": false,
"destination": "London, United Kingdom",
"scrapedAt": "2026-06-21T12:43:43.000Z"
}

Technical Details

  • Runtime: Node.js 20 on apify/actor-node-playwright-chrome:20
  • Scraping engine: Crawlee PlaywrightCrawler
  • Proxy: Apify residential proxy recommended for cloud runs
  • Retry policy: 3 retries with blocked-request retry handling
  • Browser safety: up to 3 concurrent pages, 30 requests per minute, and 40 candidate pages per destination
  • Storage: Apify Dataset
  • Charge model: Actor.pushData(record, "hotel-scraped") per saved hotel

Notes

  • Booking.com can vary card fields by market, destination, availability, and experiment. Unavailable fields are returned as null.
  • The default Apify table view focuses on populated search-result fields. Full JSON includes the complete runtime record shown above.
  • This actor collects search result card data, not every detail available on individual hotel detail pages.
  • Data is for research and business intelligence, not booking, legal, or financial advice.

Responsible Use

This Actor is intended for lawful collection of publicly available information only. Users are responsible for ensuring their use complies with the source website's terms, robots.txt, applicable privacy laws, including India's DPDP Act, and all local regulations.

Do not use this Actor to collect, store, sell, or misuse personal data without a lawful basis. The Actor author is not responsible for misuse by end users.