Booking.com Reviews Scraper - Hotel Rating & Review Count avatar

Booking.com Reviews Scraper - Hotel Rating & Review Count

Pricing

from $0.80 / 1,000 review scrapeds

Go to Apify Store
Booking.com Reviews Scraper - Hotel Rating & Review Count

Booking.com Reviews Scraper - Hotel Rating & Review Count

Scrape Booking.com hotel ratings and guest reviews. Get the overall score, total review count and category sub-scores per hotel, or pull every review with reviewer name, country, room type and stay dates. Summary-only mode skips reviews entirely. Fast, HTTP-only. JSON or CSV.

Pricing

from $0.80 / 1,000 review scrapeds

Rating

5.0

(1)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

16

Monthly active users

5 days ago

Last modified

Categories

Share

Booking.com Reviews Scraper ⭐

Scrape Booking.com hotel ratings and guest reviews. Get the overall guest score, total review count and category sub-scores per hotel, or every review with reviewer name, country, score, title, positive & negative text, room type, stay dates, helpful votes, partner replies and photos. Fast, HTTP-only, structured JSON/CSV/Excel out.

Booking.com Reviews Scraper

Why use Booking.com Reviews Scraper?

  • Just the headline numbers, if that's all you need — switch on Skip reviews and get one row per hotel with the overall score, total review count, star rating and category sub-scores. No review rows, no pagination.
  • Every review, not just the first page — or leave it off and paginate through a hotel's full review history.
  • Rich per-review data — reviewer name & country, numeric score, title, separate positive and negative text, room type, check-in/out dates, number of nights, customer type, helpful votes, and any partner (hotel) reply.
  • Category rating breakdown — cleanliness, staff, location, comfort, facilities, value and wifi, as a categoryRatings object on the hotel row.
  • Find a hotel two ways — by name (e.g. Sansi Pedralbes Barcelona) or by pasting a Booking.com hotel URL.
  • URLs resolve exactly, even after a rename — a slug and a listed name are independent (/hotel/tc/the-alexandra is listed as "Alexandra Resort - All-Inclusive"). Each URL is read from the property's own page, so a renamed hotel returns its real reviews instead of being skipped.
  • Sort control — most relevant, newest, oldest, highest, or lowest score.
  • No login, no browser — talks directly to Booking's data API, so runs are fast and cheap.
  • Runs on any plan — the standard Apify proxy is enough, no residential subscription required.
  • Pay only for what you scrape — pay-per-review pricing with volume discounts, no monthly rental.

What data can you extract from each review?

FieldTypeDescription
hotelNamestringHotel the review belongs to
hotelIdnumberBooking.com internal hotel ID
hotelUrlstringDirect Booking.com hotel page URL
reviewUrlstringDirect link to the review
reviewScorenumberReviewer's overall score (0–10)
titlestringReview headline
positiveTextstringWhat the guest liked
negativeTextstringWhat the guest disliked
languagestringLanguage code of the review text
reviewedDatestringISO 8601 date the review was posted
helpfulVotesnumberNumber of "helpful" votes
reviewerNamestringReviewer's display name
reviewerCountrystringReviewer's country
reviewerCountryCodestringISO country code
reviewerTypestringGuest type (e.g. Couple, Family, Solo traveller)
reviewerReviewCountnumberHow many reviews this guest has written
roomTypestringRoom the guest stayed in
customerTypestringBooking customer type
checkinDate / checkoutDatestringThe guest's stay dates
numNightsnumberLength of stay in nights
partnerReplystringThe hotel's reply to the review, if any
photosstring[]URLs of photos attached to the review
scrapedAtstringISO 8601 timestamp of collection

Use cases

  • Reputation monitoring — track guest sentiment and scores for your property or competitors.
  • Review analysis & NLP — feed positive/negative text into sentiment models and topic analysis.
  • Hospitality benchmarking — compare category sub-scores (cleanliness, staff, location) across hotels.
  • Content & research — surface authentic guest feedback for travel content or market studies.

