Booking Reviews Scraper avatar

Booking Reviews Scraper

Pricing

from $0.60 / 1,000 reviews

Go to Apify Store
Booking Reviews Scraper

Booking Reviews Scraper

Pull reviews from any Booking.com hotel or attraction. Get ratings, full review text, trip details, and replies from the property. Filter by language, score, or traveler type and get it all back as clean data.

Pricing

from $0.60 / 1,000 reviews

Rating

0.0

(0)

Developer

Billy

Billy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Booking.com Reviews Scraper

Pull thousands of public Booking.com reviews from any hotel or attraction page in one run. Just paste the URLs, set your filters, and the actor returns clean, structured review data.

What it does

  • Reads any Booking.com hotel or attraction URL.
  • Fetches public review data and returns a structured dataset ready to export as JSON, CSV or Excel.

Why people use it

  • Track brand sentiment and reputation across thousands of properties.
  • Build review-aggregator features into a travel app.
  • Run academic studies on tourism and guest experience.
  • Spot recurring complaints in your own portfolio of hotels.

Features

  • Two verticals supported: stays (hotels) and attractions.
  • Mix any number of URLs in a single run, both verticals together.
  • Filter by sort order, language, score band, customer type, time of year, free-text search.
  • Per-property review limits to control your run.
  • Privacy-aware output: a single toggle hides reviewer name, country, avatar.
  • Reviews come with rating (normalised to a 0-10 scale), structured sentiment (positive/negative text), photos, partner reply, helpful votes and more.

Example input

{
"property_urls": [
"https://www.booking.com/hotel/fr/select-paris.en-gb.html",
"https://www.booking.com/attractions/fr/prjyfitkuhfz-1-day-disneyland-paris-ticket.en-gb.html"
],
"reviews_limit": 50,
"reviews_sort": "NEWEST_FIRST",
"reviews_language": ["en"],
"reviews_score":"",
"include_personal_data": false
}

Example output

Reviewer fields are nullified by default. Switch on Include personal information to receive them.

{
"review_id": "0c31605c15f5df2d",
"vertical": "stays",
"property_id": "180337",
"property_url": "https://www.booking.com/hotel/fr/select-paris.en-gb.html",
"rating": 9.0,
"rating_raw": 9.0,
"rating_scale_max": 10,
"title": null,
"positive_text": "Personnel adorable, emplacement parfait, calme, très confortable",
"negative_text": null,
"text": null,
"language": "fr",
"created_at": "2026-05-15T05:42:40+00:00",
"posted_on_label": null,
"helpful_votes": 0,
"is_approved": true,
"is_translatable": true,
"has_photos": false,
"photo_urls": [],
"partner_reply": null,
"trip_customer_type": "COUPLES",
"trip_room_name": "Small Double Room with Winter Garden View",
"trip_checkin_date": "2026-05-09",
"trip_checkout_date": "2026-05-14",
"trip_num_nights": 5,
"trip_partner_types": [],
"reviewer_name": null,
"reviewer_country_code": null,
"reviewer_country_name": null,
"reviewer_avatar_url": null,
"reviewer_guest_type": null,
"reviewer_is_anonymous": false,
"scraped_at": "2026-05-15T07:41:41.068940+00:00"
}

With Include personal information switched on, the same record would show:

{
"review_id": "0c31605c15f5df2d",
"vertical": "stays",
"property_id": "180337",
"property_url": "https://www.booking.com/hotel/fr/select-paris.en-gb.html",
"rating": 9.0,
"rating_raw": 9.0,
"rating_scale_max": 10,
"title": null,
"positive_text": "Personnel adorable, emplacement parfait, calme, très confortable",
"negative_text": null,
"text": null,
"language": "fr",
"created_at": "2026-05-15T05:42:40+00:00",
"posted_on_label": null,
"helpful_votes": 0,
"is_approved": true,
"is_translatable": true,
"has_photos": false,
"photo_urls": [],
"partner_reply": null,
"trip_customer_type": "COUPLES",
"trip_room_name": "Small Double Room with Winter Garden View",
"trip_checkin_date": "2026-05-09",
"trip_checkout_date": "2026-05-14",
"trip_num_nights": 5,
"trip_partner_types": [],
"reviewer_name": "Dorothée",
"reviewer_country_code": "ch",
"reviewer_country_name": "Switzerland",
"reviewer_avatar_url": "https://xx.bstatic.com/static/img/review/avatars/ava-d.png",
"reviewer_guest_type": "Couple",
"reviewer_is_anonymous": false,
"scraped_at": "2026-05-15T07:41:41.068940+00:00"
}

Use cases

  • Reputation monitoring for hotel chains.
  • Competitive intelligence on neighbouring properties.
  • Sentiment analysis pipelines feeding into a dashboard.
  • Building a custom review aggregator for a niche destination.
  • Tourism research and academic studies.

Privacy and personal information

Booking.com reviews include the guest first name, country and avatar. By default this actor returns those fields as null. Flip the Include personal information input to true to opt in.

If you do collect personal data, you become a data controller under the GDPR. Make sure you have a lawful basis to process and store it.

Your responsibility

You are responsible for how you use the scraped data. Respect Booking.com's Terms of Service and your local laws on data protection. Do not use the data to spam, defame or otherwise harm reviewers or property owners.

Limitations

  • Cars, flights and taxis do not expose per-product reviews on Booking.com. Those URLs are skipped with a warning.
  • Stays reviews use the positive/negative split (positive_text, negative_text) while attractions use a single text field.
  • Some properties may return few or no reviews depending on Booking.com availability and the filters you selected.
  • The language field uses Booking.com's own codes. You may see codes like xu or el — those are valid Booking.com language identifiers.

Tips

  • Start small. Run with two or three URLs and a low Reviews per property to validate your filter combination.
  • The actor handles pagination automatically.
  • For stays, set a language filter to dramatically reduce noise on multilingual properties.
  • Mixing both vertical types in one run is supported. Cars, flights and taxis do not expose per-product reviews and will be skipped with a warning.

Support

If something looks off, please open an issue on the actor's issues page with:

  • the URL you tried,
  • the input JSON you used,
  • a copy of the run log.

Happy scraping.