Booking Reviews Scraper avatar

Booking Reviews Scraper

Pricing

from $0.75 / 1,000 results

Go to Apify Store
Booking Reviews Scraper

Booking Reviews Scraper

Extracts Booking.com hotel reviews via the site's own internal API — no browser needed. Full review text, guest profiles, stay details, hotel replies, and category rating breakdowns, ready to export.

Pricing

from $0.75 / 1,000 results

Rating

0.0

(0)

Developer

Vladimir Efimenco

Vladimir Efimenco

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

9 days ago

Last modified

Share

Booking Reviews Scraper | ⚡ Fast & Browserless

This Booking Reviews Scraper pulls hotel reviews straight from Booking.com's internal review API, not a headless browser. You get the full review content (positive, negative, and title) alongside guest details, stay data, and hotel-wide rating breakdowns, all in one clean dataset.

🎥 Video tutorial

⚡ Why this Booking Reviews Scraper

  • Full dataset, not a summary. Every review comes with the complete positive/negative text split, guest profile info, room and stay details, and the hotel's reply where present. Most Booking.com review scrapers give you a score and a snippet of text and stop there.
  • Bypasses Booking.com's bot protection automatically. Booking.com puts an AWS WAF challenge in front of its pages specifically to slow down scrapers. This Booking Reviews Scraper solves that challenge on its own, on every run, so you never see a blocked request.
  • Hotel-wide rating breakdown included. Per-category scores (cleanliness, comfort, location, and more) are attached to every review, not buried behind a separate call.
  • Flexible filtering. Sort order and translation language match what's available on the live site, plus keyword search across the review title, positive text, and negative text at once.
  • Batch scraping. Crawl and extract reviews for multiple hotels in a single run, with a configurable result cap per hotel or unlimited collection.
  • Proxies included. The proxy pool is built into the price, nothing to configure.
  • Fast, no-code extraction. No browser, no rendering wait. Pure HTTP calls to the same internal API the Booking.com frontend uses.

🎯 Who uses this Booking Reviews Scraper

  • Hotel operators & revenue managers monitoring guest feedback across their own properties and reacting to recurring complaints before they hit occupancy.
  • Market researchers & hospitality analysts studying guest sentiment, category-score trends, or seasonal patterns across a city or hotel chain.
  • Competitor analysis teams benchmarking review scores and category ratings against rival properties to spot where they're losing on cleanliness, location, or service.
  • Data teams running sentiment analysis feeding positive/negative review text straight into NLP pipelines for topic and trend detection.
  • Reputation monitoring tools tracking new reviews and hotel replies over time to measure response rate and tone.

🧾 What you get, per review

  • Review content: title, positive text, negative text, overall score, approval status
  • Guest info: username, guest type, review count, country, avatar, anonymity flag, join date
  • Stay details: room type, check-in/check-out dates, customer type, stay status
  • Hotel reply: reply message, when the hotel responded
  • Hotel-wide ratings: category-by-category score breakdown for the hotel
  • Keyword match: whether and where a search term was found

🔧 Input options

FieldDescription
hotelUrlsOne or more Booking.com hotel page URLs
maxResultsMax reviews to collect per hotel. Leave empty to collect all available
sortSort order: most relevant, newest, oldest, highest or lowest score
langLanguage reviews are auto-translated into (40+ supported)
searchKeywords to tag in reviews, matched against title, positive, and negative text

📊 Data Fields

📝 Review Details

FieldDescription
hotel_urlHotel page URL this review belongs to
hotel_nameName of the hotel
accommodation_typeType of accommodation (hotel, apartment, etc.)
review_scoreReviewer's overall score for this stay
review_approvedWhether the review passed moderation
review_titleReview headline
review_positive_textPositive part of the review
review_negative_textNegative part of the review
review_photosPhotos attached to review in max resolution (if available)
review_replyHotel's reply to the review, if any

👤 Guest

FieldDescription
guest_usernameDisplay name of the reviewer
guest_typeType of guest (e.g. couple, solo, family)
guest_reviewsTotal number of reviews written by this guest
guest_countryReviewer's country name
guest_country_codeReviewer's country code
guest_avatarURL of the reviewer's avatar image
guest_anonymousWhether the reviewer chose to stay anonymous
guest_join_dateDate the reviewer joined

🛏️ Stay Details

FieldDescription
booking_roomRoom type booked by the guest
booking_checkinCheck-in date of the stay
booking_checkoutCheck-out date of the stay
booking_customer_typeCustomer type for this booking
booking_stay_statusStatus of the stay (e.g. completed)

⭐ Ratings & Matching

