Tripadvisor Reviews Scraper avatar

Tripadvisor Reviews Scraper

Pricing

from $0.20 / 1,000 reviews

Go to Apify Store
Tripadvisor Reviews Scraper

Tripadvisor Reviews Scraper

Get Tripadvisor reviews of hotels, restaurants and attractions: stars, title, text, visit date, photos, management response and the place rating. Paste Tripadvisor links. No reviewer names. Only-new-reviews mode for alerts. Pay per review.

Pricing

from $0.20 / 1,000 reviews

Rating

0.0

(0)

Developer

PlainRows

PlainRows

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Get Tripadvisor reviews of hotels, restaurants and attractions: stars, review title and text, visit date, publication date, language, photos and the management response, plus the place's name, address, average rating and review count on every row. Paste Tripadvisor links from tripadvisor.com, .co.uk, .de, .fr or any other Tripadvisor domain.

It calls a commercial data API instead of driving a browser: no proxies, no CAPTCHAs, no Tripadvisor account. Nothing about the reviewer is collected (no name, profile, picture, home town or review count), and the replier's name field is dropped too (a signature inside the response text stays as written): you get the opinion, not the person.

Typical uses

  • Hotel and restaurant reputation monitoring: turn on Only new reviews, schedule a daily run and send new 1- and 2-star reviews to Slack or a spreadsheet: you never get (or pay for) the same review twice.
  • Competitor benchmarking: compare ratings, complaints and response rates of the hotels or restaurants around you.
  • Travel and hospitality research: what guests praise or complain about, by traveler type (families, couples, business) or month of visit.
  • Sentiment analysis and AI summaries: feed clean review text to an LLM, a BI tool or an AI agent (MCP).
  • Agencies: monthly review reports for hospitality clients.

What you get

One row per review:

FieldDescription
inputThe link as you gave it
placeTitle, placeAddress, placeUrlPlace name, address and Tripadvisor page
placeRating, placeReviewsCountThe place's average rating out of 5 and its total number of reviews
reviewId, reviewUrlTripadvisor's review ID (stable: used to keep only new reviews) and a link to the review
rating, title, textStars (1-5), review title and text
language, originalLanguageLanguage of the text you get, and the language it was written in
visitDate, publishedAtMonth of the stay or visit (first day of the month) and publication date (UTC, ISO 8601)
ownerResponse, ownerResponseAtThe management response (text only) and its date
imageUrlsPhotos attached to the review
observedAtWhen the data was fetched (UTC)

Missing values are always null, never guessed. A page that does not exist, has no review or none matching your filters gets one free row with found: false and notFoundReason (the blocks requested for it are still charged, see Pricing).

Input

{
"startUrls": [
"https://www.tripadvisor.com/Hotel_Review-g60763-d23462501-Reviews-Margaritaville_Times_Square-New_York_City_New_York.html"
],
"maxReviewsPerPlace": 100,
"sortBy": "most_recent"
}
  • startUrls: one Tripadvisor link per line, up to 500: hotel (Hotel_Review-…), restaurant (Restaurant_Review-…) or attraction (Attraction_Review-…) pages, on any Tripadvisor domain. Other links are skipped for free and listed in the run summary.
  • maxReviewsPerPlace: 1 to 500 (default 100).
  • sortBy: most_recent (default) or detailed_reviews.
  • ratings, visitTypes, months (optional filters): e.g. ["poor", "terrible"], ["business"], ["july", "august"].
  • translateReviews: off by default (each review in the language it was written in). On: Tripadvisor's machine translation (the target language is chosen by Tripadvisor and not guaranteed). The same place on two Tripadvisor domains is requested once, unless this option is on.
  • onlyNewReviews (optional, monitoring) and monitorName: see below.

Monitor places: get only new reviews

Turn on Only new reviews ("onlyNewReviews": true), keep sortBy: "most_recent" and add an Apify schedule (daily, for example). The first run returns the reviews it finds and remembers their IDs in a key-value store of your own Apify account (default plainrows-tripadvisor-reviews-monitor); each later run returns and bills only reviews it has never delivered. A place with nothing new gets a free row with notFoundReason: "no-new-reviews". The blocks requested are still charged on every check (the data source bills them either way): set maxReviewsPerPlace just above the number of new reviews the place gets between two runs (with some margin for busy days), not lower.

  • The history is kept per Tripadvisor place: the same place on tripadvisor.com and tripadvisor.de shares it.
  • Each run reads only the maxReviewsPerPlace most recent reviews. If more new reviews arrive between two runs than that limit, the older new ones are not read again and are missed. When a check finds a full page of reviews and none of them was delivered before, the run warns you (more than … new reviews since the last run, also counted in placesPossiblyMissingReviews in the run summary): raise maxReviewsPerPlace or run the check more often. When a check reads new reviews that your limit leaves out (reviews are read in blocks of 10, so a limit of 15 reads 20), the run warns too (… new reviews beyond your limit were not delivered this run, counted in reviewsBeyondLimitNotDelivered in the run summary): they come with a later run only if still among the reviews it reads.
  • Use a different monitorName per monitoring task to keep separate histories, or a new name to start over.

