Booking.com Reviews Scraper [π$0.5/1k]
Pricing
from $0.50 / 1,000 results
Booking.com Reviews Scraper [π$0.5/1k]
[$0.5/1k] Scrape Booking.com hotel reviews. Extract review text, ratings, reviewer information, travel type, stay date, languages, likes, management responses, and more.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
Epic Scrapers
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
0
Monthly active users
18 days ago
Last modified
Categories
Share
Booking.com Reviews Scraper: hotel guest reviews with scores, pros and cons, reviewer details and hotel replies
Booking.com Reviews Scraper turns hotel pages into a spreadsheet of guest reviews. Paste hotel URLs or IDs and you get each review's title, pros, cons, score, date, reviewer name and country, travel purpose, the room they stayed in, photos, and the hotel's reply. It is for hotel managers, revenue and reputation teams, travel researchers and anyone running sentiment or topic analysis on guest feedback.
- Pros and cons kept apart.
prosandconsare separate fields, so you can analyze what guests like and what they complain about without splitting text. - Stay and reviewer context. Each review has
travelPurpose,reviewerType,countryCode,nightsStayed,roomNameand the stay dates (checkin,checkout). - Hotel replies included.
hotelierResponseandhotelierResponseDateshow how the property answered. - Optional translation and topic breakdowns. Add a
translationobject (title, pros, cons) to each review, and one extra record per hotel with the total review count, popular topics, reviewer types, languages and time of year. - Pay per result, no login. No Booking.com account, cookies or API key. Export to JSON, CSV, Excel, XML or HTML, or use the Apify API.
Scope: This Actor reads Booking.com reviews. It does not search for hotels or return prices. For other travel sites, see Airbnb Reviews Scraper and Agoda Reviews Scraper.
What can you do with Booking.com Reviews Scraper?
| Goal | How |
|---|---|
| Track guest sentiment | Schedule a run and follow average score and the wording of pros and cons over time. |
| Find recurring complaints | Group the cons text of low score reviews, by roomName or travelPurpose. |
| Review hotel replies | Read hotelierResponse next to the review it answers. |
| Compare with competitors | Run several hotel URLs and compare score and reviewerType across hotelId. |
| Understand who stays | Count reviewerType, countryCode and travelPurpose, or use the reviewerTypes and languages metadata. |
| Analyze reviews in one language | Turn on includeTranslations and read translation.pros and translation.cons. |
| Spot room-level problems | Group reviews by roomId and roomName. |
How it compares
| What you need | Booking.com Reviews Scraper | Manual copy-paste | Generic page scrapers |
|---|---|---|---|
| Pros and cons separated | Yes | By hand | Often one merged text |
| Hotel replies | Included | By hand | Varies |
| Stayed room and dates | Included | By hand | Often missing |
| Translations | Optional, in the same row | Copy into a translator | Rarely |
| Topic breakdown | Optional record per hotel | No | Rarely |
| Price | Pay per result | Your time | Varies |
Quick start
- Click Try for free and sign in to Apify.
- Add one or more Booking.com hotel page URLs to Hotel URLs, such as
https://www.booking.com/hotel/de/riu-plaza-berlin.html. Or add numeric Hotel IDs. - For a first run, keep Reviews per hotel at
20. - Click Start. When the run finishes, open the Output tab and export the data.
{"urls": ["https://www.booking.com/hotel/de/riu-plaza-berlin.html"],"hotelIds": [],"maxReviews": 100,"rowsPerPage": 25,"language": "en-us","includeTranslations": false,"includeTopics": false}
Track Booking.com reviews over time with scheduled runs
Most of the value comes from running the same reviews scrape again and comparing. Apify can run the actor for you on a schedule and send the results wherever you need them.
1. Save your input as a task
Open the actor, set your input, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule.
2. Schedule the task
In Apify Console, go to Schedules, click Create new, choose how often to run (for example daily at 06:00 in your time zone), and add your task. See Schedules and How to create a schedule.
Watch how to schedule an Actor:
Or schedule a saved task:
Common schedules:
| Use case | Frequency | Cron expression |
|---|---|---|
| New review monitoring | Daily | 0 6 * * * |
| Reputation reports | Weekly (Monday) | 0 6 * * 1 |
| Competitor benchmarking | Weekly (Friday) | 0 6 * * 5 |
| Peak season monitoring | Twice a day | 0 6,18 * * * |
3. Send the results to a spreadsheet
Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically:
4. Compare runs
Every review has reviewId, hotelId, date and scrapedAt, so runs are easy to join:
- New reviews:
reviewIds that were not in the previous run. - Score trend: average
scoreperhotelIdover time. - Recurring complaints: common themes in
cons, grouped byhotelIdortravelPurpose. - Reply tracking: reviews where
hotelierResponseis stillnull. - Topic counts:
totalReviewsandtopicsfrom thehotelReviewMetadatarecord whenincludeTopicsis on.
Input reference
| Field | Type | Default | Effect |
|---|---|---|---|
urls | Array of strings | Empty | Booking.com hotel page URLs (booking.com/hotel/...). Each is resolved to a hotel ID. |
hotelIds | Array of strings | Empty | Numeric hotel IDs, used instead of or together with URLs. Provide at least one URL or ID. |
maxReviews | Integer | 20 | Newest reviews saved per hotel. Minimum 1, no upper limit. |
language | String | "en-us" | Locale sent to Booking.com, such as en-us, de, fr, es. Affects localized labels and review text where Booking.com provides it. |
includeTranslations | Boolean | false | Adds a translation object to each review. Extra requests. |
translationLanguage | String | Empty | Target language such as en or de. Empty means the same value as language. |
includeTopics | Boolean | false | Saves one extra hotelReviewMetadata record per hotel. |
rowsPerPage | Integer | 25 | Reviews requested per API call, 1 to 100. |
proxyConfiguration | Object | Empty | Proxy settings. Apify Proxy is recommended for larger runs. One sticky session is used per hotel. |
Several hotels run in one go. A hotel that appears twice, for example once as a URL and once as an ID, is scraped once.
Output
Results go to the run's default dataset. Every item has a recordType: review, hotelReviewMetadata or error.
This is a real review row:
{"recordType": "review","hotelId": "1377073","hotelUrl": "https://www.booking.com/hotel/de/riu-plaza-berlin.html","reviewId": "5315404858","reviewHash": "f6dc775e9904a976","title": "Riu","pros": "It offers good value for money.","cons": "The hotel didn't allow most guests to watch the football final in the guest lounge. They severely limited the number of people allowed in, so the organization was poor and the experience was disappointing.","score": 3.2,"date": "2026-07-21 21:08:24","language": "en-us","countryCode": "ba","travelPurpose": "leisure","helpfulVotes": 0,"reviewerName": "Fejzic","reviewerType": "solo traveller","reviewerAvatar": "https://lh3.googleusercontent.com/a/...","reviewerReviewCount": 0,"nightsStayed": 4,"roomId": 137707325,"roomName": "Family Suite","checkin": "2026-07-17","checkout": "2026-07-21","roomPhotoUrl": "https://cf.bstatic.com/xdata/images/hotel/max500/188927768.jpg?k=...","photos": [],"tags": [],"isIncentivised": false,"hotelierName": "Riu Plaza Berlin","hotelierResponse": null,"hotelierResponseDate": null,"scrapedAt": "2026-07-21T21:55:19.171Z"}
With includeTranslations, a review also has translation with language, provider, title, pros and cons.
With includeTopics, each hotel gets one record before its reviews: recordType: "hotelReviewMetadata", hotelId, hotelUrl, totalReviews, and the lists topics, reviewerTypes, languages and timeOfYear, each entry with id, name and count.
If a URL can't be resolved or a hotel fails, you get a record with recordType: "error", the hotelUrl or hotelId, and an error message. The rest of the run continues.
Notes on fields
scoreis the reviewer's score out of 10, rounded to one decimal.reviewIdandhotelIdare strings.dateis the review time as Booking.com returns it, without a time zone.hotelierResponseDateis an ISO timestamp in UTC.title,pros,cons,reviewerName,reviewerTypeandhotelierResponsearenullwhen empty. A guest who wrote only a positive or only a negative comment has the other fieldnull.checkin,checkout,nightsStayedand the room fields arenullwhen Booking.com does not provide the stay.languageis the language code Booking.com reports for the review.hotelUrlisnullwhen you supplied only a hotel ID.
FAQ
How many reviews can I get?
Set maxReviews as high as you need. The Actor fetches the newest reviews first and pages through them until it reaches your limit or the hotel has no more. It does not know the total in advance unless you turn on includeTopics, which reports totalReviews.
Why did I get fewer reviews than I asked for?
The hotel may have fewer reviews than your limit. Duplicates are removed before saving.
Which URL formats work?
Hotel page URLs like https://www.booking.com/hotel/de/riu-plaza-berlin.html. If Booking.com can't resolve a URL, the Actor tries to match the hotel from the page name. If that fails, you get an error record. Use hotelIds when you already know the ID.
Does language filter reviews?
It sets the locale sent to Booking.com. To read all reviews in one language, turn on includeTranslations and set translationLanguage.
Can I scrape many hotels at once?
Yes. Add as many URLs and IDs as you like. Each hotel uses its own proxy session.
Do I need proxies, a Booking.com account or an API key?
No account, login or key. For larger runs, enable Apify Proxy in proxyConfiguration.
How is this different from Booking.com's official API?
Booking.com's partner APIs require an approved partner account and are meant for properties and affiliates. This Actor returns the public guest reviews shown on hotel pages.
Is it legal to scrape Booking.com reviews?
The Actor collects publicly visible reviews. Reviews include reviewer names and countries, which can be personal data. You are responsible for how you use them, including Booking.com's terms and laws such as GDPR.
Does it return hotel prices or search results?
No. It returns reviews only. Give it hotel page URLs or hotel IDs. For reviews on other travel sites, see Agoda Reviews Scraper and Airbnb Reviews Scraper.
Cost
This Actor uses pay-per-event pricing, with no subscription. Prices depend on your Apify plan.
| Event | Free | Bronze | Silver | Gold and above | Charged when |
|---|---|---|---|---|---|
| Actor start | $0.005 | $0.005 | $0.001 | $0.001 | The run starts (once, per GB of memory). |
| Result (dataset item) | $0.005 | $0.0015 | $0.0012 | $0.0005 | Each item saved to the dataset. |
Every saved item counts as a result, including hotelReviewMetadata and error records. The Pricing tab always shows the current prices. Set a maximum cost per run; the run stops when it is reached.
Support
Report problems or request features in the Issues tab. Include the run ID, the input and what you expected.
Related Actors
- Agoda Reviews Scraper: guest reviews from Agoda.
- Agoda Listing Scraper: Agoda hotel listings and prices.
- Airbnb Reviews Scraper: guest reviews from Airbnb.
- Airbnb Scraper: Airbnb listings and prices.
This Actor is not affiliated with or endorsed by Booking.com. "Booking.com" is a trademark of Booking.com B.V.