How to scrape Booking.com reviews

  1. Enter a Hotel name (e.g. Sansi Pedralbes Barcelona) or paste one or more Booking.com hotel URLs.
  2. Decide what you want back. For just the headline numbers, switch on Skip reviews and you get one row per hotel. For the reviews themselves, leave it off and set how to sort them plus Max reviews per hotel (0 = all).
  3. Run and download the results as JSON, CSV, Excel, HTML, or XML.

Two output shapes

With Skip reviews on, you get one rowType: "hotel" row per property: overall score, score label, total review count, star rating, address, coordinates and categoryRatings. Nothing else.

With it off, you get one row per review (rowType: "review"). Switch on Include hotel summary row as well if you want the hotel row alongside them.

Input configuration

ParameterTypeDefaultDescription
hotelQuerystringHotel name (or "Hotel Name, City") to fetch reviews for. Provide this or Start URLs.
startUrlsarrayBooking.com hotel page URLs (e.g. https://www.booking.com/hotel/es/sansipedralbes.html).
resolveUrlsViaPagebooleantrueRead each start URL's own page for the hotel's exact identity, name, rating and review count. Leave this on — it is what makes renamed properties resolve.
skipReviewsbooleanfalseEmit only the hotel-level summary row, no individual reviews.
includeHotelSummarybooleanfalseAdd a rowType: "hotel" row alongside the review rows. Forced on when skipReviews is set.
includeCategoryRatingsbooleantrueInclude the per-category breakdown (cleanliness, staff, location, comfort, facilities, value, wifi) on the hotel row.
maxHotelsinteger1When the query is broad (a city), how many matching hotels to cover. Ignored for exact URLs.
maxReviewsinteger100Max reviews per hotel. 0 = all available.
sortByenummost_relevantmost_relevant, newest, oldest, score_high, score_low.
cutoffDatestringKeep only reviews posted on or after this date, e.g. 2026-01-01. Sorting switches to newest-first automatically so pagination stops at the cutoff.
minReviewScoreintegerKeep only reviews scoring at least this (0-10). 8 for positive reviews only.
maxReviewScoreintegerKeep only reviews scoring at most this (0-10). 6 to study complaints.
languagestringen-usLanguage code for review text and labels.
proxyConfigurationobjectApify proxyProxy settings. The standard Apify proxy is the default and is enough; residential is supported but costs more and is not required.

Output sample

{
"hotelName": "Sansi Pedralbes",
"hotelId": 91017,
"hotelUrl": "https://www.booking.com/hotel/es/sansipedralbes.html",
"reviewScore": 10,
"title": "Best service ever!",
"positiveText": "The service is exceptional.",
"negativeText": "Nothing. Everything is great.",
"language": "en",
"reviewedDate": "2026-07-09T00:00:00.000Z",
"reviewerName": "Ricardo",
"reviewerCountry": "Mexico",
"reviewerType": "Couple",
"roomType": "Standard Double Room",
"checkinDate": "2026-07-01",
"checkoutDate": "2026-07-09",
"numNights": 8,
"partnerReply": null,
"photos": [],
"scrapedAt": "2026-07-14T04:00:00.000Z"
}

FAQ

Do I need a Booking.com account or API key? No. The scraper pulls public review data directly — no login, cookies, or key required.

How do I target a specific hotel? Either enter its name (e.g. Sansi Pedralbes Barcelona) or paste its Booking.com hotel URL. URLs are resolved by reading the property's own page, so they identify the hotel exactly.

I only want the rating and review count, not the reviews. Switch on skipReviews. You get one row per hotel with the overall score, total review count, star rating and category sub-scores, and no review rows at all.

The name in my output doesn't match the URL. Is that wrong? No. A slug and a listed name are independent, and properties get renamed. /hotel/tc/leeward-resort is listed as "Blue Haven Resort", /hotel/tc/windsong-resort as "Windsong on the Reef". The Actor returns the name Booking currently shows.

A hotel URL returned nothing. Why? Almost always because the property has been delisted — a removed hotel redirects to a generic destination page with no property record left to read. If it is still live on Booking, send the URL via the Issues tab.

Why are some positiveText / title fields empty? Many Booking guests leave only a score with no written text — those fields are simply blank for those reviews.

Can I get every review? Yes — set maxReviews to 0 to paginate through all available reviews for the hotel.

Can I scrape only new reviews since my last run? Set cutoffDate to the date you last pulled. The Actor sorts newest-first and stops paginating once it reaches that date, so an incremental run costs a fraction of a full one. Filtered-out reviews are never pushed and never billed.

Can I get only good or only bad reviews? Set minReviewScore (e.g. 8) or maxReviewScore (e.g. 6), on Booking's 0-10 scale. They combine with cutoffDate.

Do I need residential proxies? No. The default Apify proxy is enough and is what the Actor uses out of the box. Residential is supported if you prefer it, but it costs considerably more per run and buys you nothing here.

Support

Found a bug or need a field added? Open an issue on the Actor's Issues tab.

Additional services

Need hotel search data (prices, ratings, coordinates, room types) across a whole destination? See our companion Booking.com Scraper on the same fast, HTTP-only pipeline.

Explore more scrapers

Check the Apify Store for more travel and accommodation data tools.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/booking-reviews-scraper).

