Tripadvisor Reviews Scraper avatar

Tripadvisor Reviews Scraper

Pricing

from $0.25 / 1,000 reviews

Go to Apify Store
Tripadvisor Reviews Scraper

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

Gautham Krishna

Maintained by Community

Actor 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

TopicDetails
InputTripadvisor 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
FiltersStar ratings, review languages, machine translations on or off, traveler type, time of year, a keyword, and a published-after or published-before date
OutputOne 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
DepthFull 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
Tested80 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):

FieldWhat it holds
placeId, placeName, placeType, placeUrlThe place the review is about. placeType is hotel, restaurant, attraction or tour
placeRating, placeReviewCountTripadvisor's overall rating and review count for the whole place
reviewId, reviewUrlTripadvisor's review ID and the review's own page
rating, title, textThe review itself, 1 to 5 stars
reviewDateWhen the review was submitted, as an ISO time in UTC
visitDate, tripTypeMonth of the stay or visit (2025-11), and family, couples, solo, business or friends
language, originalLanguage, machineTranslatedThe language of text, the language it was written in, and whether Tripadvisor machine-translated it
subRatingsScores for parts of the experience, such as {"Value": 4, "Rooms": 4, "Location": 5} for hotels or Food, Service and Atmosphere for restaurants
tipThe reviewer's tip, such as a room tip, when there is one
helpfulVotes, photoCount, photoUrlsHelpful votes, the number of photos, and links to the photos the review list carries
ownerResponse, ownerResponseDate, ownerResponseRoleThe owner's or manager's reply, its date and the responder's role as Tripadvisor shows it
reviewerNameThe reviewer's public display name
productNameOn an attraction, the tour or ticket the review was written for, when it was not the attraction itself
matchedPlaceFor 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:

statusMeaning
no_reviewsThe place has no reviews, none match your filters, or none are new since the last run
invalid_urlNot a Tripadvisor place page, or a city or list page, which has no reviews of its own
not_foundNo search result matched the place name
duplicateAnother input in the run already reached this place, so its reviews are listed once
unsupported_languageTripadvisor has no review filter for that language
error, partialThe 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"
}
InputWhat it does
startUrlsPlace pages from any Tripadvisor country site, review page links, or numeric place IDs (the number after -d in the URL)
placeNamesNames as you would type them in Tripadvisor's search box, best with the city
placeTypeSearch names only among hotel, restaurant or attraction (attractions and tours). any by default
maxReviewsPerPlaceStop after this many reviews per place. 100 by default. Set it high for the full history
sortBynewest (default) or detailed, Tripadvisor's Detailed reviews order
ratingsOnly these star ratings, "1" to "5"
languagesOnly reviews in these languages, such as en, de, fr, ja, zh-CN or zh-TW. Empty means all languages
includeMachineTranslationsOn by default. Off drops the reviews Tripadvisor machine-translated, free of charge
tripTypesfamily, couples, solo, business, friends
visitMonthsMonths of the visit, "1" for January to "12" for December, in any year
keywordOnly reviews that mention this word or phrase, through Tripadvisor's own review search
publishedAfter, publishedBeforeA date window: 2026-10-01, an ISO time in UTC, or a relative value such as 7 days
onlyNewSinceLastRunOff 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": false and "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.

  1. Set your input with onlyNewSinceLastRun: true and click Save as a new task.
  2. On the task page, click Actions, then Schedule, and pick how often it runs. Apify's schedules guide covers cron times and time zones.
  3. On the task's Integrations tab, choose where each run's results go.
IntegrationWhat it does
SlackPosts a message to your channel when a run finishes
Google DriveSaves each run's results as a file in your Drive
WebhookSends the finished run, with its dataset ID, to your own URL
Make, Zapier, n8nAdds 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

TierPer reviewPer 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.
  • placeReviewCount is 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.