Tripadvisor Reviews Scraper — Hotels & Restaurants avatar

Tripadvisor Reviews Scraper — Hotels & Restaurants

Pricing

Pay per event + usage

Go to Apify Store
Tripadvisor Reviews Scraper — Hotels & Restaurants

Tripadvisor Reviews Scraper — Hotels & Restaurants

Scrape Tripadvisor reviews for hotels, restaurants and attractions by URL or name + city. Ratings, text, reviewer, owner replies. Filters. No login.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

CheapAPI

CheapAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Tripadvisor Reviews Scraper — Hotels, Restaurants & Attractions

Get Tripadvisor reviews for any hotel, restaurant, attraction or vacation rental — by URL or just by name + city — and keep watching them: a date cut-off and "only new reviews since the last run" make scheduled monitoring cheap. Ratings, full review text, dates, reviewer details, photos and owner replies, ready as JSON, CSV or Excel. No login, no browser, no proxies.

Why this Actor

  • $0.40 per 1,000 reviews on the Free, Bronze and Silver plans and $0.29 per 1,000 on Gold and above — 20% below the common $0.50 per 1,000 flat price, 73–92% below the most-used Tripadvisor review Actor on Free–Silver and 68% below it on Gold (see the comparison below). On Platinum and Diamond we are honest: the most-used Actor costs $0.50 / $0.30 per 1,000 there, so on Diamond the price is about the same ($0.29 vs $0.30) and the value is the monitoring, date cut-off, name search and bulk input.
  • No start fee, no monthly rent. You pay for reviews delivered to your dataset. A request that comes back with (almost) nothing — a place with no new reviews, filters that match nothing, a search that finds nothing — costs one small "page-checked" fee instead (see Pricing). Apify platform usage is billed separately by Apify (at the default 256 MB a small run typically uses about $0.001–$0.004).
  • 34 fields per review, including a stable row id: review, reviewer, owner reply, sub-ratings and place context (rating, total reviews, star distribution) in one flat row.
  • Built for monitoring: "Only reviews since" (a date or "30 days") and "Only new reviews since the last run". Reviews older than the cut-off are skipped and never charged, and each place is first checked with one page of 10 reviews, so daily runs stay light.
  • Bulk input: paste URLs, search by name, or point Source dataset ID at the dataset of an earlier run to load hundreds of place links at once.
  • Up to 4,490 reviews per place per run, from any Tripadvisor country site (.com, .co.uk, .de, .fr, .com.tr, …), in 19 dropdown languages plus any other language code.

Compared with alternatives

Cost of a typical run — 1,000 reviews from 10 places given as URLs — on each Apify plan:

OptionFreeBronzeSilverGoldPlatinum / DiamondStart fee per runBuilt-in "only new reviews" monitoring
Most-used Tripadvisor review Actor (~9,900 users)$5.00$1.90$1.50$0.90$0.50 / $0.30$0.00005✗
Popular flat-price review Actor (~1,300 users)$0.50$0.50$0.50$0.50$0.50none✗
Flat-price Actor with start fee (~600 users)$5.01$0.51$0.51$0.51$0.51$0.01✗
This Actor$0.40$0.40$0.40$0.29$0.29none✓

Prices from public Apify Store listings, checked September 2026; user counts are rounded. Totals include each option's start fee and our $0.0001 per-place fee (10 places = $0.001); Apify platform usage is not included for any option (for this Actor it is billed separately by Apify, about $0.001–$0.004 for a small run at the default 256 MB). The flat $0.50 option is the closest in price: we are $0.10 cheaper per 1,000 reviews on Free–Silver and $0.21 cheaper on Gold and above, and you also get the date cut-off, "only new reviews since the last run" (repeats never charged as reviews), name search and bulk input from a dataset. Against the most-used Actor we are much cheaper on Free–Gold, 42% cheaper on Platinum, and about the same price on Diamond ($0.29 vs $0.30 per 1,000) — there the reasons to choose this Actor are the built-in monitoring, cut-off and bulk input, not the price. Gold and above always use economy processing here (results can take up to ~45 minutes). If you search by name instead of pasting URLs, add $0.0022 per place found (e.g. $0.022 for 10 places).

