Booking.com Hotel Scraper avatar

Booking.com Hotel Scraper

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Booking.com Hotel Scraper

Booking.com Hotel Scraper

Scrape Booking.com hotel listings with prices, ratings, and reviews.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Admo Solutions

Admo Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 days ago

Last modified

Categories

Share

Scrape Booking.com search results — hotel listings with prices, ratings, reviews, facilities and images — for any destination worldwide.

What does this Actor do?

For each search location the Actor opens Booking.com search results in a stealth browser (to get past the WAF), follows result pages up to your maxHotels limit, and extracts per property:

  • Hotel info: name, canonical URL, address, distance from center, star rating, facility highlights
  • Pricing: nightly price + currency (dates are required for Booking to display rates)
  • Reviews: guest score (1–10), review count, badge (Superb, Excellent, Very Good, …)
  • Images: property photo URL
  • Search context: the query it came from, number of nights, provider

Every run always writes at least one dataset row: blocked pages, empty results and invalid input produce error rows instead of a silent empty dataset.

Why use this Actor?

  • Travel agencies: Compare hotel prices across destinations
  • Revenue managers: Monitor competitor pricing
  • Researchers: Analyze hospitality market trends
  • Deal seekers: Find best hotel rates

How to use

  1. Add search locations (e.g., "Paris, France", "Tokyo, Japan")
  2. Set max hotels per location (up to 200 — the Actor follows result pages automatically)
  3. Optional: set check-in/check-out (YYYY-MM-DD). Leave empty to default to tomorrow + 1 night
  4. Optional: set a min/max price filter (USD)
  5. Run the Actor

Input

FieldTypeRequiredDefault
locationsarrayYes-
maxHotelsintegerNo20
checkInstringNo"" (tomorrow)
checkOutstringNo"" (day after check-in)
adultsintegerNo2
roomsintegerNo1
minPriceintegerNo0
maxPriceintegerNo0
minDelayintegerNo2
maxDelayintegerNo5
proxyConfigurationobjectNoApify Residential, country US

Booking.com aggressively blocks datacenter IPs, so the default proxy is Apify's Residential group pinned to the US market (a stable market keeps result depth and pricing consistent). If residential proxy access is not available on your plan, the run automatically falls back to the default datacenter proxy. Adjust or remove proxyConfiguration to override.

Output example

{
"title": "Hotel Marais Paris",
"url": "https://www.booking.com/hotel/fr/marais-paris.html",
"address": "1st arr., Paris",
"distance": "0.5 km from downtown",
"reviewScore": "8.5",
"reviewCount": "1234",
"reviewBadge": "Very Good",
"price": "150",
"currency": "USD",
"stars": "4",
"facilities": ["Free WiFi", "Subway Access"],
"imageUrl": "https://cf.bstatic.com/...",
"query": "Paris, France",
"nights": 2,
"provider": "booking.com"
}

Error row (the run still succeeds for per-location problems and fails honestly for bad input):

{
"query": "Nowhere",
"title": "",
"error": "No property cards found (page blocked or empty results)"
}

Data table

FieldDescription
titleHotel name
urlDirect booking link (tracking parameters stripped)
addressHotel address / district
distanceDistance from destination center
reviewScoreGuest rating (1-10) as text
reviewCountNumber of reviews (digits only)
reviewBadgeRating category (Superb, Excellent, etc.)
priceNightly rate (digits only; empty when Booking shows no rates)
currencyUSD, EUR, GBP, INR
starsStar rating (1-5); empty when the page variant doesn't show star ratings (common via some network locations) or for unrated places
facilitiesFacility highlights shown on the card
imageUrlHotel photo URL
querySearch location the row came from
nightsNights implied by the dates used for the search
providerAlways "booking.com"
errorPresent only on failure rows

Behavior notes

  • Results are fetched in server pages; pagination continues until maxHotels is reached (max 10 pages) or results run out
  • Anti-blocking self-healing: a thin first page or a page that repeats already-seen hotels triggers a retry on a fresh sticky residential session (fresh exit IP); when relevance-ranked depth is exhausted, it continues with price-sorted pages to reach maxHotels
  • Prices appear only when Booking shows rates — leave the dates empty to use tomorrow +1 night defaults, or set your own
  • minPrice/maxPrice map to Booking's built-in price filter (USD)
  • A short random delay (minDelay–maxDelay seconds) runs between locations

💰 Pricing

This Actor uses the Pay Per Event pricing model:

EventPrice
Per hotel scraped$4.00 / 1,000

For example, scraping 100 hotels costs: $0.40

Uses a Playwright browser for reliable scraping with anti-bot protection.

Tips

  • Add check-in/check-out dates for accurate pricing
  • Use specific locations for better results
  • Higher guest counts may affect pricing
  • Increase delays if rate-limited

Disclaimer

This Actor scrapes publicly available data from Booking.com. Users are responsible for compliance with Booking.com's Terms of Service.

Support

For issues or feature requests, use the Issues tab.