Tripadvisor Reviews Scraper - Hotels, Restaurants, Attractions avatar

Tripadvisor Reviews Scraper - Hotels, Restaurants, Attractions

Pricing

from $0.99 / 1,000 reviews

Go to Apify Store
Tripadvisor Reviews Scraper - Hotels, Restaurants, Attractions

Tripadvisor Reviews Scraper - Hotels, Restaurants, Attractions

Extract every review from Tripadvisor hotels, restaurants and attractions: rating, full text, travel dates, reviewer profile, subratings and owner replies. Filter by rating or language, add a place summary with ranking and rating breakdown. Export to JSON, CSV or Excel.

Pricing

from $0.99 / 1,000 reviews

Rating

0.0

(0)

Developer

ClearPath

ClearPath

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Tripadvisor Reviews Scraper | Hotels, Restaurants & Attractions (2026)

All Tripadvisor reviews. 5,000 in under 30 seconds. Reviewer history. Category scores. Owner replies.

From Clearpath, creators of Booking.com Reviews, Expedia Hotels and Hotel Review Aggregator. The same team behind your hotel and review research tools.

Why choose this actor?

All available reviews. Thousands in seconds. Collect 5,000 Tripadvisor reviews in under 30 seconds, with no fixed review-count cap. Go through the full public history of hotels, restaurants and attractions, across up to 200 places per run.

Know who wrote it, what they scored and how the owner replied. Get full review text, travel dates, helpful votes and category scores such as rooms and service. Reviewer profiles include location and past contribution counts for hotels, restaurants, attractions and photos. Owner replies include the response, responder and role, where published.

Compare places with a scorecard included. Overall ratings, one-to-five-star breakdowns, rankings, amenities and cuisine go into a separate summary dataset at no extra collection charge. Filter reviews by star rating or language to focus on complaints, praise or a particular market.

Collect Tripadvisor reviews

Quick start

Start with 25 reviews. Replace the link with a Tripadvisor hotel, restaurant or attraction URL, or enter a place name and city.

{
"places": [
"https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html"
],
"maxReviewsPerPlace": 25,
"includeSummary": true
}

Want all reviews? Set maxReviewsPerPlace to 0 to collect every available review matching your filters, within your run spending limit. Open actor input to choose your places. Export CSV or Excel for analysis, or JSON to preserve reviewer profiles, category scores and owner replies.

Clearpath · Travel & Review Research
 Tripadvisor
You are here
 Booking.com
Guest reviews
 Expedia
Hotels & reviews
 Hotel Reviews
5 platforms
 Place Reviews
Cross-site reviews

Copy to your AI assistant

