Booking.com Reviews Scraper avatar

Booking.com Reviews Scraper

Pricing

from $0.19 / 1,000 reviews

Go to Apify Store
Booking.com Reviews Scraper

Booking.com Reviews Scraper

Booking.com reviews scraper API for guest reviews of a hotel or stay: score, what guests liked and disliked, date, room, stay dates, traveller type, country and the property's reply, plus the hotel's category scores. Filter by travellers, score, language and time of year. $0.185 per 1,000 reviews.

Pricing

from $0.19 / 1,000 reviews

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

Booking.com reviews scraper for hotels, apartments and every other stay: paste a property's link and get one row per guest review, with the score, what the guest liked and disliked, the date, the room, the stay dates, the traveller type, the guest's country and the property's reply.

Every row also carries the property: its address, how many reviews it has and its category scores for location, cleanliness, staff, comfort, facilities and value. Booking.com's own filters work: traveller type, score band, language, time of year and words, plus a score range and a date window.

Plenty of guests leave a score and no comment. Those rows have empty text, and one switch leaves them out.

InputBooking.com property links, from any of its country or language versions, or property names as Booking.com shows them
OutputOne row per review: score, title, liked, disliked, date, room, check-in, check-out, nights, traveller type, guest country, language, photo links, the property's reply, and the property's address, review count and category scores
Ceiling100,000 reviews per property, 200,000 per run
Account neededNone from you
Price$0.185 per 1,000 reviews, the same rate on every plan. The free plan's $5 a month covers about 27,000 reviews
Using an AI agent?
Actordami_studio/booking-reviews-scraper
Set one fieldstartUrls, labelled "Properties" in the Console
Cap the billmaxTotalChargeUsd on the run, for example 0.10: it never charges past that
MCP, one linkhttps://mcp.apify.com/?tools=fetch-actor-details,dami_studio/booking-reviews-scraper
How oftenDaily, with "Only new reviews" on, to see each new review the day it appears

🔍 What Booking.com Reviews Scraper does

It finds each property from its link, or from its name the way Booking.com's search box does (only a property carrying that name is read), reads its reviews the way the property's page lists them, 25 at a time, and writes one row per review until it has the number you asked for. A hotel with 10,000 reviews can come back whole.

The filters are Booking.com's own, so a run asking for poor scores from families reads only those. Each row is checked against your filters again before it is written. A row that doesn't match is left out and not charged.

Two options save time on repeat work. "Written since" and "Written until" take a date window, and the run goes straight to it instead of reading everything newer. "Only new reviews" remembers what earlier runs gave you, in a store in your own account, and returns only the reviews written since.

📋 What data you get from each Booking.com review

What you getField
The review's idreviewId
Score and titlescore (1 to 10), title
What the guest liked and dislikedliked, disliked
When it was written, and its languagereviewedAt, language
The stayroomType, checkIn, checkOut, nights
Who travelledtravellerType (families, couples, friends, solo, business), guestType
Where the guest is fromreviewerCountry, reviewerCountryCode
Votes and photo linkshelpfulVotes, photoUrls
The property's replyhostReply
The reviewer (optional)reviewer.name, reviewer.isAnonymous, reviewer.reviewCount, reviewer.memberSince, reviewer.avatarUrl
The propertyhotelId, hotelName, hotelUrl
The property's summary (optional)hotel.address, hotel.city, hotel.countryCode, hotel.reviewCount, hotel.categoryScores (category, score, reviews)
Where the row came fromsearchInput, position, scrapedAt

▶️ How to scrape Booking.com reviews

  1. Open Booking.com Reviews Scraper and click Try for free.
  2. Paste one or more property links into Properties, one per line, or type their names into Property names.
  3. Set Reviews per property. Twenty is plenty for a first look.
  4. Pick any filters under Filters: travellers, scores, languages, time of year, words, dates.
  5. Click Start, then open the Output tab or export the rows as CSV, Excel or JSON.

An empty run returns one free sample row showing the shape of the output.

💰 How much does it cost to scrape Booking.com reviews?

$0.185 per 1,000 reviews, the same rate on every plan. The free plan's $5 a month covers about 27,000 reviews.

Not charged: the sample row, note rows, a review a run has already returned, and reviews left out by your filters. The property's summary on each row costs nothing extra.

📥 What you give it

FieldWhat it doesDefault
startUrlsProperty links, one per linenone (prefill The Savoy)
hotelNamesProperty names as Booking.com shows them, one per line, up to 100; the city can follow the namenone
maxReviewsPerHotelReviews for each property, up to 100,000100
maxItemsReviews in the whole run, up to 200,000no limit
searchResultsDatasetIdA dataset with hotelUrl, propertyUrl, url or link columnsnone
sortBynewest, oldest, mostRelevant, highestScore or lowestScorenewest
skipReviewsStart after this many reviews in that order0
travellerTypefamilies, couples, friends, solo or businessall
scoreBandsuperb, good, average, poor or veryPoor, as Booking.com groups scoresall
minScore, maxScoreA score range, 1 to 10none
languagesLanguage codes such as en, fr, deall
seasonmarchToMay, juneToAugust, septemberToNovember or decemberToFebruary: when the guest stayedany time
searchTextOnly reviews mentioning these wordsnone
onlyWithTextLeave out reviews with a score and no commentoff
reviewsSince, reviewsUntil2026-01-31, or for "since" a span like 30 days or 6 monthsnone
monitoringStoreNameA store in your account that remembers what earlier runs returnednone
includeHotelDetails, includeReviewerDetailsAdd the property's summary and the reviewer to every rowon
siteLanguageThe language of Booking.com's own labels, such as room namesen-us
flattenOutputOne column per field, for a spreadsheetoff

