Tripadvisor Reviews Scraper — Ratings, Text & Owner Replies
Pricing
from $3.00 / 1,000 review scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
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:
| Field | Description |
|---|---|
reviewId | Tripadvisor's internal review ID |
listingName | Name of the hotel/restaurant/attraction |
listingUrl | The listing URL you provided |
rating | Star rating, 1–5 |
title | Review headline |
text | Full review body (expanded past "Read more") |
tripType | Family, Couples, Solo, Business, Friends (hotels) |
dateOfStay | Month/period of the visit |
publishedDate | When the review was written |
reviewerName | Reviewer display name |
reviewerLocation | Reviewer home town (when shown) |
reviewerContributions | Number of reviews the reviewer has posted |
helpfulVotes | How many users found the review helpful |
ownerResponse | Management/owner reply text (when present) |
ownerResponseDate | Date of the owner reply |
reviewUrl | Direct link to the individual review |
scrapedAt | ISO 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.
| Event | Price |
|---|---|
| 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}
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array of { url } | — | Tripadvisor hotel/restaurant/attraction listing URLs |
maxReviewsPerUrl | integer | 20 | Max reviews to collect per listing |
proxyConfiguration | object | Residential US | Proxy 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 ApifyClientclient = 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.
tripTypeanddateOfStayare populated for hotel reviews; attractions and restaurants expose fewer of these fields, so they may benull.- Some reviewers hide their home town, so
reviewerLocationcan benull. - 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
_blockedrecord 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.
Legal
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.