Tripadvisor Review Scraper
Pricing
from $0.70 / 1,000 results
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
Maintained by CommunityActor 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.
| Field | Description | Example |
|---|---|---|
id | Tripadvisor review ID | 900000001 |
url | Link to the review on Tripadvisor | https://www.tripadvisor.com/ShowUserReviews-g100000-d1234567-r900000001-Example_Harbour_Hotel-Example_City.html |
title | Review title | Example review title |
lang | Language the review is shown in | en |
locationId | Tripadvisor ID of the place | 1234567 |
publishedDate | Date the review was written (YYYY-MM-DD) | 2026-10-20 |
rating | Stars given, 1 to 5 | 2 |
helpfulVotes | Helpful votes the review received | 0 |
travelDate | Month or day of the stay or visit | 2026-09 |
tripType | FAMILY, COUPLES, SOLO, BUSINESS or FRIENDS when given | COUPLES |
text | Full review text | Example review text written for this README. It is not a real review. |
originalLanguage | Language the review was written in | en |
isMachineTranslated | True when Tripadvisor translated the text | false |
subratings | Extra ratings such as Value, Service or Rooms as name/value pairs | [{"name": "Service", "value": 2}] |
ownerResponse | The owner's reply with text, date, responder and days to respond | {"daysToRespond": 2, ...} |
hasOwnerResponse | True when the owner replied | true |
wordCount | Words in the review text | 13 |
photoCount | Real number of photos on the review | 1 |
photos | Photo links, sizes and captions | [{"id": 1, "width": 1200, ...}] |
reviewerTip | Tip the reviewer left for other travelers | null |
isPinnedFavorite | True when the reviewer pinned the review | false |
hasTrustSafetyAlert | True when Tripadvisor flagged the review | false |
user | Reviewer name, username, link, hometown, country and contribution counts | {"name": "Example Traveler", ...} |
placeInfo | Place details: rating histogram, rank, address, amenities | {"name": "Example Harbour Hotel", ...} |
scrapedAt | When 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.
| Table | One row per | Main fields |
|---|---|---|
| Places | place | name, rating, rank, rank category, star counts, address, amenities |
| Reviewers | review author | name, username, hometown, country, contributions |
| Photos | review photo | link, width, height, caption |
| Owner replies | owner reply | reply text, responder, days to respond |
| Sub-ratings | sub-rating on a review | name, value |
| Inputs | input link | status, 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,ratingandsubratingsside 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
reviewsSincefor online reputation monitoring for hotels. A list of venues works the same way for restaurant reputation monitoring. - Alerts on bad reviews: set
ratingsto 1 and 2 andreviewsSinceto a short period to monitor low star reviews. ComparepublishedDatewithownerResponse.daysToRespondto 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.hometownanduser.isDomesticReviewerfeed tourism market research. Count them per place for visitor origin analysis. - Seasonal patterns: the
monthsandtravelerTypesinputs support seasonal review analysis, for example June to August reviews written by families. GrouptripTypefor review analysis by traveler type. - Tours, attractions and restaurants: tour pages give you
tripTypeandtravelDatefor 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
keywordinput 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
- Create a free Apify account and open Tripadvisor Review Scraper in Apify Console.
- Paste one or more Tripadvisor hotel, restaurant, attraction or tour links into Tripadvisor links. A place id such as
d1234567also works. - 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.
- 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.
- Open the Output tab to browse the tables.
- 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 tier | Price per review | Price 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 }}
| Field | What it does |
|---|---|
urls (required) | Tripadvisor hotel, restaurant, attraction or tour links, or place ids, one per line. |
maxReviewsPerPlace | Most reviews saved for each place. 0 means every review. Default 50. |
reviewsSince | Only reviews written on or after a date (2025-01-31) or a relative value such as 6 months. Empty means no limit. |
ratings | Keep only these star ratings ("1" to "5"). Empty means all. |
language | all or one language code such as en, fr, de or zh-CN. |
sort | newest (default), detailed or insightful. |
keyword | Only reviews that mention this text. |
travelerTypes | family, couples, solo, business or friends. Empty means all. |
months | Only reviews written in these months of any year. Empty means all. |
includePlaceInfo | Add the place block to every review row. Default on. The places table is always filled. |
includeReviewerDetails | Add the reviewer block to every review row. Default on. |
includePhotos | Add photo links to every review row. Default on. |
proxyConfiguration | Optional. Leave the default to start without a proxy. |
💡 Start with a small
maxReviewsPerPlaceto check the result before a large run.
💡 Reviewer details are personal data. Switch
includeReviewerDetailsoff when you only need ratings and text.
⚠️ When
reviewsSinceis combined with asortother thannewest, 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,
maxReviewsPerPlaceand 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:
| Status | Meaning | What to do |
|---|---|---|
ok | All reviews that match the filters were read | Nothing |
limit | The run stopped at maxReviewsPerPlace or at your spend limit | Raise the limit and run again |
empty | No review matched your filters | Relax the filters |
error | The place could not be read; the note field says why | Check the link and run again later |
invalid | The input is not a Tripadvisor hotel, restaurant, attraction or tour link | Fix the link |
skipped | The run stopped before this place | Run 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.
- Apify integrations, including Make and Zapier
- Webhooks to trigger your own code when a run finishes
- The Apify API with the Actor id
data_wiki/tripadvisor-review-scraper; see the API tab for ready-made code - AI agents can call this Actor through the Apify MCP server
🔗 Other travel and feedback scrapers by data_wiki
| Actor | What it extracts | When to use it |
|---|---|---|
| Airbnb scraper | Airbnb listings for a city or link: prices, hosts, amenities, photos, ratings | When you compare hotels with short-term rentals |
| Facebook comment scraper | Comments and replies from public Facebook posts | When guest feedback is posted on Facebook |
| Instagram comment scraper | Comments from public Instagram posts and reels | When guests comment under a venue's Instagram posts |
| TikTok data extractor | TikTok videos by link, profile, hashtag or keyword | When you research how a destination is shown on TikTok |
| LLM pricing and speed data | Model prices, latency, uptime and benchmark scores from OpenRouter | You 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.
⚖️ Is it legal to scrape Tripadvisor?
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.