Tripadvisor Review Scraper avatar

Tripadvisor Review Scraper

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Tripadvisor Review Scraper

Tripadvisor Review Scraper

Download Tripadvisor reviews for hotels, restaurants and attractions: stars, full text, photos, trip type and owner replies. Filter by rating, language, date. No login needed. Great for reputation tracking and guest feedback.

Pricing

from $0.70 / 1,000 results

Rating

0.0

(0)

Developer

Data WiKi

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

🚀 What is Tripadvisor Review Scraper?

Tripadvisor Review Scraper is an Apify Actor that collects public reviews of Tripadvisor hotels, restaurants, attractions and tours. Each review comes with its stars, title, full text, trip type, photos and owner reply, plus rating and rank details of the place. You paste place links, choose filters and export the results.

  • Many places per run: add as many links or place ids as you like.
  • Live results: every review is saved as soon as it is read, so the Output tab fills while the run is going.
  • Seven tables: reviews, places, reviewers, photos, owner replies, sub-ratings and a status row per input link.
  • Filters: narrow reviews by stars, language, keyword, traveler type, month or date before they are saved.
  • No Tripadvisor account: the Actor reads public pages that any visitor can see.

Click Try for free, paste a place link and press Start.

📊 What data can you extract from Tripadvisor?

The default dataset holds the core tripadvisor review data, one review per row. You can download Tripadvisor reviews as JSON, CSV, Excel, XML or HTML. The example values below are made up for illustration.

FieldDescriptionExample
idTripadvisor review ID900000001
urlLink to the review on Tripadvisorhttps://www.tripadvisor.com/ShowUserReviews-g100000-d1234567-r900000001-Example_Harbour_Hotel-Example_City.html
titleReview titleExample review title
langLanguage the review is shown inen
locationIdTripadvisor ID of the place1234567
publishedDateDate the review was written (YYYY-MM-DD)2026-10-20
ratingStars given, 1 to 52
helpfulVotesHelpful votes the review received0
travelDateMonth or day of the stay or visit2026-09
tripTypeFAMILY, COUPLES, SOLO, BUSINESS or FRIENDS when givenCOUPLES
textFull review textExample review text written for this README. It is not a real review.
originalLanguageLanguage the review was written inen
isMachineTranslatedTrue when Tripadvisor translated the textfalse
subratingsExtra ratings such as Value, Service or Rooms as name/value pairs[{"name": "Service", "value": 2}]
ownerResponseThe owner's reply with text, date, responder and days to respond{"daysToRespond": 2, ...}
hasOwnerResponseTrue when the owner repliedtrue
wordCountWords in the review text13
photoCountReal number of photos on the review1
photosPhoto links, sizes and captions[{"id": 1, "width": 1200, ...}]
reviewerTipTip the reviewer left for other travelersnull
isPinnedFavoriteTrue when the reviewer pinned the reviewfalse
hasTrustSafetyAlertTrue when Tripadvisor flagged the reviewfalse
userReviewer name, username, link, hometown, country and contribution counts{"name": "Example Traveler", ...}
placeInfoPlace details: rating histogram, rank, address, amenities{"name": "Example Harbour Hotel", ...}
scrapedAtWhen the review was read (UTC)2026-10-27T09:00:00Z

Six more tables are filled in the same run. Each one is a separate dataset in the Output tab.

TableOne row perMain fields
Placesplacename, rating, rank, rank category, star counts, address, amenities
Reviewersreview authorname, username, hometown, country, contributions
Photosreview photolink, width, height, caption
Owner repliesowner replyreply text, responder, days to respond
Sub-ratingssub-rating on a reviewname, value
Inputsinput linkstatus, place name, reviews saved, note

The places table adds the star histogram, rank and rank category of each place. The reviewers table holds name, username, hometown and country. The photos table lists photo links, sizes and captions. The owner replies table holds tripadvisor owner responses with the days it took to answer. Together the tables form a tripadvisor reviews dataset that you can filter by place.

