Tripadvisor Reviews Scraper avatar

Tripadvisor Reviews Scraper

Pricing

from $0.72 / 1,000 reviews

Go to Apify Store
Tripadvisor Reviews Scraper

Tripadvisor Reviews Scraper

[$4/1K reviews, 20% below the leader, paid plans down to $0.72/1K] Scrape Tripadvisor reviews of hotels, restaurants and attractions: rating, title, text, review date, visit month, reviewer, photos, owner response with date. Filter by stars, traveller type, month. Only-new mode. No start fee.

Pricing

from $0.72 / 1,000 reviews

Rating

0.0

(0)

Developer

BlueskyScraper

BlueskyScraper

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

4 hours ago

Last modified

Categories

Share

What is Tripadvisor Reviews Scraper?

Tripadvisor Reviews Scraper is a Tripadvisor API for reviews of hotels, restaurants and attractions. Paste Tripadvisor links, or type a place name and a city, and get one row per review with the star rating, title, full text, review date, month of visit, language, reviewer name, home town and review count, photos, the owner response with its date, and the sub-ratings the reviewer gave (rooms, service, value, cleanliness, location, sleep quality for hotels; food, service, value, atmosphere for restaurants). Every row also carries the place name, type, address, overall rating and total number of reviews.

Reviews are read from Tripadvisor through a licensed data provider, so there are no proxies, CAPTCHAs or browser sessions to manage and no Tripadvisor account or official API key is needed. Filters run on Tripadvisor's side โ€” star ratings, traveller type (families, couples, solo, business, friends), months of visit and a minimum review date โ€” so you pay only for the reviews you asked for. The field names match our Agoda, Booking.com and Airbnb review scrapers, so one parser covers all of them.

  • ๐Ÿ’ฐ $0.004 per review on the free plan โ€” 20% below the market leader ($4 per 1,000 reviews; paid plans from $1.52 on Bronze down to $0.72 on Gold and above). No start fee.
  • ๐Ÿ’ฌ Owner response and its date in every row, plus how many days the owner took to answer
  • ๐Ÿ—“๏ธ Month of visit and traveller type (when filtered) next to the review date
  • ๐Ÿ” Only new reviews mode for daily monitoring โ€” later runs write and charge only reviews you have not received
  • ๐Ÿ†“ Error rows are free โ€” a dead link, an unknown city or a place with no matching reviews costs nothing
  • ๐Ÿค– Works from the Apify API, MCP server (Claude, ChatGPT, Cursor), n8n, Make and Zapier

What data can Tripadvisor Reviews Scraper extract?

One row per review. Example values are from a real run on a hotel in Ubud, Bali.

FieldExampleNotes
typereviewplace for the optional summary row, error for free error rows
placeNameThe Ubud Village Resort & SpaHotel, restaurant or attraction
placeTypehotelhotel, restaurant, attraction
placeUrlhttps://www.tripadvisor.com/Hotel_Review-g297701-d610805-โ€ฆTripadvisor page of the place
placeAddressJalan Raya Nyuh Kuning, 80571, IDAs Tripadvisor shows it
placeRating / placeReviewsCount4.8 / 1,943Overall rating and total reviews
reviewId / reviewUrl1079936254 / โ€ฆShowUserReviews-โ€ฆr1079936254โ€ฆDirect link to the review
rating5Stars, 1โ€“5
title / textStunningly beautiful hotel / We stayed here for 4 nightsโ€ฆFull text, not truncated
reviewDate2026-09-30Date the review was published
visitMonth2026-09Month of the stay or visit
travelerTypecouplesFilled when you filter by traveller type
language / textLanguage / isTranslatedit / en / trueOriginal language, language of the text, translation flag
translationMissingfalseTranslation was on, but Tripadvisor has no English version of this review (null when translation is off)
reviewerName / reviewerLocationotl / Welwyn, United KingdomHome town when the profile shows it
reviewerReviewCount / reviewerProfileUrl272 / https://www.tripadvisor.com/Profile/otlHow active the reviewer is
images / imagesCount[7 photo links] / 7Full-size photo URLs
hasOwnerResponse / ownerResponsetrue / Dear waynegF2832OP, Greetings from The Ubud Village Resort & Spaโ€ฆThe management's reply
ownerResponseDate / ownerResponseDelayDays2026-09-26T00:00:00.000Z / 0Reply date and days to answer
responderNameUbud Village GroupWho answered
subRatings{"value":5,"rooms":5,"location":4,"cleanliness":5,"service":5,"sleepQuality":5}Per-aspect scores, when the reviewer gave them
searchQuery / searchLocationAyana Resort / Denpasar,Bali,IndonesiaWhen the place came from a name search
scrapedAt2026-10-02T00:44:37ZWhen the row was produced

