Booking.com Hotel Scraper avatar

Booking.com Hotel Scraper

Pricing

from $2.50 / 1,000 scraped place results

Go to Apify Store
Booking.com Hotel Scraper

Booking.com Hotel Scraper

Extract hotel names, nightly prices, guest ratings, room types, taxes and fees, and photo URLs from Booking.com search results and hotel pages. Search by destination and dates, monitor rates on a schedule, and export to JSON, CSV, or Excel. No Booking.com account needed.

Pricing

from $2.50 / 1,000 scraped place results

Rating

0.0

(0)

Developer

Automly

Automly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

🏨 What does Booking.com Hotel Scraper do?

Booking.com Hotel Scraper extracts hotel names, nightly prices, guest ratings, room types, taxes and fees, and photo URLs from Booking.com search results and individual hotel pages. Give it a destination like "Paris" plus your check-in and check-out dates, and it returns the hotels Booking.com shows for that search, priced for those exact dates, guests, and currency.

Use it to build hotel price monitoring pipelines, run travel market research, feed rate comparison dashboards, or collect hotel inventory data for a city without copying listings by hand. It works on public pages only: no Booking.com account, no login, no personal data.

🧳 What data can I scrape from Booking.com?

🏨 Hotel names and direct hotel URLsπŸ’΅ Nightly prices for your exact dates
⭐️ Guest rating scores🧾 Taxes and fees as a separate line
πŸ› Room names and unit descriptionsπŸ’± Prices in the currency you choose
πŸ“… Check-in / check-out dates used for pricingπŸŒ† Hotel photo URLs
πŸ”’ Result rank within the searchπŸ“ Address, city, and coordinates when the page provides them

🎯 Use cases

  • Hotel rate monitoring: track how competitor prices move across dates and seasons
  • Travel market research: compare average nightly rates between cities or districts
  • Price comparison products: feed live hotel prices into your own app or dashboard
  • Revenue management: see where your property ranks in search results and how it is priced against neighbors
  • Tourism research: build datasets of hotel supply, ratings, and pricing for a region

⬇️ How to use

  1. Open the actor in Apify Console and click Try for free.
  2. Type a destination into Location query (for example Paris). Alternatively, paste one or more full Booking.com search URLs into Booking.com search URLs, or direct hotel page URLs into Booking.com hotel URLs.
  3. Set Check-in date and Check-out date in YYYY-MM-DD format, plus the number of Adults and Rooms.
  4. Optionally set Currency (for example USD) and Language (for example en-us).
  5. Keep Use Apify Proxy enabled and add RESIDENTIAL to Proxy groups.
  6. Click Start. When the run finishes, open the Output tab for a clean hotel table, or download everything from the Dataset tab as JSON, CSV, Excel, or XML.

πŸ’‘ Tips for scraping hotels on Booking.com

1️⃣ Always provide check-in and check-out dates. Booking.com only shows complete room and pricing info when dates are set β€” without them you get listings but thinner pricing data. Prices returned match your exact dates, guest count, and currency.

2️⃣ Use locationQuery as your primary input. It builds a clean search URL that parses reliably. Pasted search URLs work too, but Booking.com serves some URL variants with a layout that carries no listing data.

3️⃣ Split big cities into districts for more coverage. One search returns the first result page (~25 hotels). "Paris Le Marais", "Paris Montmartre", and "Paris Latin Quarter" as separate runs cover far more of the city than one generic "Paris" search.

4️⃣ Keep residential proxy on. Booking.com fronts its pages with an AWS WAF JavaScript challenge that blocks most datacenter IPs. The actor runs a real browser to solve it, and residential IPs pass far more reliably.

Example input

{
"locationQuery": "Paris",
"checkInDate": "2026-08-20",
"checkOutDate": "2026-08-22",
"adults": 2,
"rooms": 1,
"maxResults": 25,
"currency": "USD",
"language": "en-us",
"useApifyProxy": true,
"proxyGroups": ["RESIDENTIAL"]
}

βš™οΈ Input parameters

ParameterTypeDefaultDescription
searchUrlsarray[]Full Booking.com search result URLs to scrape. Use public URLs only.
hotelUrlsarray[]Direct public Booking.com hotel page URLs to scrape.
locationQuerystring–Destination name used to build a Booking.com search URL when no search URL is supplied.
checkInDatestring–Check-in date in YYYY-MM-DD format.
checkOutDatestring–Check-out date in YYYY-MM-DD format.
adultsinteger2Number of adult guests (1–30).
roomsinteger1Number of rooms (1–30).
maxResultsinteger50Maximum number of hotel records to emit (1–500).
currencystring–Currency code to request, for example USD or EUR.
languagestring–Language/locale to request, for example en-us.
requestTimeoutSecsinteger30Timeout for each page request in seconds (5–120).
useApifyProxybooleantrueRoute requests through Apify Proxy. Keep this on.
proxyGroupsarray[]Proxy groups to use, for example ["RESIDENTIAL"] (recommended).

At least one of searchUrls, hotelUrls, or locationQuery is required.

⬆️ Output example

Results appear in the Output tab as a sortable hotel table, and in the Dataset tab for export. Each hotel looks like this (taken from a real run for Paris, 20–22 August 2026):

{
"searchUrl": "https://www.booking.com/searchresults.html?ss=Paris&group_adults=2&no_rooms=1&checkin=2026-08-20&checkout=2026-08-22&selected_currency=USD&lang=en-us",
"hotelUrl": "https://www.booking.com/hotel/fr/appart-39-odalys-paris-xvii.html?checkin=2026-08-20&checkout=2026-08-22&group_adults=2&no_rooms=1",
"hotelName": "Appart'hΓ΄tel Odalys City - Paris XVII",
"rating": "7.7",
"price": "158",
"currency": "USD",
"taxesAndFees": "+US$25 taxes and fees",
"roomName": "Standard Studio (2 Adults) Entire studio - 1 bathroom - 1 kitchen - 22 m2",
"checkInDate": "2026-08-20",
"checkOutDate": "2026-08-22",
"adults": "2",
"rank": "2",
"imageUrls": "[\"https://cf.bstatic.com/xdata/images/hotel/square240/759499775.webp\"]",
"scrapedAt": "2026-07-10T20:21:05.242338+00:00"
}

Fields like address, city, amenities, and description are included when the page variant Booking.com serves contains them; otherwise they stay empty rather than being filled with guesses. The actor never emits fake rows: if a page is blocked or has no listing data, it records the failure in the run summary instead of inventing results.

πŸ’° How much does it cost to scrape Booking.com?

Based on a measured cloud run, scraping 1,000 hotel results uses about 0.74 compute units, roughly $0.30 of platform usage on the Apify Starter plan ($0.40 per CU).

Residential proxy bandwidth is the larger share: the same measured run used about 0.27 GB per 1,000 results, roughly $2.20 at the standard $8/GB residential rate. All in, plan for around $2.50 per 1,000 hotel results. Small runs cost proportionally: a 25-hotel test run consumed about $0.06 total, so the free plan's monthly credit is plenty for testing and small extractions.

⭐️ Need reviews, not listings?

This actor focuses on hotel inventory and pricing. If you need guest review text and ratings, pair it with Tripadvisor Reviews Scraper β€” it extracts full review text, ratings, dates, reviewer profiles, and owner responses for hotels, restaurants, and attractions.

❓ FAQ

Do I need a Booking.com account?

No. The actor scrapes public pages without authentication of any kind.

Why do I need a residential proxy?

Booking.com protects its pages with a JavaScript bot challenge that blocks most datacenter IPs outright. The actor runs a real browser to pass the challenge, and residential IPs pass it far more reliably. Set proxyGroups to ["RESIDENTIAL"] for consistent results.

How many hotels does one search return?

One search URL returns the first page of results, which is around 25 hotels. To cover more of a city, add several more specific searches: by district, neighborhood, or landmark. Each runs as its own search URL and the results land in the same dataset.

What export formats are supported?

Everything the Apify platform offers: JSON, CSV, Excel (XLSX), XML, and RSS. Download from the Dataset tab in the Console or fetch programmatically through the Apify API.

Can I integrate Booking.com Hotel Scraper with other apps?

Yes. Through Apify integrations it connects to Zapier, Make, Slack, Google Sheets, Google Drive, GitHub, LangChain, and more. You can also use webhooks to trigger an action whenever a run finishes β€” for example, append fresh prices to a spreadsheet every morning.

Can I run it on a schedule or call it from my code?

Yes. Use Apify Schedules to run it daily or weekly, which is the usual setup for price monitoring. You can also start runs and fetch results via the Apify REST API or the JavaScript and Python clients β€” see the API tab on this page for ready-made code examples.

Why did my run return no results?

The most common cause is running without residential proxy, in which case Booking.com serves a bot challenge instead of listings. Check the run log and the OUTPUT record in the key-value store: the actor documents exactly which URLs were blocked and why. Retrying with "proxyGroups": ["RESIDENTIAL"] resolves the vast majority of empty runs.

Are the prices accurate?

Prices are read from the same public page a visitor sees for your exact dates, guest count, and currency, including the separate taxes-and-fees line. They reflect the moment of the scrape; Booking.com adjusts prices frequently, which is exactly why scheduled monitoring runs are useful.