Tripadvisor Reviews Scraper - Hotels, Restaurants & More avatar

Tripadvisor Reviews Scraper - Hotels, Restaurants & More

Pricing

from $2.00 / 1,000 reviews

Go to Apify Store
Tripadvisor Reviews Scraper - Hotels, Restaurants & More

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

ScraperCompany

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

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_Review or Attraction_Review page.
  • 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?

FieldDescription
reviews[].ratingBubble rating (1-5)
reviews[].title / text / languageReview content and language (machine translation flagged)
reviews[].date / stay_date / submitted_atWhen it was written and when the guest visited
reviews[].trip_type / room_typeFamily, couples, business, solo, friends; room booked
reviews[].sub_ratingsCleanliness, location, rooms, service, sleep quality, value (as published)
reviews[].photos / photo_count / tipsReview photos (full-size URLs) and visitor tips
reviews[].reviewerUsername, hometown, contributions, helpful votes, profile URL
reviews[].management_reply / management_reply_roleThe owner's public answer
resolvedPlace type (hotel, restaurant, attraction), location id, geo id and URL
total / count / pages_fetchedTotal 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

  1. Open Tripadvisor Reviews Scraper in Apify Console and go to the Input tab.
  2. Enter Places, one per line: a Tripadvisor URL, a location id (the digits after -d in the URL) or a place name. Set Max reviews per place to cap the cost; add Only reviews since for incremental runs.
  3. Adjust the options if needed. Dates accept an exact date (2026-12-01) or a relative one (30 days from today), so saved tasks and schedules never go stale.
  4. Click Start and wait for the run to finish.
  5. 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.

EventCharged whenPricePer 1,000
reviewOne 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.

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 os
from apify_client import ApifyClient
client = 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.

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.