With ๐Ÿจ Add a place summary row switched on, each place also gets one place row with name, type, address, overall rating, total reviews and the rating distribution: rating5Count, rating4Count, rating3Count, rating2Count, rating1Count (for example 4,266 / 848 / 340 / 130 / 147 for Ayana Resort Bali).

๐Ÿ’ฐ How much does it cost to scrape Tripadvisor reviews?

Tripadvisor Reviews Scraper uses pay-per-event pricing. You pay per review row, and per place summary row only when you switch that option on:

EventFree planBronzeSilverGoldPlatinumDiamond
review$0.004$0.00152$0.0012$0.00072$0.00072$0.00072
place (optional summary)$0.001$0.0009$0.0008$0.0007$0.0007$0.0007
  • 20% below the market leader on the free plan and on Bronze to Gold (checked 11 October 2026). 1,000 reviews cost $4 on the free plan, $1.52 on Bronze and $0.72 on Gold.
  • No start fee and no charge per run.
  • $1 = 250 reviews on the free plan; Apify's free $5 monthly credit covers about 1,250 reviews a month.
  • Error rows are free: a link that is not a Tripadvisor place, a location that does not exist, a place with no reviews matching your filters.
  • Filtered-out reviews are free. Star, traveller-type and month filters are applied by Tripadvisor; reviews older than your minimum date are skipped without charge.
  • With only new reviews switched on, reviews you already received under the same memory name are skipped and not charged.
  • The default run (one Bali hotel, 20 newest reviews) costs $0.08 and finished in 12 seconds in our test; an identical repeat came back in 4 seconds.

Example budgets (free plan):

JobRowsCost
1 hotel ร— 20 newest reviews20$0.08
10 hotels ร— 100 reviews1,000$4.00 (Bronze: $1.52)
1 restaurant ร— all 3,706 reviews3,706$14.82 (Gold: $2.67)
Daily monitoring, ~3 new reviews a day~90 a month~$0.36 a month

How to scrape Tripadvisor reviews with Tripadvisor Reviews Scraper

  1. Open the Actor and click Try for free (an Apify account is free).
  2. In ๐Ÿ”— Tripadvisor place URLs, paste one link per line โ€” open the hotel, restaurant or attraction on Tripadvisor and copy the address. Any Tripadvisor domain works (.com, .co.uk, .de โ€ฆ).
  3. No link? Type the place names in ๐Ÿ” Place names to search and the city in ๐Ÿ“ Search location (or write Name, City).
  4. Set ๐Ÿ’ฏ Max reviews per place (20 by default, up to 4,490).
  5. Optionally pick โญ Star ratings, ๐Ÿงณ Traveller types, ๐Ÿ—“๏ธ Months of visit or ๐Ÿ“… Only reviews written on or after.
  6. Click Start. Reviews appear in the Reviews table; switch to Owner responses or Reviewers & photos for other column sets, and download as CSV, Excel, JSON or HTML.

โฌ‡๏ธ Input

{
"startUrls": [
"https://www.tripadvisor.com/Hotel_Review-g297701-d610805-Reviews-The_Ubud_Village_Resort_Spa-Ubud_Gianyar_Regency_Bali.html",
"https://www.tripadvisor.com/Restaurant_Review-g297701-d991554-Reviews-Bebek_Bengil_Ubud-Ubud_Gianyar_Regency_Bali.html",
"https://www.tripadvisor.co.uk/Attraction_Review-g608497-d1515658-Reviews-Tegalalang_Rice_Terrace-Tegalalang_Gianyar_Regency_Bali.html"
],
"maxReviewsPerPlace": 20
}

Links with a page offset (-or2130-) are cleaned automatically. A link to a single review (ShowUserReviews-โ€ฆ) gets a free error row asking for the place link.

Search by place name and city

{
"searchQueries": ["Ayana Resort"],
"searchLocation": "Bali",
"maxPlacesPerSearch": 1,
"maxReviewsPerPlace": 50
}

The Actor finds the place on Tripadvisor (sponsored listings are skipped) and collects its reviews. In our test Ayana Resort + Bali found Ayana Resort Bali (5,731 reviews). searchLocation accepts a city, region or country โ€” Ubud, Paris, France, New York City; add the country after a comma when a city name exists in several countries. You can also write the place as Ayana Resort, Bali and leave the location empty. Raise Places per search (up to 30) to take several top results of a search.

๐ŸŽฏ Filters: stars, traveller type, months, date