Purpose: Returns a Booking.com hotel's overall rating and review count, its category sub-scores, and optionally every individual guest review, over Booking's data API.

Minimal input (rating and review count only):

{
"startUrls": [{ "url": "https://www.booking.com/hotel/gb/the-savoy.html" }],
"skipReviews": true
}

Minimal input (the reviews themselves):

{
"hotelQuery": "The Savoy London",
"maxReviews": 25
}

Output: two row shapes, distinguished by rowType.

rowType: "hotel"hotelName, hotelId, ufi, hotelUrl, address, city, countryCode, latitude, longitude, starRating, reviewScore, reviewScoreWord, reviewCount, categoryRatings, scrapedAt.

rowType: "review"hotelName, hotelId, hotelUrl, reviewUrl, reviewScore, title, positiveText, negativeText, language, reviewedDate, helpfulVotes, reviewerName, reviewerCountry, reviewerCountryCode, reviewerType, reviewerReviewCount, roomType, customerType, checkinDate, checkoutDate, numNights, partnerReply, photos, scrapedAt.

Behaviors an agent should know:

  • Provide either hotelQuery (hotel name, or "Hotel Name, City") or startUrls (exact Booking.com hotel URLs). URLs are exact: each is resolved from the property's own page.
  • For the overall rating and review count only, set skipReviews: true — one hotel row per property, no review rows. This is the cheapest way to get headline numbers.
  • To get both, leave skipReviews off and set includeHotelSummary: true.
  • The returned hotelName is the hotel's current listed name and may differ from the URL slug; slugs and names are independent and properties get renamed. This is expected, not an error.
  • A start URL that produces no row means the property is delisted. Live hotels always resolve.
  • Always set maxReviews (default 100; 0 = every available review, paginating the full history).
  • For incremental runs pass cutoffDate (YYYY-MM-DD): sorting is forced to newest-first and pagination stops at that date, so only new reviews are read and billed.
  • minReviewScore / maxReviewScore filter on Booking's 0-10 scale; filtered rows are never pushed or charged.
  • maxHotels controls how many matches a broad city-style hotelQuery covers; it is ignored for exact hotel URLs.
  • sortBy accepts most_relevant, newest, oldest, score_high, score_low; language sets the review-text/label locale.
  • The default Apify proxy is sufficient. Residential is supported but unnecessary and more expensive.
  • Billing is per review scraped, plus one event per hotel summary row, with volume discounts and no monthly rental.

⚠️ Disclaimer

This Actor scrapes only publicly available guest-review information from Booking.com. It does not log in, bypass access controls, or collect private personal data. You are responsible for how you use the extracted data, including compliance with Booking.com's Terms of Service, applicable laws (such as GDPR), and any copyright or database rights. Use the data lawfully and ethically.

SEO Keywords

booking.com reviews scraper, booking review scraper, hotel reviews scraper, scrape booking reviews, booking.com guest reviews, hotel review data, review sentiment data, accommodation reviews, booking.com ratings, hotel reputation monitoring, guest feedback scraper, review export, booking reviews api, hotel review extraction