Tripadvisor Reviews Scraper
Pricing
from $0.25 / 1,000 reviews
Tripadvisor Reviews Scraper
Tripadvisor reviews of hotels, restaurants, attractions and tours, with full history, owner responses, sub-ratings and photos. Filter by stars, language, trip type, month, keyword or date, or get only new reviews. $0.40 per 1,000.
Pricing
from $0.25 / 1,000 reviews
Rating
0.0
(0)
Developer
Gautham Krishna
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Get Tripadvisor reviews of hotels, restaurants, attractions and tours as clean rows, with the full review history when you want it.
Paste Tripadvisor page URLs from any country site, or type place names, and get one row per review. Each row has the rating, title, text, dates, trip type, sub-ratings, photos, the owner's response and the place's own rating.
Ready-to-run example: Tripadvisor hotel reviews with owner responses, the 50 newest reviews of The Savoy in London, 49 of them with the hotel's reply.
You pay $0.40 per 1,000 reviews ($0.0004 each), and less on Apify Store discount tiers, down to $0.25 per 1,000 on Gold. Places with no reviews, wrong URLs, duplicates and failures are never charged, and there is no start fee.
At a glance
| Topic | Details |
|---|---|
| Input | Tripadvisor URLs of hotels, restaurants, attractions and tours from any country site (tripadvisor.com, .co.uk, .de, .fr, .jp and others), review page links, numeric place IDs, or place names |
| Filters | Star ratings, review languages, machine translations on or off, traveler type, time of year, a keyword, and a published-after or published-before date |
| Output | One JSON row per review: rating, title, text, review date, visit month, trip type, language, sub-ratings, tip, helpful votes, photo links, owner's response, reviewer display name, plus the place's name, type, URL, overall rating and review count |
| Depth | Full history. One run returned all 15,048 reviews of Hyatt Grand Central New York, from 2002 to 2026, in 4 minutes 22 seconds |
| Price | $0.40 per 1,000 reviews, $0.35 on Bronze, $0.30 on Silver and $0.25 on Gold. No start fee. Free rows for every input that returns no reviews |
| Tested | 80 inputs in one run on 21 Oct 2026: 26 hotels, 25 restaurants, 15 tours and 12 attractions in 64 Tripadvisor locations, with 3 to 104,649 reviews each. All 78 places with reviews returned them, 9,948 reviews in 65 seconds. The other 2 have no reviews on Tripadvisor |
What you get
One row per review (charged):
| Field | What it holds |
|---|---|
placeId, placeName, placeType, placeUrl | The place the review is about. placeType is hotel, restaurant, attraction or tour |
placeRating, placeReviewCount | Tripadvisor's overall rating and review count for the whole place |
reviewId, reviewUrl | Tripadvisor's review ID and the review's own page |
rating, title, text | The review itself, 1 to 5 stars |
reviewDate | When the review was submitted, as an ISO time in UTC |
visitDate, tripType | Month of the stay or visit (2025-11), and family, couples, solo, business or friends |
language, originalLanguage, machineTranslated | The language of text, the language it was written in, and whether Tripadvisor machine-translated it |
subRatings | Scores for parts of the experience, such as {"Value": 4, "Rooms": 4, "Location": 5} for hotels or Food, Service and Atmosphere for restaurants |
tip | The reviewer's tip, such as a room tip, when there is one |
helpfulVotes, photoCount, photoUrls | Helpful votes, the number of photos, and links to the photos the review list carries |
ownerResponse, ownerResponseDate, ownerResponseRole | The owner's or manager's reply, its date and the responder's role as Tripadvisor shows it |
reviewerName | The reviewer's public display name |
productName | On an attraction, the tour or ticket the review was written for, when it was not the attraction itself |
matchedPlace | For name inputs, the place the name matched, with its city |
Of the reviewer, the scraper keeps only the display name Tripadvisor shows. It does not collect usernames, profile links, hometowns, avatars or contribution counts. It removes email addresses and phone numbers from review text, tips and owner responses.
In the 80-input test run, 3,960 of 9,948 reviews had an owner's response, 4,012 had sub-ratings, 3,478 had photos and 1,176 had a tip.
Example row, copied from that run:
{"status": "ok","input": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html","placeId": "190694","placeName": "Hotel Adlon Kempinski Berlin","placeType": "hotel","placeUrl": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html","placeRating": 4.6,"placeReviewCount": 5215,"reviewId": "1045707285","reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187323-d190694-r1045707285-Hotel_Adlon_Kempinski_Berlin-Berlin.html","rating": 5,"title": "Best Hotel in Berlin","text": "Stayed at this hotel during 2025 7 times. Wonderful location, place to be when in Berlin. Staff very engaged. Doormen always very friendly. Their spa, pool, fitness is excellent and best in Berlin. Looking forward to my next stay in march.","reviewDate": "2026-01-11T14:10:57.54Z","visitDate": "2025-11","tripType": "business","language": "en","originalLanguage": "en","machineTranslated": false,"subRatings": {"Value": 4, "Rooms": 4, "Location": 5, "Cleanliness": 5, "Service": 5, "Sleep Quality": 4},"tip": null,"helpfulVotes": 0,"photoCount": 0,"photoUrls": [],"ownerResponse": "Thank you so much for sharing your lovely feedback.\n\nWe are delighted to hear that you enjoyed your stay again and it will be our pleasure welcoming you once more in March.\n\nKind regards from Berlin\n\nChristian Hirt\nManaging Director","ownerResponseDate": "2026-01-15","ownerResponseRole": "Inhaber","reviewerName": "RJ F","productName": null}
An input that returns no reviews gives one free row with a status and a message:
status | Meaning |
|---|---|
no_reviews | The place has no reviews, none match your filters, or none are new since the last run |
invalid_url | Not a Tripadvisor place page, or a city or list page, which has no reviews of its own |
not_found | No search result matched the place name |
duplicate | Another input in the run already reached this place, so its reviews are listed once |
unsupported_language | Tripadvisor has no review filter for that language |
error, partial | The place failed after retries on fresh IPs. partial keeps the reviews pushed before the failure |
Input
{"startUrls": ["https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html","https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html","188151"],"placeNames": ["Louvre Museum Paris", "Shangri-La Paris"],"maxReviewsPerPlace": 500,"sortBy": "newest","ratings": ["1", "2"],"languages": ["en"],"includeMachineTranslations": true,"tripTypes": ["business"],"visitMonths": ["1", "2"],"keyword": "breakfast","publishedAfter": "2025-01-01"}
| Input | What it does |
|---|---|
startUrls | Place pages from any Tripadvisor country site, review page links, or numeric place IDs (the number after -d in the URL) |
placeNames | Names as you would type them in Tripadvisor's search box, best with the city |
placeType | Search names only among hotel, restaurant or attraction (attractions and tours). any by default |
maxReviewsPerPlace | Stop after this many reviews per place. 100 by default. Set it high for the full history |
sortBy | newest (default) or detailed, Tripadvisor's Detailed reviews order |
ratings | Only these star ratings, "1" to "5" |
languages | Only reviews in these languages, such as en, de, fr, ja, zh-CN or zh-TW. Empty means all languages |
includeMachineTranslations | On by default. Off drops the reviews Tripadvisor machine-translated, free of charge |
tripTypes | family, couples, solo, business, friends |
visitMonths | Months of the visit, "1" for January to "12" for December, in any year |
keyword | Only reviews that mention this word or phrase, through Tripadvisor's own review search |
publishedAfter, publishedBefore | A date window: 2026-10-01, an ISO time in UTC, or a relative value such as 7 days |
onlyNewSinceLastRun | Off by default. See "Run it on a schedule" |
Inputs copied from the old leading Tripadvisor reviews actor also work: maxItemsPerQuery, reviewRatings, reviewsLanguages and lastReviewDate are read as maxReviewsPerPlace, ratings, languages and publishedAfter, and startUrls takes {"url": ...} objects as well as plain strings.
Filters, as measured
"languages": ["de"],"includeMachineTranslations": falseand"ratings": ["1", "2"]on a New York hotel, the Eiffel Tower and Munich's Hofbräuhaus returned 165 reviews, every one written in German with 1 or 2 stars."keyword": "breakfast","tripTypes": ["business"],"visitMonths": ["1", "2"]and"publishedAfter": "2024-01-01"on Hyatt Grand Central returned 5 reviews, each from a January or February business trip, mentioning breakfast, published in 2024 or later.
Languages and machine translations
With no language set, each review comes in the language it was written in, except some that Tripadvisor shows machine-translated.
In the 80-input test run that was 2,416 of 9,948 reviews, marked machineTranslated: true with the original language in originalLanguage.
With a language set, Tripadvisor adds reviews it translated into that language.
On Hyatt Grand Central, 19 of the first 20 German reviews were machine-translated from English.
Set includeMachineTranslations to false to keep only reviews written in that language.
Place names
Names go through Tripadvisor's own search box.
The scraper takes a result whose name and city hold most of the words you typed, preferring an exact name over a longer one, so Eiffel Tower finds the tower and not a tour of it.
In the test run, 8 of 12 names found the place meant, such as Louvre Museum Paris, Le Jules Verne Paris and Burj Al Arab Jumeirah.
Tripadvisor's search did not list the other 4 for the names we typed.
Katz's Delicatessen in New York and Raffles Singapore matched a similar name elsewhere, Uluru Kata Tjuta National Park matched the park's Cultural Centre, and Tsukiji Outer Market Tokyo matched a food walk with no reviews.
Check matchedPlace on each row, and use a URL when you need certainty.
Run it on a schedule
A daily run with onlyNewSinceLastRun: true turns the scraper into a review alert for the places you follow.
It returns only reviews it has not returned to you before for the same place and filters, and nothing older than the newest one from the last run.
With the default newest-first order, each run stops at the first page with nothing new, so you pay only for new reviews.
Tripadvisor publishes a review after moderation, so the scraper looks 3 days behind the newest review it returned and skips the ones it returned before.
The memory is a key-value store named tripadvisor-reviews-scraper-monitor in your own Apify account, one record per place and filter set.
We ran the same 10 busy places twice on 21 Oct with onlyNewSinceLastRun: true, among them the Taj Mahal, Petra and the Blue Lagoon.
The first run returned 450 reviews from 9 of them, since Burj Khalifa was already in the memory from an earlier test.
The second, 25 minutes later, returned none, and a direct read of each place's newest reviews confirmed Tripadvisor had published nothing new in between.
At that moment the newest review on those 9 places was 13 hours to 5 days old, which is why the look-back is 3 days.
- Set your input with
onlyNewSinceLastRun: trueand click Save as a new task. - On the task page, click Actions, then Schedule, and pick how often it runs. Apify's schedules guide covers cron times and time zones.
- On the task's Integrations tab, choose where each run's results go.
| Integration | What it does |
|---|---|
| Slack | Posts a message to your channel when a run finishes |
| Google Drive | Saves each run's results as a file in your Drive |
| Webhook | Sends the finished run, with its dataset ID, to your own URL |
| Make, Zapier, n8n | Adds each new row to a Google Sheet, a CRM or a database |
Each review has a stable reviewId, so a sheet or database can skip rows it already holds.
Price
| Tier | Per review | Per 1,000 reviews |
|---|---|---|
| No discount | $0.0004 | $0.40 |
| Bronze | $0.00035 | $0.35 |
| Silver | $0.0003 | $0.30 |
| Gold and above | $0.00025 | $0.25 |
There is no start fee.
Rows for places with no reviews, wrong URLs, names with no match, duplicates and failures are free.
Reviews dropped by includeMachineTranslations: false are free too.
Set a maximum charge per run in Apify, and the scraper stops when it is reached.
How it works
The scraper reads Tripadvisor's public review list, the same data its place pages load, with no login and no account. It needs no browser, so runs are fast: the 80-input test took 65 seconds. Each place runs on its own residential IP, and a call that fails moves to a fresh IP, up to 6 tries.
Limits
- City, hotel list and search result pages have no reviews of their own. Pass the page of one place.
- Name matching depends on what Tripadvisor's search box lists, as described above.
placeReviewCountis Tripadvisor's own count, which can differ by a few from the reviews returned, as new reviews arrive. Hyatt Grand Central showed 15,043 and returned 15,048.- Photo links are the ones Tripadvisor's review list carries, which can be fewer than
photoCount.
More from heyitsgautham
Other actors from the same account.
- Hotel Reviews Scraper (Booking.com + Agoda) for Booking.com and Agoda hotel reviews, by URL or hotel name, with one hotel from both sites at once.
- Trustpilot Reviews & TrustScore Scraper for Trustpilot reviews and each company's TrustScore, for any business on any Trustpilot country site.
- Capterra Reviews Scraper for Capterra software reviews, by product URL or product name.
- Google Trends Scraper: Related Queries & Trending Searches for Google Trends interest over time, related queries and Trending Now.