Booking.com Reviews Scraper avatar

Booking.com Reviews Scraper

Pricing

$3.75 / 1,000 review scrapeds

Go to Apify Store
Booking.com Reviews Scraper

Booking.com Reviews Scraper

Scrape guest reviews from any Booking.com hotel — liked/disliked text, score, date, room type, length of stay, and the hotel's management responses, which most alternatives skip. Working date filter and full review-feed capture (not just the first ~30). Runs on Apify residential proxies.

Pricing

$3.75 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Agilevendor

Agilevendor

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

12 days ago

Last modified

Share

Scrape all guest reviews from any Booking.com hotel page — liked/disliked text, score, date, room type, length of stay — plus the hotel's management responses, which most alternatives don't return.

Why this scraper

  • Every review, not just the first ~30 — pagination runs to the end of the feed.
  • A date filter that actually works — collect only reviews after (or before) a date, accurately.
  • Management responses included — the hotel's official replies, which most scrapers drop.
  • Rich context on every record — hotel rating with category breakdown (Staff, Cleanliness, Location…), guest avatar, review photos, room ID, and source URL.
  • No blocking to deal with — residential proxies and anti-bot handling are built in and on by default.
  • Lower price — $0.80 per 1,000 reviews.

What it does

  • Full set of reviews. Pagination runs to the end of Booking's review feed, not just the first ~30 reviews. The Actor reads the hotel's total review count up front and collects every available review.
  • Working date filter (cutoffDate). Collect only reviews newer (or older) than a given date — accurately, without over-fetching. Works with date sorting.
  • Management responses (ownerResponse). The hotel's official reply to a review, whenever one exists.
  • Hotel context on every review. Overall hotel rating and label (e.g. 9.4 "Superb"), total review count, and a per-category score breakdown (Staff, Cleanliness, Comfort, Location, Value, Wi-Fi) — alongside the guest avatar, any review photos, and the room ID.
  • Flexible sorting and score filter. Sort by newest, oldest, score, or relevance; keep only the score bands you care about (e.g. superb only, poor only).
  • Reliable by design. Booking's anti-bot protection is handled automatically — residential proxies and session rotation are built in and on by default, so you just get the reviews.

How to use

  1. Open a hotel on Booking.com and copy its page URL from the browser address bar.
  2. Paste one or more such URLs into Booking.com hotel URLs.
  3. Optionally set how many reviews to collect, the sort order, a cutoff date, or a score filter.
  4. Click Start and wait for the run to finish.
  5. Download the results from the Output tab in JSON, CSV, Excel, XML, or HTML.

Input

FieldTypeDescription
startUrlsarrayBooking.com hotel page URLs (required).
maxReviewsPerHotelintegerMax reviews per hotel. 0 — all available (default). Set a number to cap how many you collect (and how much you pay).
sortReviewsByenumnewest / oldest / highest_score / lowest_score / relevance. Default newest.
cutoffDatestringDate boundary. With newest keeps reviews newer than the date; with oldest, older than it. Ignored for other sort orders.
reviewScoresarrayScore bands to keep: ALL, REVIEW_ADJ_SUPERB (9+), REVIEW_ADJ_GOOD (7–8.9), REVIEW_ADJ_AVERAGE_PASSABLE (5–6.9), REVIEW_ADJ_POOR (3–4.9), REVIEW_ADJ_VERY_POOR (below 3). Empty or ALL — all scores.
proxyConfigurationobjectProxy. Defaults to Apify Residential.
customDataobjectArbitrary JSON attached to every output record.

Example input:

{
"startUrls": [
{ "url": "PASTE_BOOKING_HOTEL_URL_HERE" }
],
"maxReviewsPerHotel": 0,
"sortReviewsBy": "newest",
"reviewScores": ["ALL"]
}

Output (per review)

Each collected review is one record in the dataset, including the management response (ownerResponse) when the hotel has replied.

Booking.com reviews output: management responses, hotel rating, room and stay details

Each record also carries hotel-level context — overall rating, rating label, total review count, and a per-category breakdown (Staff, Cleanliness, Location, …) — plus the guest avatar, any photos attached to the review, the room ID, and the source URL.

Example records (real output from The Ritz London):