💡 Use cases for Tripadvisor data

  • Hotel review analysis: read text, rating and subratings side by side to see what guests praise or criticize. The same rows support guest feedback analysis for one property or a whole city.
  • Reputation monitoring: schedule a weekly run with reviewsSince for online reputation monitoring for hotels. A list of venues works the same way for restaurant reputation monitoring.
  • Alerts on bad reviews: set ratings to 1 and 2 and reviewsSince to a short period to monitor low star reviews. Compare publishedDate with ownerResponse.daysToRespond to track owner response time.
  • Competitor benchmarking: add the links of rival places for competitor hotel review analysis in one run. The places table adds rating, rank and star counts for hotel competitor benchmarking.
  • Tourism research: user.country, user.hometown and user.isDomesticReviewer feed tourism market research. Count them per place for visitor origin analysis.
  • Seasonal patterns: the months and travelerTypes inputs support seasonal review analysis, for example June to August reviews written by families. Group tripType for review analysis by traveler type.
  • Tours, attractions and restaurants: tour pages give you tripType and travelDate for tour operator review analysis. Attraction links work for attraction review analysis. Restaurant links work for restaurant review analysis. Mixing hotels, restaurants and tours in one run supports customer feedback analysis across a portfolio.
  • Complaints and datasets: the keyword input and low star ratings help find recurring complaints in reviews, such as breakfast or noise. Export the clean rows as a review dataset for machine learning. Use the stars and text for hotel review sentiment analysis in your own tool.

🛠️ How to scrape Tripadvisor reviews

  1. Create a free Apify account and open Tripadvisor Review Scraper in Apify Console.
  2. Paste one or more Tripadvisor hotel, restaurant, attraction or tour links into Tripadvisor links. A place id such as d1234567 also works.
  3. Add several links to collect bulk Tripadvisor reviews in one run, and set Max reviews per place (50 by default, 0 for every review) and any filters you need.
  4. Click Start. Every review is saved as soon as it is read, so you can get Tripadvisor reviews in the Output tab while the run is going.
  5. Open the Output tab to browse the tables.
  6. Download the dataset as JSON, CSV, Excel, XML or HTML.

How to get Tripadvisor reviews by rating

Set Star ratings to the stars you want, for example 1 and 2 for complaints. The Actor keeps only reviews with those ratings.

How to get Tripadvisor reviews by language

Pick a code in Review language, such as en or de. Tripadvisor then shows the reviews in that language, and isMachineTranslated and originalLanguage tell you which ones were translated.

How to get Tripadvisor reviews by date

Set Reviews since to a date such as 2025-01-31 or a relative value such as 6 months.

How to get Tripadvisor reviews by keyword

Type a word such as breakfast into Keyword in review to keep only reviews that mention it.

How to get Tripadvisor reviews by month

Choose one or more months in Months written to keep reviews written in those months of any year.

How to get Tripadvisor reviews by traveler type

Pick family, couples, solo, business or friends in Traveller types.

How to export Tripadvisor reviews to Excel

Open the dataset in the Output tab, choose Excel in the export menu and download the file. To export Tripadvisor reviews to CSV, pick CSV in the same menu.

💰 How much does it cost to scrape Tripadvisor?

The Actor uses pay per event. The main_result event is charged once per saved review, and the apify-actor-start event is charged once per run at $0.00005. Apify platform usage (compute) is billed on top of the events above.

Plan tierPrice per reviewPrice per 1,000 reviews
Free$0.001$1.00
Bronze$0.0009$0.90
Silver$0.0008$0.80
Gold, Platinum, Diamond$0.0007$0.70

Example: 1,000 reviews on the Free tier cost 1,000 x $0.001 = $1.00, and 500 reviews on the Gold tier cost 500 x $0.0007 = $0.35, each plus the $0.00005 start event. Only reviews in the default dataset are charged; the other tables are not. Check the Pricing tab for the current rates, and set a maximum spend per run to cap the total. The Actor is configured with 1024 MB of memory.

⬇️ Input

Only Tripadvisor links (urls) is required. The example below reads up to 20 recent one and two star English reviews for one place. Replace the link with your own place; the id in it is a placeholder.

