Tripadvisor Reviews Scraper with Place Data avatar

Tripadvisor Reviews Scraper with Place Data

Pricing

from $0.30 / 1,000 tripadvisor reviews

Go to Apify Store
Tripadvisor Reviews Scraper with Place Data

Tripadvisor Reviews Scraper with Place Data

Collect Tripadvisor reviews from public place URLs or a completed Tripadvisor Places Dataset. Save a Dataset row per unique review with ratings, text, dates, owner responses, review photos, and place context. Filter by rating or date, prioritize a language, and optionally include reviewer details.

Pricing

from $0.30 / 1,000 tripadvisor reviews

Rating

0.0

(0)

Developer

DataScraperES

DataScraperES

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Collect one structured Dataset item per Tripadvisor review from public place URLs or a completed Tripadvisor places Dataset. The output combines review text, rating, dates, owner responses, photos, and useful place context in a predictable JSON contract.

What this Actor does

Tripadvisor Reviews Scraper accepts public Tripadvisor place URLs from localized country domains. It extracts the Tripadvisor location ID and follows the mobile review API pages until the requested matching-review limit or source exhaustion. It can also read place IDs and URLs from a completed Dataset produced by the Tripadvisor Places Scraper, which makes place discovery and review collection two separate, composable steps.

Each Dataset item represents one unique review. It includes the review ID and URL, title, text, star rating, publication and travel dates, returned language, owner response, subratings, translation flags, and review photos when Tripadvisor exposes them. Every row also carries a compact placeInfo object with the place name, category, rating, review count, and URL. The mobile review route does not return the place address, coordinates, ranking, or contact details, so those keys are present but null. Reviewer information is omitted by default and can be enabled explicitly.

The Actor is designed for review monitoring, local SEO research, hospitality analysis, reputation workflows, and historical snapshots. It keeps collection bounded and finishes with a partial collection report when a requested place cannot be collected, while already written rows remain available in the Dataset.

Use cases

  • Build review datasets for hotels, restaurants, attractions, tours, and other Tripadvisor places.
  • Monitor new reviews by combining a recurring run with lastReviewDate.
  • Compare ratings, owner-response coverage, review language, and review text across places.
  • Feed structured reviews into sentiment analysis, dashboards, spreadsheets, or a data warehouse.
  • Discover places with the Tripadvisor Places Scraper and pass its completed Dataset directly to this Actor.

How to use

  1. Open the Actor in Apify Console.
  2. Paste one or more public Tripadvisor place URLs, or provide a completed places Dataset ID.
  3. Set the review limit and filters if needed, then click Start and open the Dataset when the run finishes.

For a first run, use one place URL and a small maxItemsPerQuery value. The default reviewer setting keeps profile data out of the Dataset.

Input

Use startUrls for up to 20 public Tripadvisor place or review URLs. The URL must contain a Tripadvisor location ID in a d<location_id> segment; the Actor does not need to load the web page. sourceDatasetId is an alternative or additional input for a completed Tripadvisor places Dataset. Every item must contain a numeric id or locationId, or a public Tripadvisor webUrl or sourceUrl. Finish source collection first. The source Dataset must contain at most 50,000 items and remain unchanged while it is read.

maxItemsPerQuery defaults to 50 and accepts 1 to 10,000 reviews per place. maxTotalItemsPerRun defaults to 10,000 and caps the complete run at 50,000 reviews. Both are maximums: a place may have fewer available reviews, and the source may stop providing additional pages.

scrapeReviewerInfo defaults to false. Set it to true only when the public reviewer fields are necessary for your use case. reviewRatings accepts ALL_REVIEW_RATINGS or one or more values from 1 to 5. reviewsLanguages accepts no language filter or one language code; the Actor always sends an explicit language filter so the source does not silently fall back to English. lastReviewDate accepts an inclusive YYYY-MM-DD cutoff. Select a date from the calendar or enter a real date such as 2026-10-21; leave it empty for no date filter. Invalid dates must be corrected before starting a run. The cutoff is applied by the source as a since filter; the Actor keeps a per-row date check for reviews whose absolute date is exposed. Tripadvisor reports recent reviews with relative text such as 3 weeks ago, so those rows carry a date approximated from that text. disableMachineTranslations is accepted for input compatibility but the mobile review route has no equivalent toggle; use isMachineTranslated and originalLanguage in the output.