Not included

  • Place coordinates, website and phone number — our Tripadvisor review data does not contain them. For coordinates, websites, phone numbers and Google reviews of the same places, use Google Maps Scraper Plus.
  • Helpful-vote counts of individual reviews — not available in our review data, so they are not guessed.
  • The reviewer's traveler type as a field — it works as a filter (Traveler types), so filter per type if you need it per row.
  • Reviews Tripadvisor hides or removes, and anything behind a login.
  • Place-only listings without reviews (e.g. a list of all hotels in a city with prices) — this Actor delivers reviews; places are only context on each review row.

What data you get

One row per review:

FieldTypeExample
idstring2106fcda0b824c70 (stable hash of place id + review id)
inputstringhttps://www.tripadvisor.com/Hotel_Review-g34345-d224525-…html
searchTermstring | nullOrchid Key Inn, Key West (null for URL and dataset inputs)
placeNamestringOrchid Key Inn
placeUrlstringhttps://www.tripadvisor.com/Hotel_Review-g34345-d224525-…html
placeLocationstring1004 Duval Street, 33040-3126, Key West, Florida, US
placeCategorystring | nullHotel (from name searches)
placePriceLevelstring | null$$ - $$$ (from name searches)
placeRatingnumber4.9
placeReviewsCountnumber3247
placeRatingDistributionobject{"1": 2, "2": 9, "3": 55, "4": 307, "5": 2874}
reviewIdstring1079122546
reviewUrlstringhttps://www.tripadvisor.com/ShowUserReviews-…html
reviewRatingnumber5
reviewTitlestringBeautiful Stay in the Heart of Key West!
reviewTextstringWe had an amazing stay at the Orchid Key Inn…
languagestringen
originalLanguagestringen (differs from language when the review was machine-translated)
publishedDatestring (ISO date)2026-09-24T00:00:00.000Z
dateOfVisitstring (ISO date)2026-09-01T00:00:00.000Z
positionnumber1
reviewerNamestringNeilio T
reviewerProfileUrlstringhttps://www.tripadvisor.com/Profile/GoPlaces723194
reviewerAvatarUrlstringhttps://dynamic-media-cdn.tripadvisor.com/…jpg
reviewerLocationstringKey West, Florida
reviewerReviewsCountnumber4
reviewImagesarray of strings["https://dynamic-media-cdn.tripadvisor.com/…/image.jpg"]
ownerResponseTitlestring | nullResponse from the owner
ownerResponseTextstring | nullThank you for staying with us!
ownerResponseDatestring | null2026-09-25T00:00:00.000Z
ownerResponsesarrayall replies: title, text, language, date
highlightsarraysub-ratings, e.g. [{"feature": "Value", "assessment": "5"}]
requestedLanguagestringen
scrapedAtstring (ISO date)2026-09-29T05:12:40.118Z

The dataset has three ready views in the Console: Reviews, Reviewers and Places. A RUN_SUMMARY record in the run's key-value store lists places and reviews collected, reviews skipped by the cut-off, and which inputs were skipped and why.

How to use

In the Apify Console

  1. Open the Actor and paste one or more Tripadvisor links into Tripadvisor URLs — or type one place name, city per line into Search by name (e.g. Le Jules Verne, Paris, France or Colosseum, Rome, Italy). For many places, enter the dataset ID of an earlier run in Source dataset ID.
  2. Set Max reviews per place (default 100).
  3. Optional: set Only reviews since (e.g. 30 days) or turn on Only new reviews since the last run for monitoring.
  4. Click Start. On the Free, Bronze and Silver plans a normal run usually finishes in 1–3 minutes (fast processing). On Gold, Platinum and Diamond runs always use economy processing, which is what makes the lower price possible, and can take up to ~45 minutes.
  5. Download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the API.