Output example

Real row (Margaritaville Resort Times Square, New York, 2026-10-11; text shortened):

{
"input": "https://www.tripadvisor.com/Hotel_Review-g60763-d23462501-Reviews-Margaritaville_Times_Square-New_York_City_New_York.html",
"found": true,
"placeTitle": "Margaritaville Resort Times Square",
"placeAddress": "560 7th Ave, 10018, New York City, New York, US",
"placeUrl": "https://www.tripadvisor.com/Hotel_Review-g60763-d23462501-Reviews-Margaritaville_Times_Square-New_York_City_New_York.html",
"placeRating": 4.5,
"placeReviewsCount": 963,
"reviewId": "1080835550",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g60763-d23462501-r1080835550-Margaritaville_Resort_Times_Square-New_York_City_New_York.html",
"rating": 1,
"title": "Canceled our reservation at 9 a.m. while we were on a plane",
"text": "If I could give zero stars, I would. We made a reservation at Margaritaville Resort Times Square weeks in advance...",
"language": "en",
"originalLanguage": "en",
"visitDate": "2026-10-01",
"publishedAt": "2026-10-07T07:42:43.000Z",
"ownerResponse": "Dear Guest, I'm sorry to hear about your experience...",
"ownerResponseAt": "2026-10-07T15:47:46.000Z",
"imageUrls": [],
"observedAt": "2026-10-11T13:51:56.000Z",
"schemaVersion": "1.0"
}

Pricing

Pay per result, no subscription, no proxy costs. See the Pricing tab for current prices. Three events, nothing else:

  • Review: one per review returned, cheaper on higher Apify plans. Photos, management response and the place's rating are included.
  • Block of 10 reviews requested: reviews are fetched in blocks of 10 per place, and the data source bills us every block requested. So 100 reviews = 10 blocks. A block is charged once Tripadvisor has answered, even if the place has fewer reviews than you asked for (or none matching your filters), or the page is not found. Tip: set maxReviewsPerPlace to what you need to pay for fewer blocks (with Only new reviews, keep it above the number of new reviews expected between two runs).
  • Actor start: a small fixed fee per run, charged by Apify when the run starts.

Example, 100 reviews of one place at free Apify plan prices, run start included: about $0.043, i.e. about $0.0004 per review.

Duplicates and malformed links cost nothing beyond the start fee, and requests Tripadvisor does not answer in time are not charged. A well-formed link to a page that does not exist (a mistyped ID) still costs its blocks when Tripadvisor answers "no review". A review that comes back without its text or date field at all (the data source changed its format) is neither delivered nor charged, and neither are the blocks of a place where no review was readable. The run never spends more than the maximum cost you set.

Free Apify plan: each run returns up to 2 places with up to 50 reviews each, so you can check the output. A paid Apify plan removes these limits.

Use it from code, automations or AI agents

API (one call, results returned directly):

curl -X POST "https://api.apify.com/v2/acts/plainrows~tripadvisor-reviews/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": ["https://www.tripadvisor.com/Hotel_Review-g60763-d23462501-Reviews-Margaritaville_Times_Square-New_York_City_New_York.html"], "maxReviewsPerPlace": 50}'

n8n, Make, Zapier: use the Apify integration, pick plainrows/tripadvisor-reviews, schedule it daily with Only new reviews and post new 1- or 2-star reviews to Slack.

AI agents (MCP): add https://mcp.apify.com?tools=plainrows/tripadvisor-reviews to Claude, Cursor or any MCP client.

See also

What this is not

  • No reviewer names, profiles, pictures, home towns or review counts, and no name of the person who replied (privacy by design, in line with GDPR data minimisation). Review and response texts are delivered as written: they may themselves mention names.
  • Not every review ever written: up to 500 per place and run. Use Only new reviews to build a full history over time.
  • Not a search tool: give the Tripadvisor page of each place.
  • Not affiliated with Tripadvisor.

Run summary

Each run stores a summary in the key-value store (OUTPUT): places submitted and run, blocks charged, how many returned nothing, reviews billed, requests Tripadvisor did not answer, monitored places that probably got more new reviews than maxReviewsPerPlace since the last run (placesPossiblyMissingReviews), new reviews read but left out by that limit (reviewsBeyondLimitNotDelivered), duplicates, reviews dropped because the data source changed its format (reviewsWithChangedFormat) and invalid links (with the reason, e.g. NOT_A_TRIPADVISOR_LINK), and anything skipped because of the free-plan or budget limit.

FAQ

How do I export the reviews of a hotel or restaurant on Tripadvisor? Paste its Tripadvisor link and run: one row per review with stars, title, text, dates, photos and management response.

Which Tripadvisor sites work? tripadvisor.com, .co.uk, .de, .fr, .it, .es, .com.au, .ca and the other Tripadvisor domains.

How many reviews per place? Up to 500 per run. For more history, run on a schedule with Only new reviews.

Does it include reviewer names? No: nothing about the reviewer is collected.

More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

Compared with other APIs: Tripadvisor reviews API

Support

Missing a field or found a bug? Open an issue on this page. Issues are read and answered.