FieldDescription
rating_statisticsHotel-wide rating breakdown by category (cleanliness, comfort, etc.). Same for every review of a given hotel
keyword_matchTrue if search keywords were set and at least one matched this review
matched_keywordsMap of matched keyword to the field it was found in (title, positive, or negative text)

📋 Example output

[
{
"hotel_url": "https://www.booking.com/hotel/cy/flora-apartments.ro.html",
"hotel_name": "Flora Hotel Apartments",
"accommodation_type": "HOTEL",
"review_score": 9.0,
"review_approved": true,
"review_title": "Very enjoyable weekend break at tha Flora Hotel Appts which was very enjoyable.",
"review_positive_text": "This was a short two day break to Protaras for my wife’s birthday.\nMy only slight gripe was the mattresses on the beds.\nI don’t know if they were new but they were very hard.\nWe had two breakfasts and one evening meal which were all delicious\nA special shout out to all the staff who were all brilliant.\nThis was our second short stay at the Flora Hotel Appts and we will definitely be back later in the year.",
"review_negative_text": null,
"review_photos": null,
"review_reply": "Thank you for choosing Flora Hotel Apartments for your wife's birthday getaway! We are thrilled to hear that you enjoyed your stay with us and found the breakfasts and evening meal delicious. Your feedback on the mattresses is greatly appreciated, and we will look into improving this for your next visit. We are grateful for your kind words about our staff; they work hard to ensure our guests have a memorable experience. We can't wait to welcome you back later this year for another enjoyable stay.",
"guest_username": "Brian",
"guest_type": "Couple",
"guest_reviews": 19,
"guest_country": "Cyprus",
"guest_country_code": "cy",
"guest_avatar": "https://xx.bstatic.com/static/img/review/avatars/ava-b.png",
"guest_anonymous": false,
"guest_join_date": "2013-06-03",
"booking_room": "Standard Apartment",
"booking_checkin": "2025-04-04",
"booking_checkout": "2025-04-06",
"booking_customer_type": "COUPLES",
"booking_stay_status": "stayed",
"rating_statistics": {
"hotel_staff": {
"rating_rounded": 9.0,
"rating_orig": 9.00786304473877,
"name_translated": "Staff"
},
"hotel_services": {
"rating_rounded": 7.7,
"rating_orig": 7.72118091583252,
"name_translated": "Facilities"
},
"hotel_clean": {
"rating_rounded": 8.2,
"rating_orig": 8.20839023590088,
"name_translated": "Cleanliness"
},
"hotel_comfort": {
"rating_rounded": 8.1,
"rating_orig": 8.10650062561035,
"name_translated": "Comfort"
},
"hotel_value": {
"rating_rounded": 8.5,
"rating_orig": 8.52496433258057,
"name_translated": "Value for money"
},
"hotel_location": {
"rating_rounded": 9.2,
"rating_orig": 9.24711036682129,
"name_translated": "Location"
},
"hotel_free_wifi": {
"rating_rounded": 8.5,
"rating_orig": 8.51440048217773,
"name_translated": "Free Wifi"
}
},
"keyword_match": false,
"matched_keywords": {}
},
{
"hotel_url": "https://www.booking.com/hotel/cy/flora-apartments.ro.html",
"hotel_name": "Flora Hotel Apartments",
"accommodation_type": "HOTEL",
"review_score": 9.0,
"review_approved": true,
"review_title": null,
"review_positive_text": "Great location, right on top of the northern end of the strip, few minutes walk down to the beach. Room was clean, WiFi was stable, staff were polite and attentive. Would happily stay again if a cheap and cheerful place was needed.",
"review_negative_text": null,
"review_photos": null,
"review_reply": "Thank you for taking the time to share your thoughts! We are thrilled to hear you enjoyed our central location, clean rooms, reliable WiFi, and our attentive staff. It's wonderful to know that you had a pleasant stay with us. We look forward to welcoming you back to Flora Hotel Apartments whenever you need a \"cheap and cheerful\" place in the area. Your kind words mean a lot to us!",
"guest_username": "Mark",
"guest_type": "Family",
"guest_reviews": 14,
"guest_country": "United Kingdom",
"guest_country_code": "gb",
"guest_avatar": "https://graph.facebook.com/v2.9/10157434864745648/picture?type=square&height=64&width=64",
"guest_anonymous": false,
"guest_join_date": "2016-09-30",
"booking_room": "One-Bedroom Apartment",
"booking_checkin": "2025-03-29",
"booking_checkout": "2025-03-30",
"booking_customer_type": "FAMILIES",
"booking_stay_status": "stayed",
"rating_statistics": {
"hotel_staff": {
"rating_rounded": 9.0,
"rating_orig": 9.00786304473877,
"name_translated": "Staff"
},
"hotel_services": {
"rating_rounded": 7.7,
"rating_orig": 7.72118091583252,
"name_translated": "Facilities"
},
"hotel_clean": {
"rating_rounded": 8.2,
"rating_orig": 8.20839023590088,
"name_translated": "Cleanliness"
},
"hotel_comfort": {
"rating_rounded": 8.1,
"rating_orig": 8.10650062561035,
"name_translated": "Comfort"
},
"hotel_value": {
"rating_rounded": 8.5,
"rating_orig": 8.52496433258057,
"name_translated": "Value for money"
},
"hotel_location": {
"rating_rounded": 9.2,
"rating_orig": 9.24711036682129,
"name_translated": "Location"
},
"hotel_free_wifi": {
"rating_rounded": 8.5,
"rating_orig": 8.51440048217773,
"name_translated": "Free Wifi"
}
},
"keyword_match": false,
"matched_keywords": {}
},
{
"hotel_url": "https://www.booking.com/hotel/cy/flora-apartments.ro.html",
"hotel_name": "Flora Hotel Apartments",
"accommodation_type": "HOTEL",
"review_score": 8.0,
"review_approved": true,
"review_title": "Nice option for a short stay",
"review_positive_text": "Friendly staff",
"review_negative_text": "Mattress are very hard",
"review_reply": null,
"guest_username": "Milos",
"guest_type": "Solo traveler",
"guest_reviews": 129,
"guest_country": "United Kingdom",
"guest_country_code": "gb",
"guest_avatar": "https://xx.bstatic.com/static/img/review/avatars/ava-m.png",
"guest_anonymous": false,
"guest_join_date": "2013-03-25",
"booking_room": "One-Bedroom Apartment with Pool View",
"booking_checkin": "2024-09-27",
"booking_checkout": "2024-09-30",
"booking_customer_type": "SOLO_TRAVELLERS",
"booking_stay_status": "stayed",
"rating_statistics": {
"hotel_staff": {
"rating_rounded": 9.0,
"rating_orig": 9.00786304473877,
"name_translated": "Staff"
},
"hotel_services": {
"rating_rounded": 7.7,
"rating_orig": 7.72118091583252,
"name_translated": "Facilities"
},
"hotel_clean": {
"rating_rounded": 8.2,
"rating_orig": 8.20839023590088,
"name_translated": "Cleanliness"
},
"hotel_comfort": {
"rating_rounded": 8.1,
"rating_orig": 8.10650062561035,
"name_translated": "Comfort"
},
"hotel_value": {
"rating_rounded": 8.5,
"rating_orig": 8.52496433258057,
"name_translated": "Value for money"
},
"hotel_location": {
"rating_rounded": 9.2,
"rating_orig": 9.24711036682129,
"name_translated": "Location"
},
"hotel_free_wifi": {
"rating_rounded": 8.5,
"rating_orig": 8.51440048217773,
"name_translated": "Free Wifi"
}
},
"keyword_match": false,
"matched_keywords": {}
}
]