The source can include reviews in other languages after prioritizing the selected language. lang and originalLanguage remain null when the source does not identify the individual review's language. Month-only publication dates are also approximate; the source date filter remains authoritative for these rows.

This is the exact input used for the representative output below:

{
"startUrls": [
{
"url": "https://www.tripadvisor.com/Restaurant_Review-g60750-d4725725-Reviews-Dockside_1953-San_Diego_California.html"
}
],
"maxItemsPerQuery": 45,
"maxTotalItemsPerRun": 45,
"scrapeReviewerInfo": false,
"lastReviewDate": "",
"disableMachineTranslations": false,
"reviewRatings": [
"ALL_REVIEW_RATINGS"
],
"reviewsLanguages": [
"ALL_REVIEW_LANGUAGES"
]
}
{
"startUrls": [
{
"url": "https://www.tripadvisor.com/Restaurant_Review-g60750-d4725725-Reviews-Dockside_1953-San_Diego_California.html"
}
],
"sourceDatasetId": "",
"maxItemsPerQuery": 50,
"maxTotalItemsPerRun": 10000,
"scrapeReviewerInfo": false,
"lastReviewDate": "",
"disableMachineTranslations": false,
"reviewRatings": ["ALL_REVIEW_RATINGS"],
"reviewsLanguages": ["ALL_REVIEW_LANGUAGES"]
}

Output

The default Dataset contains one item per unique review ID. placeInfo is repeated on each review so the Dataset can be filtered or exported without a separate join. user is null unless scrapeReviewerInfo is enabled. Empty filtered results are valid and finish without review rows. Reviews are saved as pages arrive, so a source that remains unavailable preserves earlier results with status: partial in the Collection report. Unavailable places do not cause an error termination; check this report before treating a run as complete. The same applies when the collection time budget is exhausted. Invalid input or unverified saved output can still stop the run with an error. The Collection report output summarizes saved reviews, requested and completed places, the global limit, and any incomplete places. If the same run restarts, already saved review IDs are checked before collection continues; corrupt or unrelated saved output causes the run to stop. Apify can export the Dataset as JSON, JSONL, CSV, Excel, XML, and other supported formats.

This is the complete Dataset item from a real successful execution:

{
"id": "1078222095",
"url": "https://www.tripadvisor.com/ShowUserReviews-g60750-d4725725-r1078222095-Dockside_1953-San_Diego_California.html",
"title": "Easy free parking with resort style dining",
"lang": null,
"originalLanguage": null,
"locationId": "4725725",
"publishedDate": "2026-09-30",
"publishedPlatform": null,
"rating": 5,
"helpfulVotes": null,
"travelDate": "Sep 2026",
"text": "Beautiful outdoor seating with water and small beach views. It was very resort like with a great brunch menu. Service was wonderful and serving sizes are huge.",
"reviewType": "REVIEW",
"ownerResponse": {
"id": null,
"lang": null,
"publishedDate": "2026-09-19",
"connection": null,
"responder": "Ryan Wilson",
"text": "Dear Renee, thank you for dining with us and for taking the time to share your experience! We're delighted to hear you enjoyed the easy complimentary parking, beautiful waterfront setting, and resort-style atmosphere. It's wonderful that our brunch menu, generous portions, and attentive service helped make your visit so memorable. We appreciate your kind feedback and look forward to welcoming you back for another relaxing meal by the water soon.",
"title": null
},
"subratings": [],
"isMachineTranslated": false,
"isMachineTranslatable": null,
"photos": [],
"user": null,
"placeInfo": {
"id": "4725725",
"name": "Dockside 1953",
"type": "restaurant",
"category": "restaurant",
"categoryName": "Restaurant",
"locationString": null,
"latitude": null,
"longitude": null,
"rating": 4.7,
"numberOfReviews": 1267,
"ranking": null,
"webUrl": "https://www.tripadvisor.com/Restaurant_Review-g60750-d4725725-Reviews-Dockside_1953-San_Diego_California.html",
"website": null,
"address": null,
"addressObj": null,
"phone": null,
"email": null,
"photo": null
},
"sourceUrl": "https://www.tripadvisor.com/Restaurant_Review-g60750-d4725725-Reviews-Dockside_1953-San_Diego_California.html",
"scrapedAt": "2026-10-21T15:30:05.858391+00:00"
}

