Tripadvisor Reviews Scraper: Hotels, Restaurants, Tours avatar

Tripadvisor Reviews Scraper: Hotels, Restaurants, Tours

Pricing

from $0.50 / 1,000 review saveds

Go to Apify Store
Tripadvisor Reviews Scraper: Hotels, Restaurants, Tours

Tripadvisor Reviews Scraper: Hotels, Restaurants, Tours

Scrape Tripadvisor reviews from URLs, place names or whole cities: original text and English translation, rating, dates, trip type, sub-ratings, photos, owner responses and reviewer hometown. Filter by rating, language, traveler type and date, or get only new reviews. $0.50 per 1,000.

Pricing

from $0.50 / 1,000 review saveds

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

Tripadvisor Reviews Scraper: every review of any hotel, restaurant, attraction or tour

Tripadvisor Reviews Scraper exports Tripadvisor reviews to a spreadsheet or your own system. Give it Tripadvisor links, place names such as Bellagio Las Vegas, or whole cities such as Rome, and it returns each review with its full text, rating, dates, traveler type, sub-ratings, photos and the owner's response. Every row also carries the place's rating breakdown, ranking, address, phone and email.

  • No URLs needed. Type a place name or a city. The scraper finds the place, or the top hotels, restaurants, attractions and tours of the city, for you. Links from any Tripadvisor country site work too.
  • The original text, not a translation. Tripadvisor quietly serves its English machine translation in place of the original for many recent reviews, so an Italian review looks like an English one. This scraper returns the text as the reviewer wrote it, in the right language, and puts Tripadvisor's English translation in separate columns.
  • Every review, in every language. Get a place's full history, not only the first pages: all 15,946 reviews of the Bellagio took 75 seconds.
  • Only new reviews. Schedule it and each run returns only the reviews published since the previous run, so you pay only for new data.
  • Filters other scrapers don't have: rating, language, traveler type (business, couples, family, friends, solo), publish date and keywords.
  • $0.50 per 1,000 reviews, platform usage included. No subscription, no start fee, no Tripadvisor account, API key or proxy setup. Export to JSON, CSV, Excel or Google Sheets.

What can you do with Tripadvisor reviews?

GoalHow
Monitor your reputationSchedule your places with Only new reviews and get each new review the day after it's published.
Catch complaints earlyFilter by rating 1 and 2 and send new negative reviews to Slack, email or your helpdesk.
Benchmark competitorsPut your hotel and its competitors in one run and compare rating, subratings and tripType mix per place.
Measure owner responsesUse hasOwnerResponse and ownerResponseDate to compare how often and how fast each place answers.
Sentiment analysis and AICollect thousands of reviews with original text and an English translation, ready for an LLM or an NLP model.
Market research in a destinationEnter a city, pick place types and get reviews of its top places, with ranking, rating breakdown and location.
Find what guests mentionUse Only reviews mentioning with words such as breakfast, noise, parking or wifi.
Build a list of hospitality leadsThe Places view lists each place's name, type, rating, review count, ranking, address, phone, email and Tripadvisor link.

How it compares

What you needTripadvisor Reviews ScraperTypical Tripadvisor review scrapers
InputURLs, place names or whole citiesUsually URLs only
Original text of translated reviewsYes, with the English translation in separate columnsOften the English translation, marked as en
FiltersRating, language, traveler type, publish date, keywordsSome offer rating or language
Repeat runsOnly new reviews since the last runEverything again, paid again
Place data on each rowRating breakdown, ranking, address, coordinates, phone and emailVaries
Price per 1,000 reviews on a free plan$0.50, platform usage includedUp to $5

Quick start

  1. Click Try for free and sign in to Apify. The free plan's monthly credit covers about 10,000 reviews.
  2. Add a place in one of three ways:
    • Tripadvisor URLs: a hotel, restaurant, attraction or tour page, or a city list such as https://www.tripadvisor.com/Restaurants-g187147-Paris_Ile_de_France.html.
    • Place names: for example Louvre Museum Paris. Add the city to get the right place; the log shows what each name matched.
    • Cities: for example Lake Como. Then choose the place types and how many places of each.
  3. For a first run, set Max reviews per place to 20.
  4. Click Start. When the run finishes, open the Output tab and export the data.
{
"searchQueries": ["Bellagio Las Vegas"],
"maxReviewsPerPlace": 20
}

What data can you extract?

Every row is one review, with its place's details attached.

