Booking Reviews Scraper
Pricing
from $1.00 / 1,000 results
Booking Reviews Scraper
π¬ Collect Booking.com hotel reviews with flexible filters and automatic pagination.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
API ninja
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
3
Monthly active users
21 hours ago
Last modified
Categories
Share
π¨ What is Booking.com Reviews Scraper?
Booking.com Reviews Scraper collects hotel reviews, guest ratings, property responses, reviewer profiles, and stay details from Booking.com. Add a list of hotel names, property URLs, or hotel IDs, choose how many reviews you want per hotel, and start your run.
Use the results to understand guest feedback, compare hotels, research recurring complaints, or prepare review data for sentiment analysis. Hotels are processed one by one, and pagination runs automatically.
What can you do with this Actor?
- π¬ Collect review titles, positive and negative comments, scores, and review dates.
- π¨ Read property responses alongside the feedback they address.
- π§³ Explore traveler types, guest countries, room types, stay dates, and nights stayed.
- π· Retrieve review photo URLs and reviewer avatars when available.
- π Filter by traveler type, score, language, stay season, keyword, or topic.
- βοΈ Collect the most relevant, newest, oldest, highest-scoring, or lowest-scoring reviews first.
- π¦ Set a review limit per hotel or collect all available matching reviews.
- π Browse three formatted tables while keeping the original review rows intact.
On Apify, you can follow each run in its logs, access results through the API, schedule recurring runs, and connect the data to tools such as Make, Zapier, and Google Sheets through Apify integrations.
π How to scrape Booking.com reviews
- Open the Actor in Apify Console.
- In Hotels to scrape, add one hotel name, Booking.com URL, or hotel ID per list entry. Use a URL or ID when you want a precise property match.
- Set Desired reviews per hotel, or enable Scrape all reviews.
- Optionally select a review order and apply filters.
- Click Start. Follow the Log tab to see the resolved hotel, matching review count, available filters, and page progress.
- Open Output to explore the tables, then export your results or retrieve them through the dataset API.
Start with one hotel and 100 reviews. The three prefilled examples all refer to Hotel AMANO East Side; keep only one of those entries to avoid scraping the same property three times.
βοΈ Input settings
| Input | Default | What it does |
|---|---|---|
query | Required | A list of hotel names, Booking.com URLs, numeric IDs written as strings, or country/slugs such as de/amano-east-side. |
maxReviews | 100 | Maximum unique reviews to save per hotel. Enter a whole number of at least 25. There is no configured upper cap. |
scrapeAll | false | Collect all available matching reviews for each hotel. Overrides maxReviews. |
sortBy | most_relevant | Review order: most_relevant, newest, oldest, highest_score, or lowest_score. |
customerType | All travelers | Filter by families, couples, group_of_friends, solo_travellers, or business_travellers. |
score | All scores | Filter by wonderful (9+), good (7β9), fair (5β7), poor (3β5), or very_poor (1β3). |
language | All languages | Original review language as a lowercase two-letter code, such as en, de, or fr. |
timeOfYear | All seasons | Stay season: mar_may, jun_aug, sep_nov, or dec_feb. |
keyword | No text filter | Search within review text, for example breakfast, parking, or staff. |
topicId | All topics | Select a suggested topic or enter its numeric ID as a string, such as "245" for Breakfast. Available topics vary by hotel. |
locale | en-us | Booking response language code, such as en-us, en-gb, or fr. |
Optional filters can be left blank. Filters apply together and use the same settings for every hotel in your list. Available languages and topic IDs appear in the run logs.
Input example: collect 100 reviews from one hotel
{"query": ["https://www.booking.com/hotel/de/amano-east-side.html"],"maxReviews": 100,"scrapeAll": false,"sortBy": "most_relevant","locale": "en-us"}
You can replace the URL with "Hotel AMANO East Side" or "7559215". Hotel names resolve to the first matching hotel suggestion.
Input example: find recent breakfast feedback
{"query": ["7559215"],"maxReviews": 250,"scrapeAll": false,"sortBy": "newest","customerType": "couples","language": "en","keyword": "breakfast","locale": "en-us"}
To collect all available matches, set scrapeAll to true. The Actor keeps requesting pages until the source returns an empty review list. With a review limit, the final page is trimmed so the saved count does not exceed your requested amount.
π Output and exports
Each dataset item is one original review row. Nested guest and stay objects, original text, photo URLs, and null values are preserved. Response-level metadata, such as pagination and available filter options, is shown in logs and is not added to review rows.
The Output tab offers three views, in this order:
| Table | What you can explore |
|---|---|
| π Complete review details | All 25 review, reviewer, and stay fields in one detailed table. |
| π¬ Reviews | Scores, dates, review text, property responses, guest country, traveler type, room, nights, language, helpful votes, and photos. |
| π§³ Guest & stay details | Reviewer profiles, avatars, stay dates, room identifiers, and approval status. |
Dates, numbers, booleans, and images have appropriate display formats. These views change presentation only; Apify's built-in raw view and the dataset JSON retain the original nested data.
Example Booking.com review
This example is a review row from Hotel AMANO East Side:
{"id": "7581d065a276f330","score": 10,"title": null,"positive": null,"negative": null,"language": "de","date": "2023-11-07","helpful_votes": null,"is_approved": true,"photos": [],"guest": {"name": null,"country_code": "de","country": "Germany","type": "group_of_friends","review_count": 3,"member_since": null,"avatar": null,"is_anonymous": true},"stay": {"checkin": "2023-11-04","checkout": "2023-11-06","nights": 2,"room_id": 755921501,"room_name": "Standard Double Room","status": "stayed"},"owner_reply": null}
Export your dataset in JSON, CSV, or Excel. JSON is useful when you want to retain nested objects and photo arrays; table-oriented exports are useful for spreadsheet analysis. Learn more about Apify datasets and exports.
π° Pricing
This Actor uses pay-per-event pricing, effective October 12, 2026. You pay for saved review rows and Actor starts. Apify platform usage costs for these Actor runs are included; they are not charged separately to you.
| Event | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
Result β each saved review (apify-default-dataset-item) | $10.00 / 1,000 reviews | $1.00 / 1,000 reviews | $1.00 / 1,000 reviews | $1.00 / 1,000 reviews |
Actor Start (apify-actor-start) | $0.01 | $0.01 | $0.01 | $0.01 |
For a single Actor start, the following examples include both the result charge and the $0.01 start charge:
| Reviews saved across all hotels | No discount | Bronze, Silver, or Gold |
|---|---|---|
| 100 | $1.01 | $0.11 |
| 1,000 | $10.01 | $1.01 |
| 5,000 | $50.01 | $5.01 |
The review limit applies separately to each hotel, while result charges cover the total rows saved across the run. For example, collecting 100 reviews from each of 10 hotels produces up to 1,000 billable results. A start charge still applies when no reviews are saved.
Check the Actor's Pricing tab for the current rate applicable to your account. Use a review limit for a predictable maximum result count; Scrape all reviews can collect substantially more rows.
π API, scheduling, and integrations
Run the Actor manually or use the same JSON input through the Apify API. The Actor's API tab provides request examples and client snippets for integrating it into JavaScript or Python workflows.
Save your preferred input as a task and schedule it to collect reviews regularly. You can also connect results to spreadsheets, dashboards, or automation tools using Apify integrations. Each fresh run collects reviews according to its input; it does not automatically filter out reviews saved in earlier runs.
β FAQ and support
Why did I receive fewer reviews than requested?
The limit is a maximum, not a guaranteed count. A hotel may have fewer available reviews, or your filters may narrow the matches. Run timeouts, spending limits, and source availability can also affect how much data is collected. Check the run status and logs, then try fewer filters if needed.
What happens if a hotel name matches the wrong property?
A name uses the first matching hotel suggestion. Use the hotel's Booking.com URL or numeric ID for a precise match, and check the resolved hotel ID in the logs.
Can I enter the same hotel in different formats?
Yes, but each list entry is processed separately. Entering a name, URL, and ID for the same property scrapes it again and can produce repeated rows across those entries. Duplicate review IDs are skipped within each hotel's collection.
Does the language setting translate reviews?
No. language filters reviews by their original language. locale controls the response language, including labels returned by Booking.com. Review text stays as returned by the source.
Why are some fields empty?
Some reviews contain only a score, and anonymous guests may have no name or avatar. Photo lists can be empty, and property responses or helpful-vote counts may be unavailable. These values remain null or empty arrays; the Actor does not fill them with invented content.
How can I tell which hotel a review belongs to?
Rows retain the source review structure, which does not include a top-level hotel ID. The logs identify each hotel as it is processed. Run one hotel at a time if you need a separate dataset for each property.
What should I do if a run fails?
Temporary network failures and rate limits are retried automatically. If the run still fails, inspect its logs. For support, open an issue in the Actor's Issues tab and include the run ID, hotel identifier, and a short description of the problem. A missing API-credential error indicates an Actor configuration issue to report to the maintainer; do not post tokens or credentials in an issue.
π§© Related Actor
Need to discover hotels before collecting their reviews? Try Booking Hotel Scraper, then use the property URLs or hotel IDs in this Actor's hotel list.