A date written any other way, or a value the lists above don't have, stops the run before it asks Booking.com anything, with a free row saying which field to fix.

{
"startUrls": ["https://www.booking.com/hotel/gb/the-savoy.html"],
"maxReviewsPerHotel": 200,
"scoreBand": "poor",
"reviewsSince": "6 months"
}

📤 What you get back

A review of The Savoy read from Booking.com on 7 November 2026, trimmed:

{
"recordType": "review",
"reviewId": "03ccbceb065f1373",
"hotelId": "280149",
"hotelName": "The Savoy",
"score": 10,
"title": "Lovely place to stay",
"liked": "Loved the room very comfortable especially the bed. Would definitely stay here again great location",
"disliked": null,
"language": "en",
"reviewedAt": "2026-11-04T13:23:19.000Z",
"travellerType": "families",
"guestType": "Family",
"roomType": "Superior Queen Room",
"checkIn": "2026-09-26",
"checkOut": "2026-09-29",
"nights": 3,
"reviewerCountry": "United Kingdom",
"hostReply": "We very much appreciate your comments regarding your stay at The Savoy, and for taking the time to complete a guest survey.",
"hotel": {
"address": "Strand",
"city": "London",
"reviewCount": 1418,
"categoryScores": [
{ "category": "Location", "score": 9.75, "reviews": 1402 },
{ "category": "Value for money", "score": 8.48, "reviews": 1400 }
]
}
}
FieldHow to read it
scoreThe guest's score from 1 to 10
liked, dislikedEmpty when the guest wrote nothing in that box
reviewedAtWhen the guest wrote it, in UTC
languageThe language the guest wrote in; empty when Booking.com gives none
hotel.reviewCountEvery review the property has, whatever filters the run used

🧾 Reading the output

Real rows have recordType review. The free sample row has _sample: true. Note rows have ok: false, cost nothing and carry an errorCode:

  • BAD_INPUT: a field was unusable, so nothing was asked of Booking.com. details says which.
  • NOT_FOUND: Booking.com has no property at that link, or a name didn't lead to a property of that name. details says what Booking.com found instead: a city, a landmark, or a property called something else, with its link.
  • NO_RESULTS: the property has no review matching every filter, or no new review since your last run with that store.
  • NOT_SERVED: Booking.com did not answer for this property during the run. Run it again later.
  • TIME_LIMIT: the run's time limit came first; reviews before it are delivered.
  • COST_LIMIT: your maximum cost was reached.
  • UNEXPECTED_ERROR: something broke on our side; please report it.

To keep only reviews, filter on recordType being review.

💡 What people use it for

  • Hotel and apartment owners reading what guests say about them and about the places down the street, lowest scores first.
  • Anyone comparing a shortlist of stays: every poor review from families, side by side.
  • Teams answering reviews: a daily run with "Only new reviews" on, kept to the rows where hostReply is empty.
  • Researchers who need guest comments in quantity, by language, traveller type and season.

A small recipe: run Booking.com Hotels Scraper for a city, pass its dataset in with searchResultsDatasetId, set scoreBand to poor, and read what the low scores have in common.

🚧 What it does not do

  • Up to 100,000 reviews per property and 200,000 per run.
  • No phone numbers or e-mail addresses, the property's or anyone else's.
  • Photos are links, not downloaded files.
  • Reviews come as Booking.com publishes them; removed reviews don't come.
  • It is not an official Booking.com tool. Dami's Studio is independent and is not affiliated with or endorsed by Booking.com, or by any other company named on this page.

🧭 Which Booking.com scraper do you need?

If you wantUse
Guest reviews of Booking.com hotels and staysThis one
Hotels, prices and rooms in a city on Booking.comBooking.com Hotels Scraper
Reviews of the same places on Google MapsGoogle Maps Reviews Scraper
Agoda hotels with their guest reviewsAgoda Hotels Scraper

❓ Questions people ask

Do I need a Booking.com account to scrape reviews?

No. You don't need a Booking.com account. The run reads what a signed-out visitor sees on booking.com.

Why don't my numbers match what I see on Booking.com?

The page may sort or filter reviews for you, and new reviews appear all day. Open the property in a private browser window, pick "All reviews", and compare with a run started at the same moment.

Can I get only the new reviews every day?

Yes. Put a name in "Only new reviews", such as my-hotels, and schedule the run. Each run returns only reviews written since the last one, and a free note row for a property with nothing new.

How do I call it from code or an AI assistant?

Use the actor's API tab, or connect an assistant through https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/booking-reviews-scraper. In Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("dami_studio/booking-reviews-scraper").call(
run_input={"startUrls": ["https://www.booking.com/hotel/gb/the-savoy.html"], "maxReviewsPerHotel": 50},
max_total_charge_usd=0.10,
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row.get("ok") is False:
continue
print(row["score"], row["liked"])

The data is public and read the way a signed-out visitor sees it, with no account and nothing private. Any personal data in the rows, such as a guest's name, falls under laws like GDPR, so keep only what you need. Booking.com's own terms still apply to what you do with the data. Apify has a plain-language write-up on the legality of web scraping. We are not lawyers.

🆘 If something breaks

Open an issue on the actor's Issues tab. Include the run link and the input you used.