{
"startUrls": ["https://www.tripadvisor.com/Hotel_Review-g297696-d302249-Reviews-Ayana_Resort_Bali-Jimbaran_South_Kuta_Badung_Regency_Bali.html"],
"ratings": ["1", "2"],
"travelerTypes": ["families", "couples"],
"visitMonths": ["july", "august"],
"minReviewDate": "1 year",
"maxReviewsPerPlace": 100
}
  • Star ratings โ€” 5 = Excellent โ€ฆ 1 = Terrible.
  • Traveller types โ€” each selected type is collected separately and every row carries its travelerType; the review limit applies to each type.
  • Months of visit โ€” any year, useful for high-season analysis.
  • Minimum review date โ€” a date (2026-01-01) or a period (30 days, 6 months, 1 year). With Most recent order the Actor fetches in growing steps and stops once it reaches older reviews: in our test, 100 requested with 30 days returned 13 reviews from the last month after one small step.
  • Sort โ€” Most recent (default), Detailed reviews (the longest, most informative first) or Tripadvisor default.

Translation

Off by default: every review comes in the language it was written in, and language tells you which. Switch Translate reviews on and reviews written in other languages arrive as Tripadvisor's machine translation into English โ€” isTranslated: true, language keeps the original (it, fr, de, nl, pt in our restaurant test). Tripadvisor does not translate every review: in our 40-review hotel test 1 of 10 foreign reviews had no translation and came in Italian, with isTranslated: false, textLanguage: it and translationMissing: true โ€” the data source itself returns that review untranslated, so we deliver the original text rather than nothing. Such reviews are counted in the run's status message; filter translationMissing = true to find them.

๐Ÿ” Only new reviews (monitoring)

{
"startUrls": ["https://www.tripadvisor.com/Hotel_Review-g297701-d610805-Reviews-The_Ubud_Village_Resort_Spa-Ubud_Gianyar_Regency_Bali.html"],
"maxReviewsPerPlace": 20,
"onlyNewRowsStore": "my-hotel-reviews"
}

Name the memory once and put the Actor on a daily schedule. The first run delivers everything found and remembers it; every later run with the same name writes and charges only reviews you have not received before. In our test the second run delivered 0 of 10 already-known reviews and charged nothing for them.

โฌ†๏ธ Output

{
"type": "review",
"placeId": "302249",
"placeName": "Ayana Resort Bali",
"placeType": "hotel",
"placeUrl": "https://www.tripadvisor.com/Hotel_Review-g297696-d302249-Reviews-Ayana_Resort_Bali-Jimbaran_South_Kuta_Badung_Regency_Bali.html",
"placeAddress": "Jl. Karang Mas Sejahtera, Karang Mas Estate, 80364, ID",
"placeRating": 4.6,
"placeReviewsCount": 5731,
"reviewId": "1079898625",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g297696-d302249-r1079898625-Ayana_Resort_Bali-Jimbaran_South_Kuta_Badung_Regency_Bali.html",
"rating": 5,
"title": "Why We Keep Coming Back to AYANA",
"text": "This was our third stay at AYANA. The resort is modern, spacious and beautiful, with spectacular ocean views and so many restaurants and bars to choose from. โ€ฆ",
"reviewDate": "2026-09-29",
"visitMonth": "2026-09",
"travelerType": "couples",
"language": "en",
"textLanguage": "en",
"isTranslated": false,
"translationMissing": null,
"reviewerName": "Jerri",
"reviewerProfileUrl": "https://www.tripadvisor.com/Profile/985jlcl",
"reviewerLocation": null,
"reviewerReviewCount": 25,
"images": ["https://dynamic-media-cdn.tripadvisor.com/media/photo-o/34/c1/be/3d/caption.jpg", "โ€ฆ 6 more"],
"imagesCount": 7,
"hasOwnerResponse": true,
"ownerResponse": "Dear Valued Guest, Three visits to AYANA is already special, but hearing that the resort โ€ฆ",
"ownerResponseDate": "2026-09-29T00:00:00.000Z",
"ownerResponseDelayDays": 0,
"responderName": "David D",
"subRatings": { "value": 5, "rooms": 5, "location": 5, "cleanliness": 5, "service": 5, "sleepQuality": 5 },
"searchQuery": "Ayana Resort",
"searchLocation": "Denpasar,Bali,Indonesia",
"scrapedAt": "2026-10-02T00:46:38.411Z"
}