{
"urls": [
"https://www.tripadvisor.com/Hotel_Review-g100000-d1234567-Reviews-Example_Harbour_Hotel-Example_City.html"
],
"maxReviewsPerPlace": 20,
"reviewsSince": "6 months",
"ratings": ["1", "2"],
"language": "en",
"sort": "newest",
"includePlaceInfo": true,
"includeReviewerDetails": true,
"includePhotos": true,
"proxyConfiguration": { "useApifyProxy": false }
}
FieldWhat it does
urls (required)Tripadvisor hotel, restaurant, attraction or tour links, or place ids, one per line.
maxReviewsPerPlaceMost reviews saved for each place. 0 means every review. Default 50.
reviewsSinceOnly reviews written on or after a date (2025-01-31) or a relative value such as 6 months. Empty means no limit.
ratingsKeep only these star ratings ("1" to "5"). Empty means all.
languageall or one language code such as en, fr, de or zh-CN.
sortnewest (default), detailed or insightful.
keywordOnly reviews that mention this text.
travelerTypesfamily, couples, solo, business or friends. Empty means all.
monthsOnly reviews written in these months of any year. Empty means all.
includePlaceInfoAdd the place block to every review row. Default on. The places table is always filled.
includeReviewerDetailsAdd the reviewer block to every review row. Default on.
includePhotosAdd photo links to every review row. Default on.
proxyConfigurationOptional. Leave the default to start without a proxy.

💡 Start with a small maxReviewsPerPlace to check the result before a large run.

💡 Reviewer details are personal data. Switch includeReviewerDetails off when you only need ratings and text.

⚠️ When reviewsSince is combined with a sort other than newest, the Actor reads at most 100 pages of reviews per place before filtering.

⬆️ Output

The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and doesn't show all the fields. You can export the data as JSON, CSV, Excel, XML or HTML. This sample continues from the input above and uses made-up values, not a real review.

{
"id": 900000001,
"url": "https://www.tripadvisor.com/ShowUserReviews-g100000-d1234567-r900000001-Example_Harbour_Hotel-Example_City.html",
"title": "Example review title",
"lang": "en",
"locationId": 1234567,
"publishedDate": "2026-10-20",
"rating": 2,
"helpfulVotes": 0,
"travelDate": "2026-09",
"tripType": "COUPLES",
"text": "Example review text written for this README. It is not a real review.",
"originalLanguage": "en",
"isMachineTranslated": false,
"subratings": [{ "name": "Service", "value": 2 }, { "name": "Value", "value": 3 }],
"ownerResponse": {
"id": 900000002,
"text": "Example reply text.",
"lang": "en",
"publishedDate": "2026-10-22",
"responder": "Manager",
"responderName": "Example Manager",
"daysToRespond": 2
},
"hasOwnerResponse": true,
"wordCount": 13,
"photoCount": 1,
"photos": [{ "id": 1, "url": "https://example.com/photo.jpg", "width": 1200, "height": 800, "caption": null }],
"reviewerTip": null,
"isPinnedFavorite": false,
"hasTrustSafetyAlert": false,
"user": {
"userId": "EXAMPLE0000",
"name": "Example Traveler",
"username": "example_traveler",
"link": null,
"isVerified": false,
"avatar": null,
"hometown": "Sampletown, Germany",
"userLocation": { "name": "Sampletown, Germany", "id": null },
"country": "Germany",
"isDomesticReviewer": false,
"totalContributions": 12,
"helpfulVotesReceived": 0
},
"placeInfo": {
"id": "1234567",
"name": "Example Harbour Hotel",
"placeType": "HOTEL",
"rating": 4.0,
"numberOfReviews": 250,
"ratingDistribution": { "1": 10, "2": 20, "3": 40, "4": 80, "5": 100 }
},
"scrapedAt": "2026-10-27T09:00:00Z"
}

Each row is one review, so the export opens as a Tripadvisor reviews spreadsheet. A RUN_SUMMARY record in the key-value store lists the counts of the run: reviews saved and charged, places read, places with problems and requests sent.

