To scrape Booking.com, give a ready-made Actor a destination and your dates, or paste Booking.com search or hotel URLs, and it returns one row per property: the live price for your stay, star rating, guest rating, review count, category scores such as cleanliness and location, rooms with bed types and cancellation terms, facilities, photos and coordinates. A second Actor turns hotel pages into guest reviews. On Scrape.ly each is a preset and one click, or one API call, with no Booking.com account.
This guide covers the fields you get, the no-code steps, the same jobs in curl, Python, Node.js and through an AI agent, two real runs from 27 October 2026 (ten stays near Lisbon's Rossio for two nights in November, and ten reviews of a Prague hotel), their logs and exact cost.
What data you can get from Booking.com
The Booking.com Scraper returns one row per property:
| Field | What it holds |
|---|---|
name, type, stars, description | Property name, type (hotel, apartment, hostel…), star rating and description |
price, currency, checkInDate, checkOutDate | The live total for your stay, in the currency you chose |
rating, ratingLabel, reviews | Guest score out of 10, its label and the number of reviews |
categoryReviews, reviewSummary | Scores for cleanliness, comfort, staff, facilities, location and value |
rooms | Room types, persons, beds, facilities and price options with cancellation type |
address, location | Full address, city, postal code, country and coordinates |
images, roomImages | Gallery and room photos |
checkIn, checkOut, highlights, policies, finePrint | House rules and location highlights |
The Booking Reviews Scraper returns one row per guest review: score, title, liked and disliked text, room type, stay dates and length, traveler type, reviewer country, helpful votes and the property's response, plus the hotel's overall rating and review count.
How to scrape Booking.com without code
- Open the Booking.com Scraper in the Scrape.ly Store.
- Pick the Hotels in Lisbon, 10 results preset. It fills in this input:
{
"search": "Lisbon",
"startUrls": [],
"checkIn": "2026-11-16",
"checkOut": "2026-11-18"
}- Change the destination and dates, or paste Booking.com search or hotel URLs, and click Start. Our run took 10 seconds.
- Open the dataset and export it as JSON, CSV or Excel.
For reviews, open the Booking Reviews Scraper and run Most relevant reviews of a Prague hotel, 10 reviews with your own hotel URL.
The input fields that matter most:
searchorstartUrls: a destination as you'd type it into Booking.com, or search and hotel URLs (filters in a search URL are kept).checkIn,checkOut,adults,children,rooms: prices and room options need dates. Relative dates such as21 dayskeep a saved input current.propertyType,starsCount,minScore,minMaxPrice: filter to hotels or apartments, a star rating, a minimum guest score, or a nightly price range like100-150.sortBy,currency,language: order, 25 currencies and 30 languages.maxItems: properties per search, up to 1,000.- For reviews:
maxReviewsPerHotel,sortReviewsBy(newest, oldest, highest or lowest score, or relevance),cutoffDateandreviewScoresbands.
The 4-star Lisbon hotels rated 8+ preset shows the filters together.
How to scrape Booking.com with the API
Create a token under Settings → API & Integrations in the dashboard and store it as SCRAPELY_TOKEN. A 10-property search takes about 10 seconds, so the synchronous endpoint fits:
curl -X POST "https://api.scrape.ly/v2/actors/roamandroof~booking-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $SCRAPELY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"search": "Barcelona", "checkIn": "21 days", "checkOut": "23 days", "adults": 2, "propertyType": "Hotels", "minScore": "8", "currency": "EUR", "maxItems": 50}'Add ?format=csv for a CSV. A full 1,000-property search takes about 25 minutes, so start it asynchronously (POST /v2/actors/roamandroof~booking-scraper/runs), poll /v2/actor-runs/RUN_ID?waitForFinish=60, then read /v2/actor-runs/RUN_ID/dataset/items?format=csv. The API docs cover each step.
In Python (pip install scrapely-client-python), this rate shopper prices two-night hotel stays in the same city starting 5, 12, 19 and 26 days out and prints the median total for each, so a revenue manager sees where demand is building:
import os
from statistics import median
from scrapely_client import ScrapelyClient
client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")
for weeks in (1, 2, 3, 4):
check_in, check_out = f"{weeks * 7 - 2} days", f"{weeks * 7} days"
run = client.actor("roamandroof/booking-scraper").call(
run_input={"search": "Lisbon", "checkIn": check_in, "checkOut": check_out,
"adults": 2, "propertyType": "Hotels", "currency": "EUR", "maxItems": 100}
)
prices = [p["price"] for p in client.dataset(run.default_dataset_id).iterate_items() if p.get("price")]
if prices:
print(f"check-in in {check_in}: {len(prices)} hotels, median {median(prices):.0f} EUR")In JavaScript or Node.js (npm install scrapely-client), pull the newest reviews of your own property every day:
import { ScrapelyClient } from 'scrapely-client';
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN, baseUrl: 'https://api.scrape.ly' });
const run = await client.actor('roamandroof/booking-reviews-scraper').call({
startUrls: [{ url: 'https://www.booking.com/hotel/cz/jeromehouse.en-gb.html' }],
sortReviewsBy: 'f_recent_desc',
cutoffDate: '1 day',
maxReviewsPerHotel: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const r of items) console.log(r.rating, r.reviewDate, r.dislikedText);The Booking.com API page shows these Actors as a ready-made API, and the Python client docs cover paging through large datasets.
With an AI agent (MCP)
Scrape.ly runs a hosted MCP server at https://mcp.scrape.ly. In Cursor, add it to ~/.cursor/mcp.json:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}In Claude Code, run claude mcp add --transport http scrapely https://mcp.scrape.ly, then /mcp to sign in with OAuth. Then ask: "Use scrapely to find 4-star hotels in Porto for the second weekend of December rated 8.5 or higher, and rank them by price with their cleanliness and location scores." The MCP docs list ChatGPT, VS Code, Windsurf and the other clients.
Two real runs
Ten stays near Rossio, Lisbon
We ran the Lisbon preset as-is on 27 October 2026: two adults, one room, 16 to 18 November 2026, prices in US dollars. It saved 10 properties in 10 seconds. Prices are the total for the two nights:
| Property | Type | Stars | Price, 2 nights | Rating | Reviews | Lowest category score |
|---|---|---|---|---|---|---|
| FLH Praça Rossio Elegant Flat | Apartment | none | $285 | 8.9 Fabulous | 69 | Staff 8.4 |
| FLH Praça Rossio Bright Apartment | Apartment | none | $273 | 7.9 Good | 35 | Value for money 7.5 |
| Rossio Hostel | Hostel | none | $185 | 7.6 Good | 2,355 | Facilities 7.3 |
| FLH Heart of Rossio Units | Apartment | none | $260 | 8.9 Fabulous | 239 | Staff 8.5 |
| Hotel Metropole | Hotel | 3 | $234 | 8.5 Very good | 1,230 | Facilities and value, 8.2 |
| My Story Hotel Rossio | Hotel | 3 | $308 | 9.0 Superb | 2,054 | Value for money 8.8 |
| Hotel INN Rossio | Hotel | 3 | $275 | 7.7 Good | 3,505 | Facilities 7.5 |
2026-10-27T17:17:35.411Z [scrapely.proxy_configuration] INFO Platform proxy access check succeeded.
2026-10-27T17:17:36.230Z [scrapely.actor] INFO Searching Lisbon
2026-10-27T17:17:42.330Z [scrapely.actor] INFO Saved 10 properties. Retries: none.What the ten rows show:
- The default sort is distance, and one operator dominates it. Sorted by distance from the search center, every result sat around Rossio square, and six of the ten were apartments from the same operator (FLH). For a market view, sort by
bayesian_review_scoreorprice, or raisemaxItems. - Review counts change what a rating means. Two apartments scored 8.9 on 69 and 239 reviews; Hotel INN Rossio scored 7.7 on 3,505. Weight ratings by
reviewsbefore you rank. - Category scores explain the overall one. The Bright Apartment scored 9.7 for cleanliness but 7.9 overall, pulled down by staff (7.7) and value for money (7.5); Rossio Hostel had 9.2 for staff and 7.3 for facilities. That's the detail a hotel benchmarking report needs.
- Apartments have no stars.
starswas empty for every apartment and the hostel, which is normal on Booking.com. Filter ontypeandratinginstead. - Prices are live totals, converted. The prices came back with long decimals, because Booking.com converts from the property's currency. Round them, and store
checkInDatewith each price, since the same room costs different amounts on different dates.
Ten reviews of a Prague hotel
We ran the Prague reviews preset as-is: one hotel, ten reviews, sorted by relevance. It saved 10 reviews in 7 seconds. The hotel's overall rating was 9.2 from 5,883 reviews. Reviewer names are left out:
| Score | Posted | Nights | Room | Reviewer from | Title |
|---|---|---|---|---|---|
| 9 | 2025-01-04 | 5 | Standard Double or Twin Room | United Kingdom | Superb |
| 10 | 2024-12-07 | 5 | Standard Double or Twin Room | Israel | A great hotel for your Prague trip! |
| 9 | 2024-12-03 | 3 | Standard Double or Twin Room | United Kingdom | Enjoyable and memorable get-a-way. |
| 10 | 2024-07-29 | 3 | Economy Double or Twin Room | Switzerland | Perfect location for visiting Prague |
| 9 | 2024-04-04 | 4 | Standard Double or Twin Room | Sweden | Great comfy old-style hotel in central Prague. |
- Relevance isn't recency. The "most relevant" reviews dated from April 2024 to January 2025. For monitoring, sort newest first (
f_recent_desc) with acutoffDate. - High scores still carry complaints. Every review scored 9 or 10, yet six of the ten disliked texts mentioned breakfast, and one reported water coming through a shower ceiling. The liked and disliked fields are where the operational detail is.
- Who stays. Five reviewers were from the United Kingdom and two from Israel, and stays ran three to five nights, the kind of mix a marketing team segments on.
What it costs
Both Actors charge per result, platform usage (compute and proxy) included. Prices checked on the Store pages on 27 October 2026: $0.00237 per property ($2.37 per 1,000) and $0.00106 per review ($1.06 per 1,000).
Our runs: 10 × $0.00237 = $0.0237 and 10 × $0.00106 = $0.0106 at list price ($0.01896 and $0.00848 charged, because our plan has a Store discount).
At scale: a daily rate check of 100 hotels on four date pairs is 400 properties, about $0.95 a day. A weekly pull of the newest 50 reviews for 20 competitor hotels is 1,000 reviews, $1.06. The Free plan's $5 of monthly usage covers about 2,100 properties or 4,700 reviews.
What to watch out for
- Prices need dates. Without check-in and check-out, prices and room options are empty. A check-in date in the past moves 21 days forward, so a saved input keeps working.
- About 1,000 properties per search. Booking.com repeats itself after that. Narrow the area or add filters for the rest.
- 16 months ahead at most. Booking.com takes stays only about 16 months out.
- One room offer per room type. Each room keeps the search offer, not every cancellation alternative.
- Reviews are personal data. Reviewer names, avatars and sometimes staff names in the text identify people. Keep scores, dates and text for analysis and leave names out of anything you publish.
Is it legal to scrape Booking.com?
The Actors read public search, property and review data that anyone can open without an account. Booking.com's Terms (read on 27 October 2026) say: "Whether or not you have a commercial purpose, you're not allowed to access, monitor, copy, scrape/crawl, download, reproduce or otherwise use anything on our Platform using any robot, spider, scraper, other automated means". Whether and how those terms bind you depends on your jurisdiction, whether you have an account that accepted them, and your use.
Booking.com's own Demand API is for its affiliate partners: its prerequisites require you to be "Registered as a Booking.com Managed Affiliate Partner", with Partner Centre access "provided by your Booking.com Account Manager after signing the agreed contract". For reviews, the GDPR applies to reviewer data; our GDPR and web scraping guide covers the basics. This is not legal advice; for a commercial project, ask a lawyer about your case.
Why Scrape.ly for Booking.com
- No partner contract. Live prices, ratings, rooms and reviews with one Scrape.ly token, instead of an affiliate agreement.
- Real stay prices. The total for your dates, guests and rooms, in 25 currencies, with relative dates that keep a scheduled run current.
- Properties and reviews together. Two Actors, one dataset format, one bill; add Tripadvisor, Airbnb and Google Flights for the rest of a trip.
- Built for monitoring. Schedule a run, filter to what changed, and send it to Sheets, Slack or a webhook; our price scraping and review monitoring guides show the setup.
FAQ
Can you scrape Booking.com for free?
Yes. The Free plan includes $5 of usage credit every month with no credit card, which covers about 2,100 properties or 4,700 reviews at list price.
Does Booking.com have a public API?
Not for everyone. The Demand API is for registered Managed Affiliate Partners with a signed contract. The Actors return the same public data as JSON through the Scrape.ly API.
How do I scrape Booking.com prices for specific dates?
Set checkIn and checkOut as YYYY-MM-DD, or as relative dates such as 21 days and 23 days, plus adults, children and rooms. The price is the live total for that stay.
Can I scrape Booking.com reviews?
Yes, with the Booking Reviews Scraper. Paste hotel URLs, choose the sort order, and set cutoffDate for only recent reviews or reviewScores for a score band.
How many hotels can I get per city?
About 1,000 per search, which is what Booking.com shows for one search. Filters like stars and minimum score are applied by Booking.com, so a filtered search fills those places with matches.
Can I scrape Booking.com with Python?
Yes. Install scrapely-client-python and call roamandroof/booking-scraper or roamandroof/booking-reviews-scraper, as in the rate shopper above. The scraping runs in the cloud, so you don't manage proxies or Booking.com's internal API.




