Booking.com Reviews Scraper - Hotel Guest Reviews and Scores
Pricing
from $0.84 / 1,000 reviews
Booking.com Reviews Scraper - Hotel Guest Reviews and Scores
Booking.com reviews scraper and API alternative: extract hotel guest reviews with score, title, liked and disliked text, review date, stay month, room type, nights, traveller type, reviewer country and the hotel's reply. Sort by newest or score, filter by language and minimum score, no login.
Scrape guest reviews of Booking.com hotels: score, title, liked and disliked text, review date, stay month, room type, nights, traveller type, reviewer country and the hotel's reply. Sort by newest, most relevant or score; filter by language and minimum score. No login.
What it does
- Takes one or more Booking.com hotel page URLs and returns one flat JSON record per guest review.
- Reads the same JSON data the Booking.com hotel page loads for its review panel (no browser, no account).
- Sort order: newest first (default), most relevant, highest score, lowest score or oldest first.
- Filters: review language (two-letter code) and minimum score;
maxItemsapplies per hotel. - Each review is returned once (deduplicated on its Booking.com review id). The same hotel given twice under different URLs is scraped once.
- Reviewer names are pseudonymised (first name and last-name initial; Booking.com mostly shows first names only).
Typical uses: hotel reputation monitoring, competitor benchmarking, guest sentiment analysis, collecting hotel replies, travel research datasets.
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
hotelUrls | array of strings | Yes | — | Booking.com hotel page URLs, e.g. https://www.booking.com/hotel/fr/hilton-paris-opera.html. Language suffixes and query parameters are ignored. |
sortBy | string | No | newest | newest, most_relevant, highest, lowest or oldest. |
language | string | No | all | Only reviews written in this language (en, fr, de, es, it, ja...). all for every language. |
minScore | integer | No | — | Only reviews with a score (1-10) greater than or equal to this value. |
maxItems | integer | No | 50 | Maximum number of reviews per hotel (up to 10,000). |
Example:
{"hotelUrls": ["https://www.booking.com/hotel/fr/hilton-paris-opera.html"],"sortBy": "newest","language": "en","maxItems": 100}
Output
One dataset item per review. Real example (Hilton Paris Opera, lowest scores first, English):
{"reviewId": "8c7f864b93223f73","hotelId": 54642,"hotelName": "Hilton Paris Opera","hotelUrl": "https://www.booking.com/hotel/fr/hilton-paris-opera.html","score": 1.0,"title": "They support ICE","positiveText": "Nothing","negativeText": "Everything.","reviewDate": "2026-01-13T04:59:20+00:00","stayDate": "2025-12","roomType": "Deluxe Room","nights": 4,"travelerType": "Couple","reviewerCountry": "Australia","reviewer": "Felicity","language": "en","hotelReply": "Dear Felicity,\nWe truly appreciate your open and honest feedback about your experience at our hotel, and we would like to sincerely apologize for having disappointed you.\n...","helpfulVotes": 0,"scrapedAt": "2026-10-28T06:41:13+00:00"}
| Field | Description |
|---|---|
reviewId | Booking.com review id (stable, unique) |
hotelId, hotelName, hotelUrl | Reviewed property |
score | Review score, 1 to 10 |
title, positiveText, negativeText | Review title, "liked" and "disliked" texts as written by the guest (not translated); null when the guest left them empty |
reviewDate | Date the review was written (ISO 8601, UTC) |
stayDate | Month of check-in (YYYY-MM) |
roomType, nights | Room booked and number of nights |
travelerType | Couple, Family, Group, Solo traveller, Business traveller |
reviewerCountry | Country of the reviewer |
reviewer | Pseudonymised name, or Anonymous |
language | Two-letter code of the review language; null when Booking.com does not identify it |
hotelReply | The property's public reply, if any |
helpfulVotes | Number of "helpful" votes, when Booking.com provides it |
scrapedAt | Extraction time (UTC) |
Pricing
Pay-per-event, no start fee: $1.40 per 1,000 reviews on the Apify Free plan, lower on paid plans.
| Event | Free | Starter | Scale | Business | Enterprise |
|---|---|---|---|---|---|
REVIEW | $1.40 | $1.20 | $1.00 | $0.84 | $0.84 |
Prices in USD per 1,000 reviews. Only reviews written to the dataset are charged; failed requests and filtered-out reviews are not. The run stops cleanly when the "maximum cost per run" you set is reached.
Limitations
- Input must be hotel page URLs (
/hotel/<country>/<name>.html). Search result pages, city pages and short links (booking.com/Share-...) are not accepted. - Booking.com serves reviews 25 at a time, so large hotels (thousands of reviews) take one request per 25 reviews.
- Review texts are returned in their original language; Booking.com's machine translations are not included.
- The "most relevant" order is computed by Booking.com and shifts slightly between pages; the Actor completes it with a newest-first pass so no review is missed, which means the tail of the list is not in relevance order.
languageisnullfor part of the reviews (Booking.com marks them as undetermined); those reviews still appear when you filter by a language if Booking.com counts them in it.- Some properties have a Booking.com page but no reviews yet; the run then ends with an explicit "No reviews found" status.
- Data reflects what Booking.com publicly shows at run time.