[
{
"id": "1d2e3a39286aec20",
"hotelId": "gb/the-ritz-london",
"hotelIdNumeric": "280539",
"reviewPage": 1,
"userName": "Colin",
"userLocation": "Ecuador",
"roomInfo": "Junior Suite",
"stayDate": { "checkin": "2026-06-23", "checkout": "2026-06-24" },
"nights": 1,
"reviewDate": 1782332935,
"reviewDateIso": "2026-06-24T20:28:55.000Z",
"reviewTitle": "La gente es igual de simpatica, a pesar de las dificultades de la remodelacion.",
"rating": 9,
"reviewTextParts": {
"Liked": "El Junior Suite es mucho mas grande que antes, aprox 75 m2. El restaurante nuevo esta muy bien."
},
"ownerResponse": "Dear Colin,\n\nThank you for your kind feedback. We hope to welcome you back soon.\n\nBest regards,\nDuty Managers, The Ritz London",
"helpfulVotesCount": 0,
"isApproved": true,
"reviewLanguage": "es",
"guestType": "Couple",
"countryCode": "ec",
"userAvatar": "https://xx.bstatic.com/xdata/images/xphoto/square64/36403125.jpg",
"images": [],
"stayRoomId": 28053908,
"startUrl": "https://www.booking.com/hotel/gb/the-ritz-london.html",
"hotelRating": 9.4,
"hotelRatingLabel": "Superb",
"hotelReviews": 452,
"hotelRatingScores": [
{ "name": "Staff", "codeName": "hotel_staff", "score": 9.6 },
{ "name": "Cleanliness", "codeName": "hotel_clean", "score": 9.7 },
{ "name": "Location", "codeName": "hotel_location", "score": 9.8 },
{ "name": "Value for money", "codeName": "hotel_value", "score": 8.6 }
],
"customData": {}
},
{
"id": "290d91602d68ff44",
"hotelId": "gb/the-ritz-london",
"hotelIdNumeric": "280539",
"reviewPage": 1,
"userName": "Stephen",
"userLocation": "United Kingdom",
"roomInfo": "Deluxe Room",
"stayDate": { "checkin": "2026-04-10", "checkout": "2026-04-11" },
"nights": 1,
"reviewDate": 1781364950,
"reviewDateIso": "2026-06-13T15:35:50.000Z",
"reviewTitle": null,
"rating": 10,
"reviewTextParts": {},
"ownerResponse": null,
"helpfulVotesCount": 0,
"isApproved": true,
"reviewLanguage": "en",
"guestType": "Solo traveller",
"countryCode": "gb",
"userAvatar": "https://xx.bstatic.com/static/img/review/avatars/ava-s.png",
"images": [],
"stayRoomId": 28053902,
"startUrl": "https://www.booking.com/hotel/gb/the-ritz-london.html",
"hotelRating": 9.4,
"hotelRatingLabel": "Superb",
"hotelReviews": 452,
"hotelRatingScores": [
{ "name": "Staff", "codeName": "hotel_staff", "score": 9.6 },
{ "name": "Cleanliness", "codeName": "hotel_clean", "score": 9.7 },
{ "name": "Location", "codeName": "hotel_location", "score": 9.8 },
{ "name": "Value for money", "codeName": "hotel_value", "score": 8.6 }
],
"customData": {}
}
]

Proxy and cost

The Actor is billed pay-per-event: $0.80 per 1,000 reviews collected, and nothing else — no charge for run time or platform usage.

Booking.com blocks datacenter IPs, so the Actor uses residential proxies (Apify Residential by default). Proxy traffic is billed to the account that runs the Actor.

The Actor only reads information that guests have already chosen to publish on Booking.com — review text, score, room type, stay dates, the reviewer's display name, and the management reply. It does not log in, bypass any access restriction, or collect hidden or private data such as email addresses or profile photos. In the United States, courts have held that scraping publicly accessible pages without logging in generally does not break computer-access law (the CFAA), but that is not the whole picture: a site's Terms of Service may still restrict scraping as a matter of contract, copyright can apply to the text of individual reviews, and the rules differ by jurisdiction and by what you do with the results.

A review and its display name can also count as personal data under laws such as the GDPR, even when published publicly. You are responsible for having a lawful basis to collect and use it. The Actor keeps the output to publicly shown, non-identifying fields and does not collect contact details, exact addresses, or profile photos.

This is general information, not legal advice. If you are unsure whether your use case is allowed, check with a lawyer.

Your feedback

This Actor is actively maintained. If you hit a bug, notice a change on Booking.com that breaks the output, or want a new field or option, open an issue on the Issues tab of this Actor — it goes straight to the developer.