❓ FAQ

How is this different from other Booking.com review scrapers? Most parse the rendered HTML page, which breaks every time Booking.com updates its layout, and most stop cold at Booking.com's WAF challenge. This Booking Reviews Scraper calls the internal API directly and solves the WAF challenge automatically, so it keeps working and keeps returning data.

Does this scraper need an account or API key? No. It extracts publicly available review data.

How many reviews can I extract per hotel? Up to the limit you set in maxResults, or all available reviews if left empty.

Can I filter reviews by keyword? Yes. Set the search field to match against the review title, positive text, and negative text at once.

Does it work without a browser? Yes. It calls the internal review API directly instead of rendering pages in a browser, which makes it faster and cheaper per review than browser-based crawlers.

Can I get reviews in a specific language? Yes. The lang field matches Booking.com's own review auto-translation options.

Is this legal? Can I scrape publicly available reviews? This tool extracts publicly available review data. You're responsible for complying with the target site's terms of service and applicable data protection laws for your use case.

Can I use this data for competitor analysis or market research? Yes. The hotel-wide rating breakdown and full review text make it suitable for benchmarking competitors, tracking sentiment trends, and building hospitality research datasets.

💳 Pricing

Pay-per-result. You're charged for reviews actually delivered, not for pages fetched or requests made.

⚠️ Notes

  • Free-tier accounts are capped at a small sample size per run. Upgrade to a paid Apify plan for full volume.
  • Data reflects what's publicly listed on Booking.com at the time of the run; the source updates continuously.

🔗 See also

Need a scraper for another platform? Check out: