Booking.com Review Scraper avatar
Booking.com Review Scraper

Pricing

$2.00 / 1,000 reviews

Go to Store
Booking.com Review Scraper

Booking.com Review Scraper

plowdata/booking-com-review-scraper

Developed by

Frederic

Maintained by Community

🏨 Scrape detailed reviews from hotels, apartments, and other listings on Booking.com — including review text, star ratings, guest details, room info, stay dates, and more. All data is schema-validated and exportable as JSON, CSV, Excel, or HTML for reliable and structured analysis.

0.0 (0)

Pricing

$2.00 / 1,000 reviews

1

Monthly users

1

Last modified

2 days ago

🌐 Booking.com Reviews Scraper

Extract deep insights from Booking.com listings – reviews, scores, guest details, and more, all through a fast and robust API-first architecture 🚀 This scraper is a powerful tool designed to extract detailed reviews from Booking.com listings. You can get reviews from any hotel, apartment, or accommodation listed on booking.com. Just enter one (or many) hotel URLs and click "Save & Start".

Great for:

  • 🧬 Market research & trend analysis
  • 📈 Competitor monitoring
  • 👩‍🏫 Review tracking for your own listings
  • 🤖 Feeding clean review data into your apps or ML models

🔍 What data do you get?

Data typeDescription
User-ReviewTitle, positive & negative text, score, date, upvotes, language, and attached photos
Booking infoRoom type, number of nights, customer type (e.g. family, solo, business)
ReplyHotel reply (if available)
Guest detailsUsername, country, avatar (if not anonymous)

🔋 Why use this scraper?

  • 🔌 Fast: Designed from the ground up to be fast. No browser automation = blazing speed (~30-50 reviews/sec)
  • 🔍 Powerful filters: Sort by score, language, season, customer type & more
  • 🤝 Reliable: Resumes where it left off, deduplicates reviews, handles most errors gracefully
  • ⚙️ Typed output: Schema-validated for consistency & integration ease
  • 🛠️ Debug-friendly: Built-in logs for catching edge cases quickly
  • 🚀 Multi-format export: CSV, JSON, Excel, XML, etc.
  • 🚑 Support: We actively maintain and improve the scraper. Found a bug? Just send logs & inputs.

✏️ Input fields

  • urls (required) – List of Booking.com hotel URLs
  • sort (optional) – Most relevant | Newest | Oldest | Score desc | Score asc
  • maxReviews (optional) – Max number of reviews per hotel (-1 for all)
  • timeOfYear (optional) – ALL, or specific season (Mar-May, Jun-Aug, etc.)
  • scoreRange (optional) – ALL, or by rating bucket (Poor, Good, Wonderful, etc.)
  • languages (optional) – List of review languages to include (e.g. en, de)
  • customerType (optional) – Filter by reviewer group: families, business, solo, etc.

🔧 Output format

You get two datasets:

📃 Reviews Each record includes:

  • Hotel name, hotel ID
  • Score, date, review title + texts
  • Room type, stay duration, customer type
  • Guest info (country, avatar, username)
  • Photos (if available)
  • Hotel reply (if available)

📊 Scores

  • Per-hotel average scores:
  • Category (location, cleanliness, etc.)
  • Display name / translation
  • Value + confidence interval

These are internal Booking.com metrics not always visible in the UI ✨

Reviews

1{
2	"hotelId": 10221458, // Unique? ID of the hotel
3	"hotelName": "Premier Inn Köln City Süd", // Name of the hotel
4	
5    "score": 9, // The score given by the guest
6	"url": "bac28cd69950aefc", // The unique ID of the review
7	"date": "2025-02-23T17:50:44.000Z", // The ISO-date when the review was written
8	"helpfulVotesCount": 0, // The number of upvotes the review received
9	"isApproved": true, // Whether the review was approved by booking.com
10	"title": "A great choice for a stay in Cologne!", // The title of the review
11	"positiveText": "I really enjoyed my ...", // The positive text of the review (cut off here, for brevity, but will be complete in the output)
12	"negativeText": "The only thing missing ...", // The negative text of the review (cut off here, for brevity, but will be complete in the output)
13	"lang": "en", // The original language in which the review was written
14	"roomTypeId": "1022145801",
15	"roomTypeName": "Standard Double Room", // The type of room the guest booked
16	"numNights": 1, // How many nights the guest stayed
17	"stayStatus": "stayed", // Whether the guest stayed at the hotel or if they just planned to
18	"customerType": "Group of friends", // The type of customer, e.g. families, couples, business travellers, etc.
19	"checkinDate": "2025-02-20T00:00:00.000Z", // The date when the guest checked in
20	"checkoutDate": "2025-02-21T00:00:00.000Z", // The date when the guest checked out
21	"partnerReplyText": "", // The review-reply from the hotel, if available
22	"anonymous": false, // Whether the review was written anonymously or not
23	"showCountryFlag": true,
24	"countryCode": "pl", // The country code of the guest
25	"countryName": "Poland", // The country name of the guest
26	"avatarColor": "",
27	"avatarUrl": "https://...", // The URL of the avatar of the guest
28	"username": "Guest", // The username of the guest
29	"photos": [ // The photos attached to the review (if any)
30        {
31            "kind": "PROPERTY", // What the photo is about, e.g. property, room, etc.
32            "urls": [ // The URLs of the photos
33                "https://url-a",
34                "https://url-b",
35                ...
36            ],
37            "id": 464616631, // The ID of the photo
38        },
39		...
40	]
41}

Scores

This dataset contains per-hotel scores, generated internally by booking.com, as such there's only one list of scores per hotel, which contain the following properties:

1{
2	"hotelId": 10221458, // ID of the hotel (same as in the reviews dataset)
3	"hotelName": "Premier Inn Köln City Süd", // Name of the hotel (same as in the reviews dataset)
4
5	"name": "hotel_services", // What the score is about, e.g. hotel_services, location, etc.
6	"translation": "Facilities", // The translation of the score
7	"lowerBound": 6.76627492904663, // The lower bound of the score
8	"higherBound": 9.10307502746582, // The upper bound of the score
9	"value": 8.26360607147217 // The (most likely) average score
10}

👤 Who is it for?

  • 🔬 Data scientists & analysts – For sentiment analysis, trend tracking, and training models
  • 🧱 Researchers – Monitor competitors or markets in bulk
  • 💻 Developers – Integrate clean review data into your systems
  • 💼 Business owners – Keep an eye on customer feedback over time

🚪 Proxy setup

Booking.com blocks shared Apify proxies. Use your own datacenter or residential proxies. Good news: this scraper is optimized to work even with cheap datacenter proxies, thanks to smart cookie handling and retry logic. If you want to use your own, residential, or special proxies, you can do so by changing the proxyConfiguration field in the input.


Built with love ❤️ and way too many late-night debug logs. Have ideas or need help? Let us know!

Pricing

Pricing model

Pay per result 

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for each dataset of 1,000 items in the Actor outputs.

Price per 1,000 items

$2.00