ParseForge Scrapers

Booking.com Hotels Scraper

parseforge/booking-com-hotels-scraper

TravelDeveloper toolsAutomation

Scrapes Booking.com hotel listings by destination search or direct URL. Returns each hotel as a flat row with price, rating, review count, address, star count, and property type.

Run this scraper See the API call
Total users
84
Monthly active
31
Total runs
771
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

Booking.com Hotels Scraper

Scrape hotel listings from Booking.com by destination, start URL, or search query, up to a million per run. Every listing returns its price, rating, review count, address, star count, and property type. Filter by rating, stars, price range, and property type before export. Export to CSV, JSON, Excel, or XML.

Booking.com's hotel data is spread across thousands of search pages, and manually copying prices or ratings for a market analysis is slow and error-prone. This Actor reads the public hotel listing feeds directly, letting you pull structured rows for any destination. You control the dates, guest count, currency, and language, and you can filter results by minimum review score, star count, price range, or property type so only the hotels that matter reach your dataset.

Who uses it What they scrape Booking.com for
Revenue managers Monitor competitor pricing and rating trends for a destination over a specific date range.
Market researchers Build a dataset of hotel supply, price distribution, and property types in a city.
Travel app builders Feed a hotel search backend with fresh listing data for a set of destinations.
Data analysts Track how review scores and star counts correlate with price in a region.

What it does

This Actor collects Booking.com hotel listings by destination search, direct URL, or legacy destination field, and returns each hotel as a flat row with its price, rating, review count, address, star count, and property type.

  • 🏨 Destination search: type a city or region name and the Actor builds the Booking.com search URL for you.
  • πŸ”— Start URL mode: paste any Booking.com search results URL to replicate an exact query at scale.
  • πŸ“… Date and guest controls: set check-in, check-out, adults, children, rooms, and children ages to match real traveler searches.
  • πŸŽ›οΈ Pre-export filters: keep only hotels above a minimum rating, within a star count, inside a price range, or of a specific property type.
  • 🌐 Localized results: set the language and currency code so prices and text match the market you care about.
  • πŸ“Š Sort order control: order results by best reviewed, lowest price, distance from destination, star class, or a combination.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Booking.com data

πŸ“ˆ Monitor competitor pricing by destination.

A revenue manager runs the Actor weekly for a city, filters to 4-star hotels, and compares nightly rates against their own property to adjust pricing.

πŸ—ΊοΈ Map hotel supply in a new market.

A market researcher scrapes all hotels in a region, groups them by star count and property type, and sizes the addressable market before a chain expansion.

⭐ Audit review scores across a brand portfolio.

A hotel group scrapes its own properties by name across multiple destinations and tracks rating changes over time in a single CSV.

πŸ’° Feed a travel deal finder with fresh prices.

A developer runs the Actor daily for a list of destinations, filters to a maximum price, and pushes the rows to a deal aggregator backend.

Why choose this scraper

What you get
No official API needed Reads the public search pages, no app registration or API key required.
Fixed flat schema Every hotel row has the same fields, ready for CSV, JSON, Excel, or XML export.
Date-aware scraping Set exact or flexible check-in and check-out dates to capture real-time availability and pricing.
Residential proxies built in Uses Apify residential proxies by default to keep large runs stable.

How it compares

This Actor focuses on hotel listing data with pre-export filters, date-aware searches, and a fixed flat schema, while the competitors below also scrape Booking.com but differ in their feature scope.

Feature ParseForge Booking Scraper Booking Reviews Scraper Fast Booking Scraper
Destination search without a URL Yes Yes Not listed Yes
Pre-export filter by minimum review score Yes Not listed Not listed Not listed
Pre-export filter by property type Yes Not listed Not listed Not listed
Pre-export filter by price range Yes Not listed Not listed Not listed
Guest and children age controls Yes Not listed Not listed Not listed
Stay date flexibility window Yes Not listed Not listed Not listed
Guest review text extraction Not listed Not listed Yes Not listed

Configure the run

Drive the Actor from a destination name, a direct Booking.com search URL, or the legacy destination field, and filters run as each hotel is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "startUrl": "https://www.booking.com/searchresults.en-gb.html?ss=Paris&checkin=2026-04-01&checkout=2026-04-04&group_adults=2&no_rooms=1&group_children=0",
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}

Only the popular results:

{
  "startUrl": "https://www.booking.com/searchresults.en-gb.html?ss=Paris&checkin=2026-04-01&checkout=2026-04-04&group_adults=2&no_rooms=1&group_children=0",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "minScore": 10
}

Pricing

Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $1.60
1,000 results $15.99
10,000 results $159.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Booking.com Hotels Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Booking.com through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/booking-com-hotels-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your destination name is spelled correctly and that Booking.com returns results for it in a browser. Also verify that your date range, star filter, or price range is not too restrictive for that market.

Why are prices missing or different from what I see on the site?

Prices depend on the exact check-in and check-out dates, guest count, currency, and language you set. Make sure these match the search you are comparing against. Booking.com also personalizes prices by user location, so using residential proxies helps.

The run stopped early and did not reach maxItems.

Booking.com may return fewer hotels than your maxItems for a narrow search. Try broadening the destination, removing filters, or extending the date range. If the run was interrupted by a block, residential proxies usually resolve it on retry.

I pasted a start URL but the Actor is scraping a different destination.

When you provide a startUrl, the Actor ignores the search and destination fields. Make sure the URL you pasted contains the exact search parameters you want, including dates, guests, and destination.

Why are my legacy date fields ignored?

The checkinDate and checkoutDate fields are kept for backward compatibility. If you also set checkIn and checkOut, the newer fields take priority. Use only one date input method per run.

FAQ

Question Answer
Can I scrape hotels for a specific check-in date? Yes. Set the checkIn and checkOut fields to YYYY-MM-DD dates or relative values like '3 days' and '5 days'. The Actor will request availability for those exact dates.
How do I filter by hotel star rating? Use the starsCountFilter input. Choose a specific star count like 3, 4, or 5, or select 'Unrated' to get only properties without a star rating.
Can I set a minimum review score? Yes. The minScore field accepts a value like 8.4. Only hotels with a guest rating at or above that threshold will appear in your results.
What property types can I filter? The propertyType dropdown includes Hotels, Apartments, Hostels, Guest houses, Homestays, Bed and breakfasts, Holiday homes, Boats, Villas, Motels, Resorts, Holiday parks, Campsites, and Luxury tents.
Does this Actor handle Booking.com search URLs I already have? Yes. Paste any Booking.com search results URL into the startUrl field, and the Actor will paginate through all results from that exact query.
Can I change the currency of the prices? Yes. Set the currency field to a code like USD, EUR, or GBP. The Actor passes it to Booking.com so prices appear in your preferred currency.
How many hotels can I scrape in one run? You can set maxItems up to 1,000,000. The Actor will stop after collecting that many hotels or when the search runs out of pages.
Do I need proxies to scrape Booking.com? Residential proxies are recommended for stability on larger runs. The Actor comes preconfigured with Apify residential proxies, and you can adjust the proxy settings in the Networking section.
Can I scrape hotels in a specific language? Yes. Set the language field to a locale code like en-gb, de, or fr. Hotel names, descriptions, and labels will appear in that language when Booking.com supports it.
What output formats are supported? You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify platform after the run finishes.
Can I include the available filter metadata from the search page? Yes. Enable the includeFilterMetadata checkbox, and the first item in your output will contain the filter and sorter options that Booking.com offered for that search.
How do I search for hotels by destination name? Type the destination into the search field, for example 'Paris' or 'New York'. The Actor constructs the Booking.com search URL and starts collecting listings from page one.

Related actors

Browse the full ParseForge collection for more scrapers.

πŸ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Booking.com B.V. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
startUrl string Optional Booking search URL to start from. https://www.booking.com/searchresults.en
maxItems integer Maximum number of hotels to scrape. 10
search string Destination query, for example Paris or New York. not set
destination string Legacy field kept for backward compatibility. not set
propertyType string (15 options) Filter by property type. not set
sortBy string (6 options) Booking sorter key. not set
minScore string Minimum hotel rating in format like 8.4. not set
starsCountFilter string (7 options) Filter by stars count. not set
minMaxPrice string Price filter format: 100-150 or 100+. not set
currency string Currency code sent to Booking URL params. not set
language string Language sent to Booking endpoints. not set
checkIn string YYYY-MM-DD or relative format like 3 days. not set
checkOut string YYYY-MM-DD or relative format like 5 days. not set
checkinDate string Legacy date field in YYYY-MM-DD format. not set
checkoutDate string Legacy date field in YYYY-MM-DD format. not set
flexWindow string (5 options) Accepted values: 0,1,2,3,7. not set
adults integer Number of adults for the stay. not set
children integer Number of children for the stay. not set
rooms integer Number of rooms to request in search. not set
childrenAges string Optional children ages as comma-separated values, for example 4,7. not set
includeFilterMetadata boolean Include available filter and sorter metadata in the first output item. not set
proxyConfiguration object Residential proxies are recommended for Booking.com. {"useApifyProxy":true,"apifyProxyGroups"

Pricing

from $11.99 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged once when the run starts. $0.005
Result Item Charged once per result collected. $0.01199 to $0.01599

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~booking-com-hotels-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Booking.com Hotels Scraper on Apify All scrapers