Tripadvisor Reviews Scraper — Ratings, Text & Owner Replies avatar

Tripadvisor Reviews Scraper — Ratings, Text & Owner Replies

Pricing

from $3.00 / 1,000 review scrapeds

Go to Apify Store
Tripadvisor Reviews Scraper — Ratings, Text & Owner Replies

Tripadvisor Reviews Scraper — Ratings, Text & Owner Replies

Scrape all reviews from any Tripadvisor hotel, restaurant, or attraction URL — rating, title, text, trip type, date of stay, reviewer, helpful votes, and owner responses. Auto-paginates. MCP-ready.

Pricing

from $3.00 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

18 hours ago

Last modified

Share

Tripadvisor Reviews Scraper

Scrape every review from any Tripadvisor hotel, restaurant, or attraction page — just paste the listing URL. Returns clean, structured JSON with the rating, title, full review text, trip type, date of stay, reviewer name and location, helpful votes, and the owner/management response. Auto-paginates through the whole review history. Built for AI agents (MCP-ready) and analysts alike.

What it does

Give it one or more Tripadvisor listing URLs and it returns one row per review. It handles the three main listing types Tripadvisor exposes:

  • Hotels (/Hotel_Review-...)
  • Restaurants (/Restaurant_Review-...)
  • Attractions / things to do (/Attraction_Review-...)

It walks the review pages in order (-or10, -or20, …) until it reaches your maxReviewsPerUrl cap or runs out of reviews, so you get the full review history, not just the first page.

When to use it

  • Reputation monitoring — track new reviews and owner replies for your own or competitor properties.
  • Sentiment & NLP corpora — pull thousands of reviews to feed a sentiment model, topic model, or LLM summary.
  • Market & location research — compare guest sentiment across hotels, restaurants, or attractions in a city.
  • AI agents — a natural single-URL-in, structured-JSON-out tool. Ask an agent to "get the latest Tripadvisor reviews for this hotel" and it can call this actor directly via MCP.

When NOT to use it: this scrapes reviews for a known listing URL. To search for listings (find hotels in a city, get ratings/prices/contact info), use the companion tripadvisor-scraper.

Output

One dataset record per review:

FieldDescription
reviewIdTripadvisor's internal review ID
listingNameName of the hotel/restaurant/attraction
listingUrlThe listing URL you provided
ratingStar rating, 1–5
titleReview headline
textFull review body (expanded past "Read more")
tripTypeFamily, Couples, Solo, Business, Friends (hotels)
dateOfStayMonth/period of the visit
publishedDateWhen the review was written
reviewerNameReviewer display name
reviewerLocationReviewer home town (when shown)
reviewerContributionsNumber of reviews the reviewer has posted
helpfulVotesHow many users found the review helpful
ownerResponseManagement/owner reply text (when present)
ownerResponseDateDate of the owner reply
reviewUrlDirect link to the individual review
scrapedAtISO 8601 scrape timestamp

Example record

{
"reviewId": "1066352123",
"listingName": "The Michelangelo New York",
"listingUrl": "https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-...",
"rating": 5,
"title": "My stay at the Michelangelo",
"text": "The Michelangelo is an oasis in the heart of Manhattan. Very quiet and staff especially courteous...",
"tripType": "family",
"dateOfStay": "June 2026",
"publishedDate": "Jun 2026",
"reviewerName": "Marcus P P",
"reviewerLocation": "New Brunswick, New Jersey",
"reviewerContributions": 4,
"helpfulVotes": 0,
"ownerResponse": null,
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g60763-d93589-r1066352123-...",
"scrapedAt": "2026-07-01T12:35:02.068Z"
}

Pricing

Pay per result. You are charged $0.003 per review returned, plus a tiny actor-start fee. No monthly rental, no subscription. A 100-review pull costs about $0.30. Your maxReviewsPerUrl setting is your hard cost cap — the actor prints the maximum cost at the start of every run and the actual billed amount at the end.

EventPrice
Review scraped$0.003
Actor start$0.00005 (per GB RAM)

Input

{
"startUrls": [
{ "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo-New_York_City_New_York.html" }
],
"maxReviewsPerUrl": 50
}
FieldTypeDefaultDescription
startUrlsarray of { url }Tripadvisor hotel/restaurant/attraction listing URLs
maxReviewsPerUrlinteger20Max reviews to collect per listing
proxyConfigurationobjectResidential USProxy settings (leave as default)

Using it from an AI agent (MCP)

This actor is exposed through the Apify MCP server as khadinakbar/tripadvisor-reviews-scraper. An agent can call it with a single listing URL and receive structured review JSON back — ideal for "summarize the latest reviews for X" workflows.

Using it via API

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/tripadvisor-reviews-scraper").call(run_input={
"startUrls": [{"url": "https://www.tripadvisor.com/Restaurant_Review-g60763-d425787-Reviews-Katz_s_Deli-New_York_City_New_York.html"}],
"maxReviewsPerUrl": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["rating"], item["title"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('khadinakbar/tripadvisor-reviews-scraper').call({
startUrls: [{ url: 'https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-Empire_State_Building-New_York_City_New_York.html' }],
maxReviewsPerUrl: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

How to get a listing URL

Open the hotel, restaurant, or attraction on tripadvisor.com, then copy the URL from your browser's address bar. It looks like .../Hotel_Review-g60763-d93589-Reviews-....html. Paste that into startUrls. Any -orNN page suffix is stripped automatically, so it doesn't matter which review page you copy from.

Notes & limitations

  • Reviews are returned newest-first, matching Tripadvisor's default order.
  • tripType and dateOfStay are populated for hotel reviews; attractions and restaurants expose fewer of these fields, so they may be null.
  • Some reviewers hide their home town, so reviewerLocation can be null.
  • Tripadvisor is protected by DataDome bot mitigation. This actor clears it with residential US proxies and a browser warm-up, and auto-escalates to a DataImpulse residential fallback tier if IPs get persistently challenged. On the rare occasion when every proxy IP is still blocked, the run finishes with a single _blocked record and a clear message — just retry in 10–15 minutes.

FAQ

Can I scrape multiple listings in one run? Yes — add as many URLs to startUrls as you like. maxReviewsPerUrl applies per listing.

Does it get the full review text or just the preview? Full text — it reads the complete review body, not the truncated "Read more" preview.

Does it include owner/management responses? Yes, when present (ownerResponse + ownerResponseDate).

How many reviews can it get? As many as the listing has; set maxReviewsPerUrl accordingly. Large pulls take longer because each review page is loaded through a real browser.

Which countries/languages? Any Tripadvisor domain listing works. Reviews are returned as displayed on the listing's default (usually English) review view.

This actor collects only publicly available data from Tripadvisor listing pages. You are responsible for how you use the data. Comply with Tripadvisor's Terms of Use, applicable copyright, and data-protection laws (including GDPR/CCPA) — in particular, do not use reviewer names or other personal data in ways that violate privacy law. This tool is provided for lawful research, monitoring, and analysis purposes.