Skip to content

Booking Reviews Scraper

Try for free

Scrape public Booking.com hotel reviews: review text, ratings, stay dates, room type, and the reviewer's public name and country.

🏨 Booking Reviews Scraper

Export public guest reviews from Booking.com hotel, apartment, and other stay pages. Paste a property URL and get one row per review: what the guest liked and disliked, the score, stay dates, room, traveler type, and the name and country the guest published. No Booking.com login and no browser.

✨ Why use Booking Reviews Scraper?

  • 🔓 No login needed — it reads the reviews Booking.com shows on the public hotel page.
  • ⭐ Score filters — read all scores, or only superb (9+), good (7-9), passable (5-7), or poor (3-5).
  • 🕒 Sort and cutoff — newest, oldest, best, worst, or relevance; use a cutoff date so a scheduled run only picks up new reviews.
  • 🧾 Rich rows — liked and disliked text, room type, nights, traveler type, language, helpful votes, guest photos, and the property's reply.
  • 🏷️ Hotel context on every row — overall rating and review count, plus category scores for cleanliness, comfort, location, and more.
  • 💸 Cheap — $1.10 per 1,000 reviews.

🎯 Use cases

  • 🏨 Hotel and partner research — read what guests say about a property before a partnership or a stay.
  • 📉 Reputation monitoring — watch poor reviews for a property you already have a URL for.
  • 🧹 Quality analysis — export liked and disliked text, room type, and length of stay across a set of hotels.
  • 🔁 Scheduled feeds — run daily with a cutoff date and collect only reviews posted since the last run.
  • 🗣️ Voice-of-customer mining — feed review text into your own text analysis or reporting.

🚀 How to use

  1. Paste one or more Hotel URLs (for example https://www.booking.com/hotel/cz/jeromehouse.en-gb.html).
  2. Set Maximum reviews per hotel (default 10) and a Sort reviews by order.
  3. Optional: pick Review scores bands or set a Cutoff date.
  4. Click Start.
  5. Open the dataset and export it as JSON, CSV, or Excel.

📥 Input

FieldTypeWhat it does
startUrlsarrayBooking.com hotel pages. A search page is skipped. userData.customData on a URL is copied onto every review from that hotel.
maxReviewsPerHotelintegerStop after this many reviews per hotel. Default 10.
sortReviewsBystringf_relevance, f_recent_desc (default), f_recent_asc, f_score_desc, or f_score_asc.
cutoffDatestringUTC date YYYY-MM-DD or a relative value such as 7 days. Applies to newest first and oldest first only.
reviewScoresarrayALL, or the score bands you want.
proxyConfigurationobjectDatacenter proxy by default.

With newest first, the run stops at the first review posted before the cutoff. With oldest first, reviews posted after the cutoff are left out. Other sort orders ignore it.

{
  "startUrls": [
    { "url": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html" }
  ],
  "maxReviewsPerHotel": 10,
  "sortReviewsBy": "f_recent_desc",
  "reviewScores": ["ALL"]
}

📤 Output

One dataset row per review.

FieldDescription
id, hotelId, startUrlReview id, property id, and the URL you gave.
rating, reviewTitleScore and headline. A blank headline is filled with the score label, such as Exceptional for 10 or Superb for 9.
likedText, dislikedTextWhat the guest liked and disliked.
reviewDate, checkInDate, checkOutDate, numberOfNightsPosting date and stay dates.
roomInfo, stayRoomId, travelerTypeRoom and traveler type.
userName, userLocation, userAvatarReviewer details the guest published.
reviewLanguage, helpfulVotes, images, propertyResponseLanguage, votes, guest photos, and the hotel's reply.
hotelRating, hotelReviews, hotelRatingScoresProperty rating, review count, and category scores.
reviewsScoreFilter, totalCategoryReviews, reviewPageActive score filter and its review count.
customDataValue copied from userData.customData, if set.

Real item from a test run (trimmed):

{
  "id": "57ef83cc12f6c3cf",
  "hotelId": 77040,
  "hotelRating": 9.2,
  "hotelReviews": 5899,
  "hotelRatingScores": [
    { "name": "Location", "codeName": "hotel_location", "score": 9.70646476745605 },
    { "name": "Cleanliness", "codeName": "hotel_clean", "score": 9.14645481109619 }
  ],
  "reviewPage": 1,
  "reviewsScoreFilter": "ALL",
  "startUrl": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html",
  "totalCategoryReviews": 5899,
  "userName": "Jane",
  "userLocation": "Germany",
  "roomInfo": "Standard Single Room",
  "checkInDate": "2023-10-09",
  "checkOutDate": "2023-10-11",
  "numberOfNights": 2,
  "reviewDate": "2023-10-14T09:11:33.000Z",
  "reviewTitle": "Very good",
  "likedText": "Fin beliggenhed.\nRar betjening.\nGod morgenmad.",
  "dislikedText": null,
  "rating": 8,
  "propertyResponse": null,
  "images": [],
  "reviewLanguage": "da",
  "travelerType": "Solo traveler",
  "helpfulVotes": 1
}

💰 Pricing

$1.10 per 1,000 reviews, which is $0.0011 per saved review.

Worked example: 1,000 reviews cost $1.10 in review fees. Compute and datacenter proxy traffic are billed separately at standard rates; our measured total for a 10-review run was about $0.0135, including the $0.011 in review fees.

❓ FAQ

Is it legal to scrape Booking.com reviews? The actor reads only reviews shown on public hotel pages. You are responsible for using the data in line with Booking.com's terms and the privacy rules that apply to you.

Do I need a Booking.com account or my own proxy? No. Datacenter proxy is built in and is enough for the public review list.

What happens with a bad URL? A URL that is not a Booking.com hotel page is skipped, and a hotel that does not exist adds no rows. The run still succeeds and keeps reviews already saved from other URLs.

Which date does the cutoff use? The date the review was posted, in UTC, not the check-in date. A relative value such as 7 days means that many days before the run starts.

What if a field is empty? Many guests write only a rating or only one of liked and disliked, so likedText or dislikedText can be null.

Can I schedule it or use the API? Yes. Use schedules in the console, or start runs and read the dataset via the API.

⚠️ Limits

  • Up to every review the hotel has, per hotel URL. Pages are read 25 at a time, three hotels at once, and if a later page fails the reviews already saved are kept.
  • Several score bands in one run are read one band at a time until the per-hotel limit is reached.
  • Review text stays in the language Booking.com returns for an English (UK) request. Some reviews are marked xu when Booking.com machine-translated them.
  • Equal scores are not in a stable order between runs.
  • Reviews that need a signed-in account are not collected.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.