GroupFields
ReviewreviewId, reviewUrl, rating, title, text, language, publishedDate, writtenDate, visitMonth, tripType, helpfulVotes, roomTip
Sub-ratingssubratings, such as Value, Rooms, Location, Cleanliness, Service and Sleep Quality for hotels, or Food, Service, Value and Atmosphere for restaurants
TranslationtranslatedTitle, translatedText (Tripadvisor's English translation), isMachineTranslated
PhotosphotoCount, photos (ID, full-size link, caption)
Owner responsehasOwnerResponse, ownerResponse, ownerResponseDate, ownerResponseAuthor, ownerResponseAuthorRole, ownerResponseLanguage
ReviewerreviewerName, reviewerUsername, reviewerId, reviewerProfileUrl, reviewerLocation (hometown), reviewerAvatarUrl, isReviewerVerified
PlaceplaceId, placeName, placeType, placeUrl, placeRating, placeReviewCount, placeRatingCounts (1★ to 5★), placeRanking, placeRankingOutOf, isPlaceClosed, placeImageUrl
LocationplaceAddress, placePostalCode, placeCity, placeLocation (full region path), placeLatitude, placeLongitude, placePhone, placeEmail
Runinput (the URL, name or city the place came from), scrapedAt

Monitor reviews with scheduled runs

Turn on Only new reviews and run the same input on a schedule. The first run collects reviews as usual. Every later run returns only reviews published since then, and costs nothing when there are none.

1. Save your input as a task

Open the Actor, add your places and filters, turn on Only new reviews, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule. Each task keeps its own memory of seen reviews, so tasks don't affect each other.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run, and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Reply to new reviews quicklyEvery 6 hours0 */6 * * *
Daily reputation reportDaily0 7 * * *
Competitor benchmarkingWeekly (Monday)0 7 * * 1
Monthly review analysis or board reportsMonthly (1st)0 7 1 * *

3. Send new reviews where you work

In the task's Integrations tab, connect Google Sheets, Slack, email, Make, Zapier or n8n, or a webhook to your own system. For example, append every run to a Google Sheet:

Combine Only new reviews with Ratings 1 and 2 to get an alert only when a bad review appears.

Input reference

FieldTypeDefaultEffect
startUrlsArray of stringsEmptyTripadvisor links from any country site. A place page or one of its review pages gives that place. A list such as Hotels-g… gives the top places of that type. Location IDs such as 1890933 work too.
searchQueriesArray of stringsEmptyPlace names. The best match is used.
citiesArray of stringsEmptyCities or regions. The top places of each chosen type are used.
placeTypesArray["hotels", "restaurants", "attractions"]For cities and city URLs: hotels, restaurants, attractions, tours.
maxPlacesPerCityInteger10For cities and city URLs: places of each type, in Tripadvisor's order. Up to 3,000.
maxReviewsPerPlaceInteger100Reviews per place, newest first. 0 means every review.
onlyNewReviewsBooleanfalseReturn only reviews published since the previous run of the same task and filters.
newerThanStringEmptyOnly reviews published after a date (2026-01-31) or within an age (7 days, 3 months, 1 year).
ratingsArrayEmpty (all)Only these ratings: "1" to "5".
languagesArray of stringsEmpty (all)Only reviews written in these languages, such as en, it, fr, de, es, ja, zh.
tripTypesArrayEmpty (all)Only these traveler types: business, couples, family, friends, solo.
keywordsArray of stringsEmpty (all)Only reviews whose title or text (original or translation) contains one of these words or phrases. Not case-sensitive.
includeReviewerDetailsBooleantrueTurn off to leave reviewer name, username, ID, profile, hometown and avatar empty.
loadOriginalTextBooleantrueTurn off to skip loading the original text of translated reviews (see FAQ). Slightly faster.

Ready-to-run examples

Get every review of a place

{
"startUrls": ["https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"],
"maxReviewsPerPlace": 0
}

All reviews in every language, newest first. For the Bellagio that's about 16,000 reviews in a little over a minute, for about $8.

Watch your hotel and its competitors for new reviews

{
"searchQueries": ["Hotel Artemide Rome", "Hotel Quirinale Rome", "The Hive Hotel Rome"],
"maxReviewsPerPlace": 200,
"onlyNewReviews": true
}

Save it as a task and schedule it daily. The first run saves the last 200 reviews of each hotel; later runs save only new ones.

Find complaints across a city's restaurants

{
"cities": ["Genoa, Italy"],
"placeTypes": ["restaurants"],
"maxPlacesPerCity": 50,
"maxReviewsPerPlace": 0,
"ratings": ["1", "2"],
"newerThan": "12 months"
}

Every 1★ and 2★ review of the last year for Genoa's top 50 restaurants. You pay only for the reviews that match.

Research what families say about attractions

{
"cities": ["Orlando, Florida"],
"placeTypes": ["attractions", "tours"],
"maxPlacesPerCity": 20,
"tripTypes": ["family"],
"keywords": ["queue", "line", "wait", "stroller"],
"maxReviewsPerPlace": 0,
"newerThan": "2 years"
}

Collect reviews in one language for a dataset

{
"startUrls": ["https://www.tripadvisor.com/Attraction_Review-g187791-d192285-Reviews-Colosseum-Rome_Lazio.html"],
"languages": ["de", "fr"],
"maxReviewsPerPlace": 2000,
"includeReviewerDetails": false
}

German and French reviews only, without personal data.

Analyze the results with ChatGPT or Claude

Export the dataset as CSV (the Overview view keeps it small) and attach it to a chat with ChatGPT, Claude or another AI assistant. Some prompts to start with:

Find the recurring problems. "These are Tripadvisor reviews of my hotel. Group the complaints in the 1★ to 3★ reviews into themes, count how often each appears per quarter using publishedDate, and quote two short examples per theme."

Compare with competitors. "This file has reviews of several hotels (placeName). For each hotel, compare the average of each sub-rating in subratings, the share of reviews by tripType, and the share of reviews with an owner response. Where are we behind?"

Draft replies. "For each review without an owner response (hasOwnerResponse is false), draft a short, personal reply in the reviewer's language (language) that addresses their specific points."

The dataset is also available through the Apify API and integrations such as Make, Zapier and n8n, so you can feed it into an automated workflow.

Output

Results go to the run's default dataset. Use the views Overview, Ratings & photos, Reviewers or Places, or export everything as JSON, CSV, Excel, XML or HTML.

This is a real row from Trattoria Rosmarino in Genoa, scraped on October 7, 2026. The review was written in Italian; text keeps the original and translatedText has Tripadvisor's English translation:

{
"reviewId": 1079044589,
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187823-d1890933-r1079044589-Trattoria_Rosmarino-Genoa_Italian_Riviera_Liguria.html",
"rating": 5,
"title": "Pansotti da sogno",
"text": "Pensa di aver mangiato uno dei primi più buoni della vita! Provate i pansotti alle noci! È stato tutto perfetto: servizio eccellente (tutti gentilissimi) e veloce, locale intimo e accogliente…",
"language": "it",
"isMachineTranslated": false,
"translatedTitle": "Dreamy pansotti",
"translatedText": "Think you've eaten one of the best first courses of your life! Try the pansotti with walnuts! Everything was perfect: excellent service (everyone very kind) and fast, intimate and welcoming place…",
"publishedDate": "2026-09-23",
"writtenDate": "2026-09-23",
"visitMonth": "2026-09",
"tripType": "Couples",
"helpfulVotes": 0,
"subratings": { "Value": 5, "Service": 5, "Food": 5, "Atmosphere": 5 },
"roomTip": null,
"photoCount": 0,
"photos": [],
"hasOwnerResponse": false,
"ownerResponse": null,
"ownerResponseDate": null,
"ownerResponseAuthor": null,
"ownerResponseAuthorRole": null,
"ownerResponseLanguage": null,
"reviewerName": "adriana b",
"reviewerUsername": "E6801OSadrianab",
"reviewerId": "9A4301E0DF0B96019263704C513FFD98",
"reviewerProfileUrl": "https://www.tripadvisor.com/Profile/E6801OSadrianab",
"reviewerLocation": null,
"reviewerAvatarUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/f0/d5/default-avatar-2020-17.jpg?w=200&h=200&s=1",
"isReviewerVerified": false,
"placeId": 1890933,
"placeName": "Trattoria Rosmarino",
"placeType": "restaurant",
"placeUrl": "https://www.tripadvisor.com/Restaurant_Review-g187823-d1890933-Reviews-Trattoria_Rosmarino-Genoa_Italian_Riviera_Liguria.html",
"placeRating": 4.3,
"placeReviewCount": 3654,
"placeRatingCounts": { "1": 56, "2": 123, "3": 361, "4": 1322, "5": 1792 },
"placeRanking": 97,
"placeRankingOutOf": 2012,
"placeAddress": "Salita del Fondaco 30 Corner Piazza de Ferrari, 16123, Genoa Italy",
"placePostalCode": "16123",
"placeCity": "Genoa",
"placeLocation": "Genoa, Italian Riviera, Liguria, Italy, Europe",
"placeLatitude": 44.40767,
"placeLongitude": 8.933493,
"placePhone": "+39 010 251 0475",
"placeEmail": "info@trattoriarosmarino.it",
"placeImageUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/11/87/9e/91/photo2jpg.jpg?w=1200&h=-1&s=1",
"isPlaceClosed": false,
"input": "1890933",
"scrapedAt": "2026-10-07T11:10:26.559Z"
}

An owner response looks like this (Hotel Artemide, Rome, shortened):

{
"hasOwnerResponse": true,
"ownerResponse": "Dear Katie,\n\nThank you for choosing Hotel Artemide for the final evening of your Roman holiday…\n\nFrancesco Tudisco\nHotel Manager\n",
"ownerResponseDate": "2026-09-18",
"ownerResponseAuthorRole": "Direttore generale",
"ownerResponseLanguage": "en"
}

The run's key-value store also has an OUTPUT record with one entry per place: the input it came from, reviews saved, how many had a translation, and a status (ok, partial, failed or stopped-at-charge-limit).

Notes on fields

  • Reviews come newest first, so Max reviews per place 100 gives the 100 most recent reviews.
  • publishedDate is the date shown on Tripadvisor. writtenDate is when the reviewer submitted it, usually the same day or a day or two earlier. visitMonth is the month of the stay or visit, as YYYY-MM.
  • language is always the language the review was written in. Tripadvisor uses zhCN and zhTW for Chinese; the filter value zh matches both.
  • translatedTitle and translatedText are filled only where Tripadvisor has an English translation, which is mostly for recent non-English reviews. Owner responses are never translated.
  • subratings labels depend on the place type and are in English. Many reviews have no sub-ratings, and then it's {}.
  • tripType, visitMonth, roomTip and reviewerLocation are optional on Tripadvisor and are null when the reviewer left them empty.
  • placeRanking and placeRankingOutOf are the place's position among its type in its city, such as #97 of 2,012 restaurants in Genoa.
  • Missing values are null. Every row has scrapedAt in UTC.

FAQ

Which places are supported?

Hotels, restaurants, attractions, and tours and activities, on any Tripadvisor country site (.com, .co.uk, .it, .de, .fr and others). Vacation rentals, cruises, flights and forum posts aren't supported.

Why do I need "Load original text of translated reviews"?

Tripadvisor serves its English machine translation in place of the original for many recent non-English reviews. With the option on (the default), the scraper loads the original with one extra request per page, so title and text are always as written and the translation is in translatedTitle and translatedText. Turn it off for slightly faster runs when you only need English: translated reviews then keep only the English text, marked isMachineTranslated: true, and language still shows the original language.

How does "Only new reviews" work?

After a complete run, the scraper remembers the newest review of each place in a key-value store named tripadvisor-reviews-scraper-state in your account. The next run of the same task with the same filters stops when it reaches reviews it has seen. It also checks the previous 45 days again, because Tripadvisor sometimes publishes a review days after it was written, so late reviews aren't missed and none are saved twice. To start over, delete that key-value store or change the filters.

How fast is it?

There's no browser, so it's fast: 11 places × 50 reviews took 11 seconds, and the 15,946 reviews of the Bellagio took 75 seconds. A date filter (newerThan) or Only new reviews stops early, because reviews come newest first. Rating, language, traveler type and keyword filters have to read through all of a place's reviews, so on very large places they take longer, but you still pay only for matching reviews.

Why did I get fewer reviews than the place shows?

Your filters or limit removed them, or the place has fewer reviews in Tripadvisor's list than in its counter (for example after removals). The OUTPUT record and the log show how many reviews each place gave. If a place name matched the wrong place, add the city to the name, or use the place's URL.

Why did my run stop before reaching my limit?

If the log says the charge limit was reached, the run hit its maximum cost or your account's spending limit. Everything saved before that is in the dataset. Raise the limit in the run options to collect more.

Do I need proxies, a Tripadvisor account or an API key?

No. The scraper handles connections and retries itself, doesn't log in and doesn't use your Tripadvisor account.

Can I use it through the API or from AI agents?

Yes. Start runs and read results through the Apify API, the Apify clients for JavaScript and Python, or the Apify MCP server, which lets AI agents such as Claude call the scraper as a tool.

The scraper collects publicly visible reviews. Reviews can contain personal data, which is protected by the GDPR in the EU and by similar laws elsewhere. Only collect personal data if you have a legitimate reason, and turn off Include reviewer details if you don't need it. Check with a lawyer if you're unsure, and read Apify's blog post on the legality of web scraping.

Cost

This Actor uses pay-per-event pricing. You pay only for reviews saved, with platform usage included and no start fee:

EventPricePer 1,000Charged when
Review saved$0.0005$0.50A review is saved to the dataset.

Looking up places, listing a city's places, and reviews skipped by your filters or already seen are free.

Example runs:

RunReviewsCost
100 latest reviews of one hotel100$0.05
Top 20 restaurants of a city × 100 reviews2,000$1
Every review of the Bellagio15,946~$8
Daily "only new" run for 50 places that get 2 new reviews a day each~3,000 / month~$1.50 / month

Apify's free plan includes $5 of credit each month, enough for about 10,000 reviews. Set a maximum cost per run and the scraper stops exactly at your limit. The Pricing tab always shows the current prices.

Support

Report problems or request features in the Issues tab. Include the run ID, the input and what you expected. We read every issue.

This Actor is not affiliated with or endorsed by Tripadvisor LLC. "Tripadvisor" is a trademark of Tripadvisor LLC.