Input JSON

{
"startUrls": [{ "url": "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html" }],
"searchTerms": ["Colosseum, Rome, Italy"],
"maxReviewsPerPlace": 100,
"reviewsSince": "30 days",
"language": "en"
}

Links from any Tripadvisor country site work, including links to later review pages.

API: curl

curl -X POST "https://api.apify.com/v2/acts/cheapapi~tripadvisor-reviews-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"}],"maxReviewsPerPlace":100}'

API: JavaScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('cheapapi/tripadvisor-reviews-scraper').call({
searchTerms: ['Le Jules Verne, Paris, France'],
maxReviewsPerPlace: 200,
onlyNewReviews: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`${items.length} new reviews`, items[0]);

API: Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("cheapapi/tripadvisor-reviews-scraper").call(run_input={
"startUrls": [{"url": "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"}],
"maxReviewsPerPlace": 500,
"reviewsSince": "2026-01-01",
"ratings": ["poor", "terrible"],
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["reviewRating"], review["reviewTitle"])

Use cases

  • Reputation monitoring — schedule a daily run with "Only new reviews since the last run" and send new 1–2 star reviews to Slack or email.
  • Competitor benchmarking — compare ratings, star distributions and complaint themes of the top 20 hotels or restaurants in a city.
  • Sentiment and topic analysis — feed full review text into LLM, NLP or BI pipelines.
  • Owner-reply audits — measure how often and how fast management responds (ownerResponseDate vs publishedDate).
  • Seasonal and audience research — filter by months of visit and traveler type.
  • Lead generation for hospitality vendors — find places with recurring complaints (cleanliness, Wi-Fi, noise).

Advanced options

OptionInput fieldDefaultWhat it does
Source dataset IDsourceDatasetIdemptyPick a dataset from an earlier run (or paste its ID). Every row's url or placeUrl that is a Tripadvisor place link is added to the URLs; each place is collected once. Up to 50,000 rows are read
Only reviews sincereviewsSinceempty (all)Only reviews published on or after a date (2026-09-01) or a period (30 days, 2 weeks, 6 months, 1 year). Older reviews are skipped and not charged
Only new reviews since the last runonlyNewReviewsfalseRemembers the newest review per place and delivers only newer ones next time. The first run starts the watch
Monitoring store namemonitoringStoreNametripadvisor-reviews-monitoringNamed key-value store in your account that holds the watch. Use one name per client or project
RatingsratingsallOnly 5★ / 4★ / 3★ / 2★ / 1★ reviews (excellent, very_good, average, poor, terrible)
Traveler typesvisitTypesallfamilies, couples, solo, business, friends
Months of visitmonthsallOnly visits in the chosen months (january … december)
Review languagelanguageenDropdown: English, German, French, Spanish, Italian, Portuguese, Dutch, Japanese, Chinese (Traditional), Korean, Russian, Swedish, Danish, Norwegian, Polish, Turkish, Greek, Czech, Arabic
Other language codecustomLanguageCodeemptyAny other Tripadvisor language code (e.g. fi, hu, th); replaces "Review language"
Include translated reviewstranslateReviewstrueOn: reviews in other languages are included too, machine-translated when Tripadvisor has a translation (otherwise in the original language; check language). Off: only reviews originally written in the chosen language
Sort reviews bysortReviewsBymost_recentMost recent or most detailed. Always most recent when a cut-off or monitoring is on
City for searchessearchLocationemptySearch all names in one city, so entries can be plain names
Places per searchmaxPlacesPerSearch11–200. 1 = best match only; raise it to cover e.g. pizza, Naples → top 20 places
Include sponsored resultsincludeSponsoredfalseAlso use places shown as ads in the search
Processing speedprocessingSpeedautoFree–Silver plans: Automatic, Fast (usually 1–3 min) or Economy (up to ~45 min, for 200+ reviews per place). Gold and above: always economy (up to ~45 min), whatever is selected. Event prices do not depend on the speed

Example: a weekly watch of negative reviews at the top 10 pizzerias in Naples.

{
"searchTerms": ["pizza"],
"searchLocation": "Naples, Italy",
"maxPlacesPerSearch": 10,
"maxReviewsPerPlace": 200,
"ratings": ["poor", "terrible"],
"onlyNewReviews": true,
"monitoringStoreName": "naples-pizza-watch",
"language": "en",
"translateReviews": true
}

Example: collect reviews for every place in a dataset from an earlier run (for example a Tripadvisor place list, or a previous run of this Actor).

{
"sourceDatasetId": "aBcD1234xYz567890",
"maxReviewsPerPlace": 50,
"reviewsSince": "90 days"
}

Rows whose url / placeUrl is not a Tripadvisor hotel, restaurant, attraction or rental page are ignored and counted in RUN_SUMMARY.sourceDataset.

How monitoring works

  • Reviews are requested newest first. With a cut-off, each place is first checked with one page of 10 reviews; only places where all 10 are new are fetched again up to Max reviews per place.
  • Reviews older than the cut-off, or already delivered in an earlier run, are dropped before they reach your dataset, so you are never charged for them. Checking a place costs us a paid request, so a place with no (or very few) new reviews is charged one "page-checked" fee ($0.0028 on Free–Silver, $0.0015 on Gold+) instead of reviews.
  • The watch is kept per place and per language/filter combination in the named key-value store (records place-d<id>-<hash>). Delete the store to start over.
  • If a run stops at your cost limit, the watch is not moved forward, so the next run still delivers the reviews that did not fit.
  • If a place received more new reviews than Max reviews per place, you get the newest ones and a warning in the log.

Example output

One dataset row for a hotel given as a URL (review text shortened):

{
"id": "2106fcda0b824c70",
"input": "https://www.tripadvisor.com/Hotel_Review-g34345-d224525-Reviews-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
"searchTerm": null,
"placeName": "Orchid Key Inn",
"placeUrl": "https://www.tripadvisor.com/Hotel_Review-g34345-d224525-Reviews-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
"placeLocation": "1004 Duval Street, 33040-3126, Key West, Florida, US",
"placeCategory": null,
"placePriceLevel": null,
"placeRating": 4.9,
"placeReviewsCount": 3247,
"placeRatingDistribution": { "1": 2, "2": 9, "3": 55, "4": 307, "5": 2874 },
"reviewId": "1079122546",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g34345-d224525-r1079122546-Orchid_Key_Inn-Key_West_Florida_Keys_Florida.html",
"reviewRating": 5,
"reviewTitle": "Beautiful Stay in the Heart of Key West!",
"reviewText": "We had an amazing stay at the Orchid Key Inn during our Key West getaway! ...",
"language": "en",
"originalLanguage": "en",
"publishedDate": "2026-09-24T00:00:00.000Z",
"dateOfVisit": "2026-09-01T00:00:00.000Z",
"position": 1,
"reviewerName": "Neilio T",
"reviewerProfileUrl": "https://www.tripadvisor.com/Profile/GoPlaces723194",
"reviewerAvatarUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/eb/e3/default-avatar-2020-59.jpg",
"reviewerLocation": "Key West, Florida",
"reviewerReviewsCount": 4,
"reviewImages": [
"https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/15/image.jpg",
"https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/16/image.jpg",
"https://dynamic-media-cdn.tripadvisor.com/media/v2/photo-o/34/b3/1d/17/image.jpg"
],
"ownerResponseTitle": null,
"ownerResponseText": null,
"ownerResponseDate": null,
"ownerResponses": [],
"highlights": [{ "feature": "Value", "assessment": "5" }, { "feature": "Rooms", "assessment": "5" }],
"requestedLanguage": "en",
"scrapedAt": "2026-09-29T05:12:40.118Z"
}

Pricing

Typical cost: $0.40 per 1,000 reviews on Free–Silver and $0.29 per 1,000 on Gold and above (100 reviews of one place ≈ $0.04); Apify platform usage is billed separately.

Apify Free plan: Apify does not pay developers for usage on its Free plan, so on the Free plan this Actor can be used for up to $0.25 of results per calendar month — enough to try it on a small input. When the allowance is used up, the run ends with a clear message (not an error). Any paid Apify plan removes the limit; prices are the same.

Pay per event — no start fee, no monthly fee, no charge for reviews skipped by a cut-off or already delivered. Prices drop automatically on higher Apify plans. Apify platform usage (compute) is billed separately by Apify (at the default 256 MB a small run typically uses about $0.001–$0.004).

EventFree, Bronze, SilverGold, Platinum, DiamondWhen it is charged
Review$0.40 / 1,000$0.29 / 1,000Per review delivered to your dataset
Place with reviews$0.0001$0.00001Once per place that delivered at least one review
Place found by name search$0.0022$0.00125Once per new place found through "Search by name" (never for URLs or a source dataset)
Page checked without enough results$0.0028$0.0015Only when a request returns too few reviews or places to pay for itself: a place with no new reviews, filters or a cut-off that match nothing, a place with fewer reviews than Max reviews per place, a search that finds nothing, or a request that was sent but not answered. Reviews are fetched in pages of 10; you pay at most one fee per page, and only as many as that request needs

On Gold and above, runs use economy processing, which can take longer (up to ~45 minutes).

Worked examples:

  • Bronze or Silver plan — 1,000 reviews of one hotel (URL) = 1,000 × $0.0004 + $0.0001 = $0.4001 (the same on Free). On Gold: 1,000 × $0.00029 + $0.00001 = $0.29001.
  • Bronze or Silver plan — 100 places from a source dataset, 50 reviews each = 5,000 × $0.0004 + 100 × $0.0001 = $2.01. On Gold: $1.451.
  • Top 10 restaurants found by name, 100 reviews each (Free–Silver) = 1,000 × $0.0004 + 10 × $0.0001 + 10 × $0.0022 = $0.423.
  • Daily monitoring of 20 hotels (Free–Silver), about 3 new reviews per hotel per day: each hotel is checked with one page of 10 reviews; 3 reviews + the place fee ($0.0013) don't cover that page, so one page-checked fee is added = 20 × (3 × $0.0004 + $0.0001 + $0.0028) = $0.082 per run, about $2.46 per month. A day without any new review costs 20 × $0.0028 = $0.056. Hotels with 6 or more new reviews pay no page fee. On Gold: 20 × (3 × $0.00029 + $0.00001 + $0.0015) = $0.0476 per run.
  • A place that has only 4 reviews, Max reviews per place = 100 (Free–Silver, fast): we pay for 10 pages of 10; 4 reviews + place = $0.0017, so 7 page-checked fees are added = $0.0213. Set Max reviews per place close to what you need to avoid this; places found by name search are capped at their real review count automatically.

Set Maximum cost per run in the run options and the Actor stops at your budget.

Integrations

  • Schedules — run daily or weekly with "Only new reviews since the last run" (Console → Schedules, or the API).
  • Webhooks — call your own endpoint when a run succeeds and fetch only the new reviews from its dataset.
  • Make and Zapier — use the Apify apps to run the Actor and push new reviews to Slack, email, a CRM or a helpdesk.
  • Google Sheets — export the dataset with the Google Sheets integration or download it as CSV/Excel.
  • API and MCP — call it from any language through the Apify API (examples above), or let AI agents use it through the Apify MCP server.

FAQ

Is it legal to scrape Tripadvisor reviews? The Actor collects only publicly visible reviews, without logging in. Reviews contain personal data such as reviewer names; you are responsible for using them lawfully (e.g. GDPR, CCPA) and in line with Tripadvisor's terms. Ask a lawyer if you are unsure.

What do I pay besides the event prices? Is there a Free plan limit? Apify platform usage (compute) is billed separately by Apify — at the default 256 MB a small run typically uses about $0.001–$0.004. On the Apify Free plan the Actor can be used for up to $0.25 of results per calendar month, enough to try it: Apify pays developers nothing for Free-plan usage while our data costs are real. A run that reaches the allowance stops cleanly and keeps everything collected so far; the allowance resets on the 1st of the month. Any paid Apify plan has no limit.

Why was I charged a "page-checked" fee? Am I charged for reviews older than the cut-off? Reviews older than the cut-off, or already delivered in an earlier run, are removed before they reach the dataset and are never charged. But every place we check and every name search is a paid request on our side, billed by the number of reviews asked for (pages of 10), even when little comes back. When the delivered reviews (or places found) don't cover that request, the difference is charged as "page-checked" fees: $0.0028 each on Free–Silver, $0.0015 on Gold and above, only as many as needed. Typical causes: Only new reviews with nothing new, filters or a cut-off that match nothing, Max reviews per place far above what the place has (a place with 4 reviews and a limit of 100 costs $0.0213 on Free–Silver), a search that found nothing, or a request that was sent but got no answer. RUN_SUMMARY.pagesChecked shows the count.

How do I monitor a place for new reviews, and how is that different from "Only reviews since"? Turn on Only new reviews since the last run and schedule the Actor. The first run delivers the latest reviews up to your limit; every later run delivers only reviews published since. Use Monitoring store name to keep separate watches. "Only reviews since" is a fixed window (e.g. the last 30 days) and remembers nothing; you can combine both, and the later of the two dates is used.

Why did I get fewer reviews than I asked for? How many can I get per place? Up to 4,490 per place per run. You get fewer when the place has fewer reviews in the chosen language, your filters (ratings, months, traveler types) or cut-off exclude them, "Include translated reviews" is off, or your maximum cost per run was reached. RUN_SUMMARY tells you which inputs were skipped and why. Split very large places into several runs with filters.

How can I control my budget? Set Maximum cost per run in the run options; the Actor stops there, and a monitoring watch continues from that point next time. Max reviews per place also caps each place.

Can I load many places at once? Yes. Put the dataset ID of an earlier run into Source dataset ID. Every row with a Tripadvisor place link in url or placeUrl is used, and duplicates are collected once. You can also paste hundreds of URLs, or upload a text file of links in Tripadvisor URLs.

How do I de-duplicate reviews across runs? Use the id field. It is a hash of the Tripadvisor place id and review id, so the same review always has the same id, whichever language or input you used.

How fresh is the data, and which export formats are supported? Reviews are collected live from Tripadvisor during your run, not from a stored database. Export as JSON, CSV, Excel, XML, HTML table or RSS from the Console or the API.

The name search picked the wrong place, or something doesn't work. What now? Add the country (Paris, France vs Paris, Texas) or paste the Tripadvisor URL instead. For anything else, open an issue on the Actor's Issues tab and include your run link, so we can reproduce the problem.

Limitations

  • Maximum 4,490 reviews per place per run; you never receive (or pay for) more than your limit per place.
  • Published dates have day precision, so the cut-off works per day; reviews from the same day that were already delivered are recognized by their review id.
  • The monitoring watch lives in a named key-value store in your account; deleting it or changing the name starts a new watch.
  • Traveler-type and month filters rely on what reviewers entered on Tripadvisor; reviews without that information are not matched by those filters.
  • City matching for name searches works best with "City, Country". Very small towns may not be recognized — use the URL instead.
  • Sub-ratings (highlights), photos and owner replies are present only when the reviewer / owner provided them. Helpful votes, place coordinates and place websites are not included (see Not included).
  • A source dataset is read up to its first 50,000 rows; your account must be able to access it.

Privacy

Reviews include reviewer names, avatars, profile links and home locations as shown publicly on Tripadvisor. Collect only what you need, store it securely, and honor deletion requests. The Actor does not collect e-mail addresses, private messages or anything behind a login.