Tripadvisor Reviews Scraper - Hotels, Restaurants & More
Pricing
from $2.00 / 1,000 reviews
Tripadvisor Reviews Scraper - Hotels, Restaurants & More
Scrape Tripadvisor reviews of any hotel, restaurant or attraction by URL, id or name: rating, title, text, dates, trip type, sub-ratings, photos and the owner's reply. Bulk fetch thousands per place, refresh by date, filter by keyword or language. $2 per 1,000 reviews.
Pricing
from $2.00 / 1,000 reviews
Rating
0.0
(0)
Developer
ScraperCompany
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Share
Tripadvisor Reviews Scraper downloads the reviews of any hotel, restaurant or attraction on Tripadvisor, newest first. Paste a page URL, a location id or just a place name. Every review keeps its 1-5 bubble rating, title and full text, review and stay date, trip type, sub-ratings (cleanliness, service, value...), language, photos, reviewer profile and the management response. Fetch thousands of reviews per place in seconds, or use Only reviews since for cheap daily refreshes. Use it for reputation monitoring, sentiment analysis, competitor benchmarking and AI training data. Pricing is pay-per-result: $2 per 1,000 reviews ($0.002 each); failed requests and places with no reviews are not charged.
Proxies, retries and anti-bot handling are built in, so you don't need your own proxies or an API key. Start a run, get structured JSON.
What can this Tripadvisor scraper do?
- Hotels, restaurants and attractions: any Tripadvisor
Hotel_Review,Restaurant_RevieworAttraction_Reviewpage. - Three ways to name a place: page URL, numeric location id, or name (+ city).
- Bulk fetch: up to 5,000 reviews per place, pages fetched in parallel.
- Incremental refresh with Only reviews since: a daily run usually returns just the new reviews.
- Full review data: rating, title, text, dates, trip type, sub-ratings, tips, photos, helpful votes, reviewer hometown and contributions.
- Management responses with the responder's role.
- Keyword and language filters applied by Tripadvisor itself.
- Pay per review: you are charged only for reviews returned.
Use cases for Tripadvisor data
- Hotels and restaurants: Monitor new reviews and management responses daily.
- Analysts and data scientists: Run sentiment analysis on sub-ratings, trip types and review text.
- Competitive intelligence: Benchmark competitors' ratings and recurring complaints.
What Tripadvisor data can you extract?
| Field | Description |
|---|---|
reviews[].rating | Bubble rating (1-5) |
reviews[].title / text / language | Review content and language (machine translation flagged) |
reviews[].date / stay_date / submitted_at | When it was written and when the guest visited |
reviews[].trip_type / room_type | Family, couples, business, solo, friends; room booked |
reviews[].sub_ratings | Cleanliness, location, rooms, service, sleep quality, value (as published) |
reviews[].photos / photo_count / tips | Review photos (full-size URLs) and visitor tips |
reviews[].reviewer | Username, hometown, contributions, helpful votes, profile URL |
reviews[].management_reply / management_reply_role | The owner's public answer |
resolved | Place type (hotel, restaurant, attraction), location id, geo id and URL |
total / count / pages_fetched | Total reviews on Tripadvisor and how many were returned |
Every dataset item also carries input (the exact request that was sent), request_id (quote it to support), billed and scraped_at.
How to scrape Tripadvisor reviews
- Open Tripadvisor Reviews Scraper in Apify Console and go to the Input tab.
- Enter Places, one per line: a Tripadvisor URL, a location id (the digits after
-din the URL) or a place name. Set Max reviews per place to cap the cost; add Only reviews since for incremental runs. - Adjust the options if needed. Dates accept an exact date (
2026-12-01) or a relative one (30 daysfrom today), so saved tasks and schedules never go stale. - Click Start and wait for the run to finish.
- Download the results from the Output tab as JSON, CSV, Excel or HTML, or fetch them with the Apify API.
Input example
This is the default input; running the Actor without changes uses it.
{"places": ["https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"],"maxReviews": 100,"includeErrors": true,"maxConcurrency": 3,"maxRetries": 2}
Output example
One dataset item per request (trimmed here; real items contain every field the API returns):
{"endpoint": "/v1/ota/tripadvisor/reviews","input": {"location_id": "208453","max_reviews": 100},"collection_id": "ratecol_0123456789abcdef0123456789abcdef","count": 500,"elapsed_s": 0.412,"limit": 500,"next_page_token": null,"observed_at": "2026-08-07T01:23:45.678Z","offset": 0,"pages_fetched": 25,"property_id": "208453","rating_scale": 5,"resolved": {"geo_id": "60763","input": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html","input_kind": "url","location_id": "208453","name": null,"type": "hotel","url": "https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"},"reviews": [{"author": "Sue B","author_country": null,"date": "2026-09-30","helpful_votes": 0,"language": "en","machine_translated": false,"management_reply": "Dear Gayatri, it's a privilege to learn about your memorable stay with us!","management_reply_role": "Guest Relations","original_language": "en","partner": null,"photo_count": 1,"photos": [{"caption": null,"height": 4032,"id": "888100222","url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/34/ef/55/7e/caption.jpg?w=3024&h=4032&s=1","url_template": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/34/ef/55/7e/caption.jpg?w={width}&h={height}&s=1","width": 3024}],"pinned": false,"provider": null,"rating": 5,"review_id": "1079997723","reviewer": {"avatar_url": null,"contributions": 12,"helpful_votes": 3,"hometown": "Leeds, United Kingdom","id": "B48511BF476A489410637C11C2E7C9F9","profile_url": "https://www.tripadvisor.com/Profile/sueb","username": "sueb","verified": false},"room_type": null,"source": "tripadvisor","stay_date": "2026-09","sub_ratings": {"cleanliness": 5,"location": 5,"rooms": 5,"service": 5,"sleep_quality": 4,"value": 4},"submitted_at": "2026-09-30T14:02:11.120Z","text": "if you are coming to New York hilton times square is the best for location . large spacious rooms great service , friendly staff , highly recommend","tips": ["Ask for a high floor facing Broadway."],"title": "Hilton times square fab hotel","translation_provider": null,"trip_type": "FAMILY","url": "/ShowUserReviews-g60763-d208453-r1079997723-Hilton_New_York_Times_Square-New_York_City_New_York.html"}],"source": "tripadvisor","total": 9023,"warnings": [],"request_id": "req_3f9c0d6e2b8a4c1f9e7d5b3a1c0e8f6d","billed": true,"scraped_at": "2026-10-01T14:03:27.512Z"}
A request that fails is saved with an error message instead (turn off Include failed requests to skip those). Failed requests are never charged.
How much does it cost to scrape Tripadvisor reviews?
This Actor uses pay-per-event pricing: you pay for successful API requests, not for compute time.
| Event | Charged when | Price | Per 1,000 |
|---|---|---|---|
review | One Tripadvisor review returned (rating, title, text, date, trip type, author, photos, management response). | $0.002 | $2.00 |
For example, 1,000 reviews cost $2.00: 100 reviews from each of 10 restaurants, or the latest 20 reviews of 50 hotels. A daily refresh with Only reviews since pays only for the new reviews.
- Failed requests (errors, invalid input, blocked upstream after retries) are free.
- Requests where the source returns nothing at all (no results, nothing priced) are saved but not charged.
- Set Maximum cost per run when you start a run and the Actor stops cleanly before going over it.
FAQ
Do I need proxies or an API key?
No. Proxy rotation, retries and anti-bot handling are built in, and the Actor is ready to run as is. You only pay the per-event prices above.
How am I charged?
One review event ($0.002) per review returned. A place that returns no reviews is not charged, and failed requests are never charged. Max reviews per place caps the cost per place.
How do I find the location id?
It is the number after -d in any Tripadvisor URL: Hotel_Review-g60763-d208453-... is 208453. You can also paste the full URL or the place name.
Does it work for restaurants and attractions?
Yes. Hotels, restaurants and attractions (things to do) all work with the same input. Destination pages (Tourism-g...) are not single places and are rejected.
Are reviewer names personal data?
They are published publicly by Tripadvisor, but they can still be personal data under GDPR. Only collect and store them if you have a lawful basis.
Is it legal to scrape Tripadvisor reviews?
The Actor collects publicly available information that anyone can see without logging in. You are responsible for how you use the results: respect the source site's terms, copyright and privacy law (such as GDPR) and do not collect personal data without a lawful basis. If in doubt, ask a lawyer.
What happens when a request is blocked or rate-limited?
Rate limits (HTTP 429) and temporary errors (5xx) are retried automatically with exponential backoff, respecting Retry-After. If a request still fails it is saved with the error message and not charged, and the rest of the batch keeps going. A run only fails when every request failed.
Why did a request return an error?
Read the error field: validation problems (for example a malformed date or an unknown id) are reported exactly as the API sees them. Fix the input and run again; failed requests cost nothing.
How many requests can I run at once?
Any number per run. The Actor sends up to 3 requests in parallel by default (change it under Run options); larger batches simply take longer.
Use it from your code
Call the Actor from any language through the Apify API. With the JavaScript client (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('scrapercompany/tripadvisor-reviews-scraper').call({"places": ["https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"]});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
With Python (pip install apify-client):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("scrapercompany/tripadvisor-reviews-scraper").call(run_input={"places": ["https://www.tripadvisor.com/Hotel_Review-g60763-d208453-Reviews-Hilton_New_York_Times_Square-New_York_City_New_York.html"],})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
You can also schedule runs, chain them with webhooks, or connect them to Make, Zapier, n8n, Google Sheets and other integrations from the Integrations tab.
Related scrapers
- Hotel Reviews Scraper: hotel reviews from Google, Booking.com, Expedia and Hotels.com too
- Tripadvisor Hotel Prices Scraper: booking-site prices on Tripadvisor
- Google Maps Scraper: places and ratings on Google Maps
Support
Questions, a field you need, or a site that stopped working? Open an issue on the Issues tab. Include the request_id from the dataset item so we can trace the request.