TripAdvisor Reviews Scraper avatar

TripAdvisor Reviews Scraper

Pricing

from $0.40 / 1,000 results

Go to Apify Store
TripAdvisor Reviews Scraper

TripAdvisor Reviews Scraper

Pull every traveller review for a TripAdvisor hotel, restaurant, or attraction — title, full text, rating, trip date, trip type, owner response. Designed for reputation analytics, sentiment scoring, and AI travel corpora.

Pricing

from $0.40 / 1,000 results

Rating

0.0

(0)

Developer

Xtractoo

Xtractoo

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

5 days ago

Last modified

Share

Pull every traveller review for a TripAdvisor hotel, restaurant, or attraction — title, full text, star rating, trip date, trip type, owner response — into clean structured JSON.

Whether you run a hotel and want to track guest sentiment, build a "what guests are saying" widget for your travel site, or compile a high-quality review corpus for AI / sentiment models, this actor delivers the reviews without managing scrapers, browsers, or CAPTCHAs.


What you can do with it

  • Reputation analytics — monitor your property's rating distribution, review velocity, and themes over time.
  • Competitive benchmarking — pull every review for a rival's listing and compare side-by-side.
  • Owner-response audits — see how often the property responds and how guests react.
  • Sentiment / topic modelling — feed thousands of real reviews into your NLP pipeline.
  • Travel content & comparison sites — surface real guest quotes on your pages, with proper attribution.
  • Lead generation — find under-served properties that don't respond to negative reviews.

Why use this actor

  • No TripAdvisor login required — runs entirely on public data.
  • No CAPTCHAs to solve — automatic retry across residential exit IPs.
  • Hotels, restaurants, and attractions — one schema for all three entity types.
  • Owner responses preserved — included by default; toggle off if you don't need them.
  • Language filter — restrict to English / Spanish / Indonesian / any 2-letter language code, or pull all.
  • Stable JSON schema — fixed fields ready to feed straight into your warehouse or notebook.

How it works

  1. You give the actor one or more TripAdvisor URLs (any of Hotel_Review-, Restaurant_Review-, or Attraction_Review-).
  2. For each URL, the actor walks the paginated reviews — 10 reviews per page — until your max_reviews_per_place cap is hit or all reviews are exhausted.
  3. Each review is normalized to one row in the dataset with consistent fields.

Pagination, retries, and proxy rotation are handled automatically.


Input

{
"place_urls": [
"https://www.tripadvisor.com/Hotel_Review-g297700-d502077-Reviews-Grand_Mercure_Bali_Seminyak-Seminyak_Kuta_District_Bali.html"
],
"max_reviews_per_place": 100,
"language": "en",
"include_owner_responses": true,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeRequiredDescription
place_urlsstring[]yesTripAdvisor Hotel_Review- / Restaurant_Review- / Attraction_Review- URLs
max_reviews_per_placeintegernoCap per place (default 100, max 10000)
languagestringno2-letter language filter (en, fr, id, ...). Leave blank for all languages. Default en.
include_owner_responsesbooleannoInclude owner replies (default true)
max_concurrencyintegernoParallel in-flight requests (1–4, default 1)
proxyobjectnoApify proxy configuration; residential strongly recommended

Sample output

One record per review. Real shape of a single record:

{
"place_url": "https://www.tripadvisor.com/Hotel_Review-g297700-d502077-Reviews-Grand_Mercure_Bali_Seminyak-Seminyak_Kuta_District_Bali.html",
"place_name": "Grand Mercure Bali Seminyak",
"place_rating": 4.8,
"place_review_count": 1726,
"place_type": "Hotel",
"location_id": "502077",
"geo_id": "297700",
"id": "987654321",
"title": "Perfect family stay",
"text": "We spent ten nights here in March. The staff were attentive, the pool spotless, breakfast spread enormous. The kids' club kept our two boys occupied while we relaxed by the infinity pool. Will definitely return.",
"rating": 5,
"published_date": "2025-04-02",
"trip_date": "March 2025",
"trip_type": "FAMILY",
"language": "en",
"author_name": "MartaW123",
"author_location": "Madrid, Spain",
"author_url": "https://www.tripadvisor.com/Profile/MartaW123",
"owner_response": "Dear Marta, thank you so much for your kind words — we are delighted that your family had such a memorable stay and look forward to welcoming you back.",
"owner_response_date": "2025-04-04",
"review_url": "https://www.tripadvisor.com/ShowUserReviews-g297700-d502077-r987654321-Grand_Mercure_Bali_Seminyak.html"
}

Output schema

FieldTypeDescription
place_urlstringInput URL the review came from
place_namestringHotel / restaurant / attraction name
place_ratingnumberOverall TripAdvisor rating for the place (0–5)
place_review_countintegerTotal reviews TripAdvisor lists for the place
place_typestringHotel, Restaurant, TouristAttraction, etc.
location_idstringTripAdvisor's internal d<id>
geo_idstringParent g<id> (city / region)
idstringTripAdvisor review ID
titlestringReview headline
textstringFull review body
ratingnumberReviewer's star rating (1–5)
published_datestringISO date the review was published
trip_datestring"March 2025" — when the trip occurred
trip_typestringFAMILY / COUPLES / BUSINESS / SOLO / FRIENDS
languagestringISO 639-1 code of the original review language
author_namestringReviewer's display name
author_locationstringReviewer's hometown when shown
author_urlstringLink to reviewer's TripAdvisor profile
owner_responsestringProperty owner's reply text (when present)
owner_response_datestringISO date of the owner's reply
review_urlstringCanonical URL of the review

Tips

  • TripAdvisor renders 10 reviews per page; high values for max_reviews_per_place will trigger many requests. For places with thousands of reviews, sharding across multiple actor runs is advisable.
  • Pair with the TripAdvisor Scraper to first discover places in a destination, then feed the resulting url values back into this actor for full review extraction.
  • Language filter is enforced by TripAdvisor server-side via ?filterLang=; if you need every language, leave the field blank.
  • DataDome is aggressive on TripAdvisor — always use the residential proxy default; the actor will retry across up to 5 fresh exit IPs before failing.