⚠️ Limitations and error handling

  • Only public reviews are collected. Nothing that needs a Tripadvisor login is read.
  • The number of reviews can be lower than the count shown on Tripadvisor. Filters, maxReviewsPerPlace and what Tripadvisor returns all reduce it, and the log notes when fewer reviews came back than the place reports.
  • One language can be selected per run. Run again for another language.
  • Fields such as rank, address, price range, cuisines, phone and website depend on what the place page shows, and can be null.
  • Pages that are not hotel, restaurant, attraction or tour pages are not supported.
  • If Tripadvisor cannot be reached, the run stops and keeps everything saved so far. It fails only when nothing was saved.
  • If you set a maximum spend per run, the Actor stops cleanly when it is reached.

The Inputs table has one row per link with a status:

StatusMeaningWhat to do
okAll reviews that match the filters were readNothing
limitThe run stopped at maxReviewsPerPlace or at your spend limitRaise the limit and run again
emptyNo review matched your filtersRelax the filters
errorThe place could not be read; the note field says whyCheck the link and run again later
invalidThe input is not a Tripadvisor hotel, restaurant, attraction or tour linkFix the link
skippedThe run stopped before this placeRun it again

🔌 Integrating Tripadvisor Review Scraper with other apps

You can start Tripadvisor Review Scraper from the Apify API, on a schedule or from a webhook, and send the results on to other tools. For a weekly check, set reviewsSince to 7 days and run the Actor on a schedule; each run then saves only recent reviews.

🔗 Other travel and feedback scrapers by data_wiki

ActorWhat it extractsWhen to use it
Airbnb scraperAirbnb listings for a city or link: prices, hosts, amenities, photos, ratingsWhen you compare hotels with short-term rentals
Facebook comment scraperComments and replies from public Facebook postsWhen guest feedback is posted on Facebook
Instagram comment scraperComments from public Instagram posts and reelsWhen guests comment under a venue's Instagram posts
TikTok data extractorTikTok videos by link, profile, hashtag or keywordWhen you research how a destination is shown on TikTok
LLM pricing and speed dataModel prices, latency, uptime and benchmark scores from OpenRouterYou build AI analysis and need to compare language models

If you study short-term stays next to hotels, you can collect Airbnb listings for a city with the same research list. You can export comments from public Facebook posts or read the comments on Instagram posts and reels to see feedback outside Tripadvisor, and find TikTok videos about a destination for trend research.

Tripadvisor Review Scraper only collects reviews and profile details that users have made public on Tripadvisor, and it does not read private data or anything behind a login. Reviews still contain personal data such as names, usernames, hometowns, photos and review text. Collect it only with a legitimate reason, follow rules such as the GDPR and CCPA, respect Tripadvisor's terms and the copyright of review text and photos, and do not use the data to profile or contact individual reviewers. This is not legal advice; consult a lawyer if you are unsure. See is web scraping legal and ethical web scraping for background.

❓ FAQ

Do I need a Tripadvisor account or API key?

No. You can get Tripadvisor reviews without login because the Actor uses public pages, so you only need an Apify account. For programmatic access, use the Apify API with your Apify token.

Which Tripadvisor pages does it support?

Hotel, restaurant, attraction and tour pages from any Tripadvisor domain, plus place ids. Other page types get the status invalid or error.

Can I use it as a Tripadvisor hotel review scraper?

Yes. Paste hotel links and the Actor reads their reviews, with amenities and the rating histogram in the places table.

How many reviews can Tripadvisor Review Scraper get?

As many as Tripadvisor returns for the place and your filters. maxReviewsPerPlace defaults to 50, and 0 reads every review. Run a small test first to confirm the count.

Is there a tripadvisor reviews api for this?

Yes, in the sense that you can run the Actor and read its dataset through the Apify API. It is not an official Tripadvisor API.

Can I scrape restaurant reviews only?

Yes. Paste restaurant links and the Actor will scrape restaurant reviews for each one, with the cuisines and rank in the places table.

Do I need proxies?

No. The Actor starts without a proxy, retries when Tripadvisor rejects a request and switches to another connection. You can also choose a proxy in the input.

Can I scrape private data or reviewer emails?

No. Only public review and profile details are collected.

Can I use it through an MCP server?

Yes. Agents can find and call the Actor through the Apify MCP server with the same input as above.

💬 Your feedback

Found a problem or need another field? Open an issue in the Issues tab of the Actor. Need a custom solution? Contact hello.datawiki@gmail.com.