Table views

  • Reviews โ€” place, rating, title, text, review date, visit month, traveller type, language, reviewer, owner response, link.
  • Owner responses โ€” who answered, when, and how many days after the review: a response-time report in one click.
  • Reviewers & photos โ€” reviewer home town, review count, profile link, photos and sub-ratings.
  • Place summary ($) โ€” the optional place rows with the 1โ€“5 star distribution.

Same fields as our other travel review scrapers

The column names follow Agoda Reviews Scraper: rating, title, text, reviewDate, reviewerName, reviewerReviewCount, images, ownerResponse, ownerResponseDate, responderName, scrapedAt mean the same thing in both. The only rename is hotelName / hotelUrl โ†’ placeName / placeUrl, because Tripadvisor also covers restaurants and attractions. A pipeline built for one source reads the other with that one mapping.

Use cases for Tripadvisor data

Hotel and restaurant reputation management

Pull every new review each morning with only new reviews, route 1โ€“2 star reviews to the manager, and track ownerResponseDelayDays to see how fast the team answers.

Competitor benchmarking

Compare ratings, sub-ratings (rooms, service, value, food, atmosphere) and complaint themes across competing hotels or restaurants in the same city, month by month.

Seasonal and segment analysis

Combine months of visit with traveller type to see what families say in August versus couples in the low season.

Travel market research

Search a category in a destination, take the top places, and build a dataset of what travellers praise and criticise.

AI agents, RAG and sentiment models

One flat row per review with the original language and an optional English translation is ready for sentiment scoring, topic extraction and retrieval-augmented answers about a place.

Integrations