publishedDate and the owner-response publishedDate are absolute YYYY-MM-DD values when the source exposes them. Recent reviews are returned only as relative text such as 3 weeks ago, so those rows carry a date approximated from that text. lang and originalLanguage remain null when the source does not identify the individual review language. An English machine translation is identified by lang: "en" and isMachineTranslated: true, while its original language remains unknown.

Pricing

The Actor charges only when it saves one unique Tripadvisor review as a row in the default Dataset. Place lookups, filtered-out reviews, failed reviews, empty results, and starting a run do not create a review charge. There is no separate run-start fee. The actual billing unit is one saved review; the per-1,000 figures below are comparison equivalents.

Apify plan tierPrice per reviewEquivalent per 1,000 reviews
Free$0.000400$0.40
Bronze$0.000360$0.36
Silver$0.000320$0.32
Gold$0.000300$0.30
Platinum$0.000300$0.30
Diamond$0.000300$0.30

The price depends on the customer's Apify subscription tier, not the number of reviews in a run. A run that ends incomplete can still charge for review rows it successfully saved; unavailable or undelivered reviews are not charged as review rows.

ActorBest for
Tripadvisor Places & Ratings Data ScraperDiscovering Tripadvisor hotels, restaurants, attractions, and activities before passing their completed Dataset here.
Google Maps Reviews Scraper | Ratings & RepliesCollecting the equivalent review fields from Google Maps for a cross-platform reputation dataset.
Google Maps Reviews Scraper & Sentiment AnalyzerAnalyzing sentiment in Google Maps reviews from Google Maps business URLs.

Limits and data quality

  • The Actor accepts up to 20 direct URLs per run. A completed source Dataset can add more places, but maxTotalItemsPerRun remains the global review cap.
  • When the run reaches its maximum charge budget, it stops successfully with the reviews already saved. The collection report uses stopped_by_budget and chargeLimitReached: true; this means the budget stopped collection, not that every requested review was collected.
  • A review limit is a maximum, not a guarantee. Tripadvisor can expose fewer pages, fewer reviews for a selected rating, or no matching rows.
  • Reviews are deduplicated by their source review ID across all submitted places. Place context is read once per unique location ID.
  • The language option is a source priority and is not a strict language-only guarantee for every page or place.
  • The translation compatibility flag is returned in the request contract, but the current source behavior does not prove that it changes every response. Use the output translation flags to interpret each row.
  • Tripadvisor may change pagination, available fields, or source coverage. Repeated pages, incomplete pagination, unusable review records, or a place that cannot be completed make the run incomplete; successfully written rows remain available. A safety limit of 5,000 source pages per place prevents a run from continuing indefinitely.
  • originalLanguage can be unknown for translated content. Do not infer the original language from the returned text language.
  • Restart recovery applies within the same run and the same input. A new run collects a new snapshot and does not deduplicate against earlier runs.
  • Reviewer profiles are optional output and are disabled by default. Review text and owner responses can still contain personal information written by third parties.

Frequently asked questions

Can I use a review URL instead of a place URL?

Yes. Any public Tripadvisor URL containing the place's d<location_id> segment is accepted, including a public review URL. The Actor uses the location ID and collects reviews for that place.

Does the Actor collect every review?

It follows the available review pages until the per-place limit, the global safety cap, the date cutoff, or source exhaustion. The source can expose fewer reviews or stop pagination, so a high limit is not a guarantee of a complete historical archive.

What happens when I select Spanish or another language?

Tripadvisor prioritizes the selected language. It may fill the remaining page with reviews in another language, so use lang, originalLanguage, and the translation flags to interpret the returned rows.

Can I keep reviewer profiles out of the Dataset?

Yes. Leave scrapeReviewerInfo disabled, which is the default. The review text, place context, and any public owner response remain available.

Responsible use

Use this Actor only for lawful purposes and in accordance with applicable laws, privacy obligations, database rights, and the terms governing the source data. You are responsible for deciding whether collecting, storing, combining, and using review content is permitted for your use case.

Review text and optional reviewer fields can contain personal information. Protect exported Datasets, minimize retention, avoid excessive collection, and honor applicable deletion or opt-out requests.

Support

If a run does not behave as expected, open an issue in the Actor's Issues tab with the run ID, a sanitized input URL, the requested limit and filters, and the observed result. Do not post credentials, cookies, tokens, or private review content.

Python, JavaScript and CSV integration examples