clearpath/tripadvisor-reviews-scraper on Apify. Every public Tripadvisor hotel, restaurant and attraction review: rating, text, reviewer, subratings, owner replies. Call ApifyClient("TOKEN").actor("clearpath/tripadvisor-reviews-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Provide places as Tripadvisor URLs or place names. Full spec: GET https://api.apify.com/v2/acts/clearpath~tripadvisor-reviews-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

Key Features

  • Complete review records: rating, title, full text, publish date, travel date, language, helpful votes, reviewer profile, and review URL
  • Hotels, restaurants, and attractions: mix up to 200 Tripadvisor URLs or place names in one run
  • Focused review collection: filter by star rating or review language, then set a limit per place or collect all available reviews
  • Free place summaries: overall rating, ranking, rating histogram, address, coordinates, price level, cuisine, amenities, and review totals in a separate dataset

How to Scrape Tripadvisor Reviews

Basic: reviews from one hotel

{
"places": [
"https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html"
],
"maxReviewsPerPlace": 100
}

Find a place by name

Add the city or region to make the match unambiguous.

{
"places": [
"The Ritz London",
"Ostra Boston"
],
"maxReviewsPerPlace": 250,
"includeSummary": true
}

Collect low-rating reviews in English

{
"places": [
"https://www.tripadvisor.com/Hotel_Review-g60763-d675616-Reviews-The_Plaza_New_York-New_York_City_New_York.html"
],
"maxReviewsPerPlace": 1000,
"rating": "1",
"reviewLanguage": "en"
}

Set maxReviewsPerPlace to 0 to collect every available review that matches your filters.

Find place candidates before collecting reviews

Set mode to discover to inspect possible places without collecting reviews:

{
"mode": "discover",
"places": [
"Kaffeine London"
],
"maxCandidates": 10
}

maxCandidates defaults to 10 and accepts 1–20. It is a maximum, not a guarantee. Use a Tripadvisor place link or a numeric location ID to get details for that place. A search result may have no place URL; its location ID can be used for this detail lookup.

Candidates go to a separate candidates dataset. Its ID is in OUTPUT.candidateDatasetId. The default review dataset stays empty, and no review charges apply. Review limits, sorting and filters do not select candidates; includeSummary does not suppress discovery output.

Every candidate includes inputIndex, query, candidateRank, retrieval (search or details) and observedAt, plus locationId, name, placeUrl when available, kind, address, coordinates, rating and any available phone number or website. Missing fields remain empty. Candidate rank reflects source ordering and is not confirmation that the place matches your intended business.

OUTPUT.queryOutcomes records each query in the deduplicated input list with its status, candidatesReturned and issues. Statuses are pending, running, success, no_candidates, fetch_failed, invalid_input, skipped or interrupted. no_candidates means that this lookup returned none; it does not establish that the business is absent from the service. Completed queries are retained if another query fails. A run fails when every query is unavailable or invalid.

Only hotels, restaurants and attractions are returned. Geographic areas, airlines and bookable activities are excluded. Search can return places outside the requested city, so verify the address before selecting a candidate.

Input Parameters

ParameterTypeDefaultDescription
placesarrayrequiredUp to 200 Tripadvisor place URLs or names. Hotels, restaurants, and attractions can be mixed. Any Tripadvisor country domain works (.com, .co.uk, .de, .fr, and so on).
maxReviewsPerPlaceinteger100Maximum reviews for each place. Use 0 for all available reviews.
ratingstringallReturn reviews with one selected rating from 1 to 5, or all ratings.
reviewLanguagestringall languagesReturn reviews written in one supported language.
includeSummarybooleantrueAdd one free place-level record to the separate summary dataset.
modestringreviewsreviews collects reviews; discover returns place candidates
maxCandidatesinteger10Maximum candidates per discovery search, from 1 to 20
languagestringenLanguage used for place-summary labels. Review text stays in its published language.

The commonly used startUrls field is also accepted when you call the Actor programmatically.

What Data Can You Extract from Tripadvisor?

The default dataset contains one item per review. The locationId field joins every review to its place summary.

Review fields

FieldTypeDescription
locationIdintegerStable Tripadvisor identifier for the reviewed place.
placeNamestring or nullPublic name of the hotel, restaurant, or attraction.
placeKindstring or nullNormalized type: hotel, restaurant, attraction, or geo.
placeUrlstring or nullCanonical Tripadvisor URL for the place.
reviewIdstring or nullStable identifier for deduplication and incremental collection.
ratinginteger or nullReviewer's overall rating from 1 to 5.
titlestring or nullReview headline as published.
textstring or nullFull public review text.
publishedDatestring or nullPublication timestamp provided by Tripadvisor.
publishedPlatformstring or nullPlatform label attached to the review.
travelDatestring or nullMonth of the stay or visit when supplied.
languagestring or nullLanguage code associated with the review.
helpfulVotesinteger or nullNumber of helpful votes visible for the review.
machineTranslatedbooleanWhether the returned text is marked as machine translated.
subratingsarrayNamed category scores such as rooms, service, value, or location.
reviewUrlstring or nullDirect URL for the review.
ownerResponseobject or nullPublic management reply, responder, role, date, and language.
userobjectPublic reviewer profile and contribution counters where available.
scrapedAtstringUTC timestamp for this collection.

The nested user.contributions object separates hotel, restaurant, and attraction review totals. This is useful for reviewer-history analysis without flattening unrelated counts into one number.

Review output example

{
"locationId": 187591,
"placeName": "The Ritz London Hotel",
"placeKind": "hotel",
"placeUrl": "https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html",
"reviewId": "1073664821",
"rating": 5,
"title": "A memorable stay",
"text": "The room was quiet, the service was attentive, and breakfast was excellent.",
"publishedDate": "2026-08-17T10:10:57-04:00",
"publishedPlatform": "Desktop",
"travelDate": "2026-05",
"language": "en",
"helpfulVotes": 3,
"machineTranslated": false,
"subratings": [
{
"name": "Rooms",
"value": 5
},
{
"name": "Service",
"value": 5
},
{
"name": "Location",
"value": 5
}
],
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g186338-d187591-r1073664821-The_Ritz_London_Hotel-London_England.html#review1073664821",
"ownerResponse": {
"text": "Thank you for staying with us. We hope to welcome you back soon.",
"title": "Owner Response",
"responder": "Hotel Manager",
"connection": "General Manager",
"publishedDate": "2026-08-18T05:46:33-04:00",
"language": "en"
},
"user": {
"userId": "traveler-492831",
"username": "london_guest",
"displayName": "Alex",
"location": "Manchester, United Kingdom",
"avatar": "https://media-cdn.tripadvisor.com/media/photo-l/avatar.jpg",
"profileUrl": "https://www.tripadvisor.com/Profile/london_guest",
"joinedDate": "2018-04-11T09:15:00-0400",
"contributions": {
"reviews": 45,
"hotelReviews": 14,
"restaurantReviews": 15,
"attractionReviews": 16,
"photos": 8,
"helpfulVotes": 21
}
},
"scrapedAt": "2026-08-31T08:06:31.819712+00:00"
}

Fields that Tripadvisor does not publish for a review are returned as null or an empty list. This keeps the structure predictable across places.

Place summary output

When includeSummary is enabled, the run creates a separate summary dataset with one row per resolved place.

Summary fields

FieldTypeDescription
locationIdintegerJoin key shared with every review row.
namestring or nullPlace name.
kindstring or nullHotel, restaurant, attraction, or geographic place.
placeUrlstring or nullCanonical Tripadvisor place URL.
ratingnumber or nullCurrent overall place rating.
rankingstring or nullPublic category and destination ranking.
hotelClassnumber or nullHotel class where Tripadvisor publishes it.
priceLevelstring or nullPublic price-band label.
priceRangestring or nullPublished price range where available.
ratingHistogramobject or nullCounts for each rating from one through five.
cuisinearrayCuisine and dietary labels for restaurants.
amenitiesarrayPublicly listed place amenities.
awardsarrayPublic award names.
addressstring or nullFull formatted address.
city, state, countrystring or nullGeographic address components.
postalCodestring or nullPostal code.
latitude, longitudenumber or nullPlace coordinates.
phonestring or nullPublic phone number.
websitestring or nullPublic website URL.
reviewsCountinteger or nullTotal reviews shown for the place.
reviewsMatchingFiltersinteger or nullReviews matching the selected rating and language.
reviewsCapturedintegerReviews delivered during this run.
reviewsPartialbooleanWhether some expected reviews could not be collected.
matchedFromstring or nullWhether the place was resolved from a URL or name.
sourceInputstring or nullOriginal value supplied for the place.
otherMatchesarrayAlternative candidates returned for an ambiguous name.
scrapedAtstringUTC timestamp for this collection.
{
"locationId": 5572598,
"name": "Ostra",
"kind": "restaurant",
"placeUrl": "https://www.tripadvisor.com/Restaurant_Review-g60745-d5572598-Reviews-Ostra-Boston_Massachusetts.html",
"rating": 4.6,
"ranking": "#11 of 3,102 places to eat in Boston",
"hotelClass": null,
"priceLevel": "$$$$",
"priceRange": null,
"ratingHistogram": {
"rating1": 11,
"rating2": 23,
"rating3": 75,
"rating4": 212,
"rating5": 822
},
"cuisine": [
"Italian",
"Seafood",
"Mediterranean"
],
"amenities": [],
"awards": [],
"address": "1 Charles St S, Boston, MA 02116",
"city": "Boston",
"state": "MA",
"country": "United States",
"postalCode": "02116",
"latitude": 42.351173,
"longitude": -71.06732,
"phone": "+1 617-421-1200",
"website": "https://ostraboston.com/",
"reviewsCount": 1143,
"reviewsMatchingFilters": 1143,
"reviewsCaptured": 250,
"reviewsPartial": false,
"matchedFrom": "url",
"sourceInput": "https://www.tripadvisor.com/Restaurant_Review-g60745-d5572598-Reviews-Ostra-Boston.html",
"otherMatches": [],
"scrapedAt": "2026-08-31T08:06:31.899339+00:00"
}

reviewsCount is the place's total review count. reviewsMatchingFilters is the number matching your language and rating filters. reviewsCaptured is the number delivered in this run.

Advanced Tripadvisor Review Collection

Ready-made configurations for reputation monitoring, complaint analysis, portfolio comparisons, and complete review archives.

Monitor several hotels with a consistent sample

{
"places": [
"The Ritz London",
"The Savoy London",
"Claridge's London"
],
"maxReviewsPerPlace": 500,
"reviewLanguage": "en",
"includeSummary": true
}

Build a complaint dataset

Run once for one-star reviews and again for two-star reviews. Keeping each rating in its own dataset makes comparisons simpler.

{
"places": [
"Ostra Boston",
"Mamma Maria Boston"
],
"maxReviewsPerPlace": 0,
"rating": "1",
"reviewLanguage": "en"
}

Collect every available review

{
"places": [
"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
],
"maxReviewsPerPlace": 0,
"includeSummary": true
}

For large runs, results appear progressively in the dataset. Completed batches remain available if a later place cannot be collected.

Matching, Completeness, and Repeat Runs

Prefer URLs for exact identity

A direct place URL identifies one Tripadvisor property. Use URLs for production monitoring, franchise locations, similarly named hotels, and any workflow where a wrong match is more costly than preparing the input list.

Place-name input is convenient during exploration. Include the city, country, neighborhood, or landmark when the name is common. The summary's matchedFrom, sourceInput, and otherMatches fields let you audit how each place was selected.

Understand the three review counts

The summary deliberately keeps three different counters:

  • reviewsCount: all reviews currently shown for the place
  • reviewsMatchingFilters: reviews that match the selected rating and language
  • reviewsCaptured: rows delivered after applying your requested limit and run allowance

These values should not be treated as interchangeable. For example, a hotel may have 8,000 total reviews, 320 one-star English reviews, and 100 captured rows because maxReviewsPerPlace was set to 100.

Build incremental collections

Use reviewId as the durable deduplication key when you run the Actor on a schedule. Save previously seen IDs, append new rows, and update the place summary independently. scrapedAt tells you when a row entered your collection; publishedDate tells you when the reviewer posted it.

Tripadvisor review ordering and totals can change as new feedback is published or existing content is moderated. Do not rely on dataset position as an identifier. Use reviewId and locationId instead.

Detect incomplete collections

Check reviewsPartial in every place summary. A value of false means the requested collection completed without a known gap. A value of true means the delivered reviews remain usable, but the place should be retried before you treat the set as complete.

The run isolates place failures. If one input cannot be collected, successful places remain in storage. The final OUTPUT record reports delivered reviews, resolved places, failed places, budget status, and the summary dataset identifier.

Working with Tripadvisor Review Exports

Use JSON when you need every nested field. CSV and Excel are convenient for rating analysis, but nested owner responses, reviewer contributions, and subratings may be serialized into cells.

For a relational database, a practical model is:

  1. Store place summaries by locationId.
  2. Store reviews by reviewId, with locationId as the foreign key.
  3. Upsert place summaries on each scheduled run.
  4. Insert only unseen reviews, then retain the latest scrapedAt value.

For text analysis, keep language, machineTranslated, rating, and travelDate beside the review text. These fields help separate language effects, score bands, and the date of the actual visit from the later publication date.

For owner-response analysis, treat ownerResponse as optional. A missing object means no public response was available for that review at collection time. When present, compare ownerResponse.publishedDate with the review's publishedDate to measure response time.

Pricing: Pay Per Event

The primary charge is per review. Higher Apify subscription tiers receive lower rates.

Apify planPrice per reviewPrice per 1,000 reviews
Free$0.00199$1.99
Bronze$0.00199$1.99
Silver, Gold, Platinum, Diamond$0.00099$0.99

Each run also has a $0.00005 Actor start charge. Place-summary rows are included and are not charged as reviews.

You pay only for the reviews you collect. Place-summary rows are included at no extra charge, and filtering by rating or language collects fewer reviews, so it costs less.

FAQ

What is Tripadvisor?

Tripadvisor is a travel guidance platform with public reviews for accommodation, restaurants, attractions, and experiences. This Actor focuses on public review and place-summary data for hotels, restaurants, and attractions.

Does Tripadvisor have an API, and why use this Actor instead?

Tripadvisor offers an official Content API, but access is approval-gated, rate-limited, and returns only a few of the most recent reviews per place with a limited set of fields. This Actor needs no application, collects every review at full depth, and returns the complete field set (reviewer profile and contribution counts, per-aspect subratings, owner responses, travel dates), which makes it the practical choice for building a complete Tripadvisor review dataset.

Do I need a Tripadvisor account or cookies?

No account details or cookies are accepted as input. The Actor collects publicly visible review data from the place you provide.

Can I use a place name instead of a URL?

Yes. Add the city or region to improve the match, such as Ostra Boston. A direct Tripadvisor URL is best when several places share the same name.

How many reviews can I collect?

Set maxReviewsPerPlace to any positive limit, or use 0 for all available reviews. The limit applies separately to each place, while your run's charge limit and free-plan allowance still apply globally.

Can I filter reviews by rating?

Yes. Choose one rating from 1 to 5. Run separate collections when you need more than one selected rating but not the full set.

Can I filter reviews by language?

Yes. Choose one of the supported language codes or leave reviewLanguage empty for every available language. Review text stays in the language published for that result.

How fresh is the data?

Each run collects the reviews and place details available at run time. The scrapedAt timestamp records when each result was collected.

What happens when a place name is ambiguous?

The first relevant hotel, restaurant, or attraction is used. The summary row includes otherMatches so you can inspect alternative matches. Use a direct URL when exact identity matters.

Does the dataset preserve input order?

No order is promised when several places are processed together. Results become available as each place completes work. Use locationId, placeName, and sourceInput to group records instead of relying on row position.

What is the difference between the reviews and summary datasets?

The default dataset contains one row per review. The separate summary dataset contains one row per place with ratings, ranking, location, rating distribution, and collection counts. Join them with locationId.

How do I export the data?

Use the run's Storage tab to download JSON, CSV, Excel, XML, or HTML. JSON preserves nested reviewer, owner-response, subrating, and histogram fields most accurately.

Can I combine these results with Booking.com or Yelp reviews?

Yes. Use Booking.com Reviews Scraper for accommodation reviews and Yelp Reviews Scraper for local-business reviews. Their source-specific datasets can be normalized into one downstream schema.

How should I update an existing review database?

Use reviewId to ignore rows you already hold and locationId to update the matching place summary. Keep the newest place-level rating and histogram, since those values change as reviews are added or removed.

What does reviewsPartial mean?

It is a completeness flag for one place. When it is true, the run kept the reviews it successfully collected but detected a gap. Retry that place before using the dataset for a completeness-sensitive archive.

Is it legal to scrape Tripadvisor reviews?

The Actor extracts publicly available data. Reviewer names, profile links, locations, and contribution counts may be personal data. You are responsible for Tripadvisor's terms and applicable privacy law, including GDPR and CCPA.

More Zen Studio & Clearpath review scrapers

🔗 Review aggregators

📍 Individual review sources

Support

Extracts publicly available data. Users must comply with Tripadvisor terms and applicable data protection regulations, including GDPR and CCPA.


Collect Tripadvisor reviews and place summaries in analysis-ready datasets.