Apify API (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('lergassy/tripadvisor-reviews-scraper').call({
startUrls: ['https://www.tripadvisor.com/Hotel_Review-g297701-d610805-Reviews-The_Ubud_Village_Resort_Spa-Ubud_Gianyar_Regency_Bali.html'],
maxReviewsPerPlace: 50,
ratings: ['1', '2', '3'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((r) => [r.reviewDate, r.rating, r.title, r.hasOwnerResponse]));

Apify API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("lergassy/tripadvisor-reviews-scraper").call(run_input={
"searchQueries": ["Ayana Resort"],
"searchLocation": "Bali",
"travelerTypes": ["couples"],
"maxReviewsPerPlace": 30,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row.get("travelerType"), row.get("rating"), row.get("title"), row.get("ownerResponseDelayDays"))

One HTTP call

POST https://api.apify.com/v2/acts/lergassy~tripadvisor-reviews-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN with the input JSON as the body returns the review rows directly.

No-code tools

Use the Apify integrations for n8n, Make, Zapier, Google Sheets, Airtable, Slack or a webhook after each run. A daily schedule with only new reviews becomes a review alert feed.

MCP server

Connect https://mcp.apify.com to Claude, ChatGPT, Cursor or any MCP client and ask for lergassy/tripadvisor-reviews-scraper. The agent sees the input fields and gets one flat row per review back.

๐Ÿค– For AI Agents & LLM Apps

Compact reference for agents calling lergassy/tripadvisor-reviews-scraper through the Apify MCP server or API.

Purpose: one row per Tripadvisor review of a hotel, restaurant or attraction: how many stars, what the guest wrote, when they wrote it and when they visited, who they are, and whether and how fast the owner replied.

Minimal input:

{ "startUrls": ["https://www.tripadvisor.com/Hotel_Review-gโ€ฆ-dโ€ฆ-Reviews-โ€ฆ.html"], "maxReviewsPerPlace": 20 }

or { "searchQueries": ["place name"], "searchLocation": "city" }.

Output: type, placeId, placeName, placeType, placeUrl, placeAddress, placeRating, placeReviewsCount, reviewId, reviewUrl, rating, title, text, reviewDate, visitMonth, travelerType, language, textLanguage, isTranslated, translationMissing, reviewerName, reviewerProfileUrl, reviewerLocation, reviewerReviewCount, images, imagesCount, hasOwnerResponse, ownerResponse, ownerResponseDate, ownerResponseDelayDays, responderName, subRatings (object), searchQuery, searchLocation, scrapedAt. Optional place rows: type, placeId, placeName, placeType, placeUrl, placeAddress, placeRating, placeReviewsCount, rating5Count โ€ฆ rating1Count. Error rows: type = error, input, error.

Behaviors an agent should know:

  • Links and place names can be mixed; a name needs searchLocation or the form Name, City.
  • maxReviewsPerPlace default 20, max 4,490; with travelerTypes it applies per type.
  • Use ratings, travelerTypes, visitMonths, minReviewDate instead of post-filtering โ€” they cost nothing for excluded reviews.
  • travelerType is null unless the traveller filter is used (Tripadvisor does not expose it per review otherwise).
  • Text is in the original language unless translateReviews is true (then English where Tripadvisor has a translation, isTranslated = true; textLanguage always tells the language of text; translationMissing = true marks reviews Tripadvisor has no English version of).
  • Billing: review per review row, place per summary row (off by default). Error rows are free. No start fee.

Error items / Troubleshooting

Error rows look like { "type": "error", "input": "https://www.google.com/x", "error": "Not a Tripadvisor link โ€” โ€ฆ Not charged.", "scrapedAt": "โ€ฆ" } and are always free. They appear when:

  • a link is not a Tripadvisor place page, or points to a single review;
  • a search location does not exist on Tripadvisor (the message suggests a format) or a place name finds nothing;
  • a place returns no data โ€” it closed or moved (in our test a closed Ubud restaurant came back empty);
  • no reviews match your filters (the row says how many reviews the place has in total);
  • a filter value is not understood (stars outside 1โ€“5, an unknown traveller type or month, a date in another format).

If several places in a row return far fewer reviews than requested, the Actor stops early to protect your budget: everything already found stays in the dataset and each remaining place gets a free error row.

โ“ FAQ

Tripadvisor reviews are public: anyone can read them without logging in, and the Actor returns only what such a visitor sees. Reviews contain reviewer display names and sometimes a home town โ€” public profile data, which may still be personal data under GDPR and similar laws. Use it for analysis, keep only what you need, and ask a lawyer before republishing reviews.

Is there an official Tripadvisor API for reviews?

Tripadvisor's own Content API returns only a handful of the latest reviews per location. This Actor works as an unofficial Tripadvisor reviews API: up to 4,490 reviews per place, with filters and no partner approval.

How fresh are the reviews?

Each run reads Tripadvisor at the time of the run. An identical request (same place, filters and size) is reused for up to 20 hours to keep repeated runs cheap; the Actor keeps a small key-value store named dfs-cache-tripadvisor-reviews-scraper in your account for this. A daily schedule therefore always gets a fresh reading.

How many reviews can I get per place?

Up to 4,490 per place (and per traveller type when that filter is on) โ€” the limit of the data source. Places with fewer reviews return what they have.

Does it scrape restaurants and attractions too?

Yes. Hotels, restaurants and attractions were all tested: The Ubud Village Resort & Spa, Ayana Resort Bali, Bebek Bengil (restaurant) and Tegalalang Rice Terrace (attraction).

Why is travelerType empty?

Tripadvisor shows the trip type only as a filter, not on each review in this source. Select traveller types in the input and every row carries the one it was collected under.

Why are subRatings sometimes null?

Reviewers rate individual aspects only optionally, and attractions have none. In our hotel test 14 of 20 reviews carried sub-ratings.

How much does it cost to scrape 1,000 Tripadvisor reviews?

$4 on the free plan (20% below the market leader), $1.52 on Bronze, $0.72 on Gold and above.

Can I use Tripadvisor Reviews Scraper with the Apify API?

Yes. Every run can be started, scheduled and read through the Apify API or the official JavaScript and Python clients โ€” see Integrations above.

Can I use it through an MCP server?

Yes. Add https://mcp.apify.com to your MCP client (Claude Desktop, Claude Code, ChatGPT, Cursor) and the agent can call lergassy/tripadvisor-reviews-scraper with links or place names.

Can I integrate it with other apps?

Yes โ€” n8n, Make, Zapier, Google Sheets, Airtable, Slack and webhooks are available from the Integrations tab of the Actor.

Do I get one row per review?

Yes. One row per review; photos and sub-ratings are nested in the same row. Place summaries are separate place rows and only when you switch them on.

Your feedback

Found a field that is wrong, a link format that is not accepted, or a feature you need? Open an issue in the Issues tab โ€” we read every one and reply quickly. If the Actor saves you time, a review on the Store page helps other buyers find it.

You might also like

ActorWhat it does
Agoda Reviews ScraperAgoda hotel guest reviews and ratings, including the Booking.com review pool on the same page
Booking Reviews ScraperBooking.com guest reviews: score, liked and disliked text, stay date, guest country and type
Trip.com ScraperTrip.com hotels with live room rates for your dates, availability and reviews
Airbnb Reviews ScraperAirbnb listing reviews: rating, full text, date, reviewer and host response
Google Hotels ScraperGoogle Hotels prices by city and dates: nightly and total price, rating, review count

Also known as: Tripadvisor scraper, Tripadvisor API, Tripadvisor review scraper, Tripadvisor reviews API, hotel reviews scraper, restaurant reviews scraper, attraction reviews, owner responses export, Tripadvisor review monitoring.