Home / Tools / Tripadvisor Reviews Scraper
E-commerce & reviews
Tripadvisor Reviews Scraper
Get Tripadvisor reviews for any hotel, restaurant or attraction: text, star rating, date, trip date, sub-ratings, photos, owner responses and reviewer info. Paste URLs or search "hotels in Lisbon". Filter by stars, traveler type, month, language or date. No blocking, no proxies.
- Price: $1 per 1,000 × review
- Prefilled example: finished in 11 s on Oct 19, 2026 (Saved 20 review(s) from 1 place(s).)
- Works with: Apify Console, REST API, Python, JavaScript, MCP (Claude, Cursor, VS Code), n8n, Make, Zapier
- Last updated: 2026-10-19
Sample output
| Place | Rating | Review title | Published | Lang |
|---|---|---|---|---|
| Eiffel Tower | 4 | Worth it. | 2026-10-16 | en |
| Eiffel Tower | 1 | Aason | 2026-10-15 | en |
| Eiffel Tower | 5 | A majestic iconic structure symbo… | 2026-10-14 | en |
Real rows from the prefilled example run (Oct 19, 2026), 5 of 34+ fields shown. Export as JSON, CSV, Excel or HTML, or read them through the API.
Full JSON of one real output row (8 rows in the example dataset)
{
"rowType": "review",
"placeId": "188151",
"placeName": "Eiffel Tower",
"placeType": "attraction",
"placeUrl": "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html",
"placeAddress": "Av. Gustave Eiffel, 75007, Paris, FR",
"placeRating": 4.6,
"placeReviewsCount": 144121,
"input": "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html",
"reviewId": "1082005171",
"reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187147-d188151-r1082005171-Eiffel_Tower-Paris_Ile_de_France.html",
"rating": 4,
"title": "Worth it.",
"text": "You get a time on your ticket. Head there earlier but no need to be that early. You enter one of the two check points that get you under the tower in the square. Then you go to your Color. Green if you have the elevator up. You wait in line. The time is posted. You go up the elev...",
"publishedAt": "2026-10-16T08:11:07Z",
"publishedDate": "2026-10-16",
"visitDate": "2026-10",
"language": "en",
"originalLanguage": "en",
"isTranslated": false,
"subRatings": null,
"photos": [],
"photoCount": 0,
"ownerResponse": null,
"ownerResponseTitle": null,
"ownerResponseDate": null,
"hasOwnerResponse": false,
"position": 1,
"reviewerName": "R M",
"reviewerProfileUrl": "https://www.tripadvisor.com/Profile/Shadfax1",
"reviewerLocation": "Calgary, Canada",
"reviewerReviewsCount": 27,
"reviewerAvatarUrl": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/ee/db/default-avatar-2020-10.jpg",
"scrapedAt": "2026-10-19T10:00:16Z"
}Output fields
From the Actor's dataset schema. Every row has the same flat shape, so it drops straight into a spreadsheet, a database or an agent's context.
| Field | Type | Description |
|---|---|---|
rowType | string | review, place or error (error rows are free) |
placeId | string | Tripadvisor location id (the d-number in the URL) |
placeName | string | Place name |
placeType | string | hotel, restaurant, attraction, tour, vacation_rental... |
placeUrl | string | Tripadvisor URL of the place |
placeAddress | string | Address |
placeRating | number | Overall Tripadvisor rating (1-5) |
placeReviewsCount | integer | Total reviews on Tripadvisor |
reviewId | string | Tripadvisor review id |
reviewUrl | string | Link to the review |
rating | number | Review star rating (1-5) |
title | string | Review title |
text | string | Review text |
publishedAt | string | Publication timestamp (UTC) |
publishedDate | string | Publication date YYYY-MM-DD |
visitDate | string | Month of the trip YYYY-MM |
language | string | Language of the returned text |
originalLanguage | string | Language the review was written in |
isTranslated | boolean | Text is a Tripadvisor translation |
subRatings | object | Sub-ratings such as Value, Rooms, Location, Cleanliness, Service, Sleep Quality |
photos | array | Photo URLs attached to the review |
photoCount | integer | Number of photos |
ownerResponse | string | Management response text |
ownerResponseDate | string | Management response date |
Pricing
Pay per result, billed by Apify. No subscription and no minimum. Discount tiers apply automatically on paid Apify plans.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Review main Charged once for each Tripadvisor review successfully saved to the dataset. | $0.001 | $0.0009 | $0.0008 | $0.0006 |
| Place summary Charged once for each place summary row successfully saved to the dataset. | $0.003 | $0.003 | $0.003 | $0.003 |
| Actor start Charged once when the Actor run starts. | $0.0001 | $0.0001 | $0.0001 | $0.0001 |
Examples on the Free plan: 100 reviews = $0.10, 1,000 reviews = $1, 10,000 reviews = $10. Apify's Free plan includes $5 of monthly usage credit. Prices read from the Apify API at build time (2026-10-19).
Scheduled price change from 2026-11-02 (Free-plan tier): Review: $0.001 → $0.002. Paid-plan tiers change accordingly. The table shows today's prices.
Example input
This is the prefilled input on the Store page. Keep it and click Start to see real data in seconds.
{
"startUrls": [
"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
],
"maxPlacesPerSearch": 5,
"maxReviewsPerPlace": 20,
"sortBy": "most_recent",
"translateReviews": true,
"includePlaceDetails": false,
"includeReviewerInfo": true
}Use it from code, no-code or an AI agent
cURL (one request, returns rows)
curl -X POST \
"https://api.apify.com/v2/acts/wrenfield-data~tripadvisor-reviews-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls": ["https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"], "maxPlacesPerSearch": 5, "maxReviewsPerPlace": 20, "sortBy": "most_recent", "translateReviews": true, "includePlaceDetails": false, "includeReviewerInfo": true}'Python
# pip install apify-client
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/tripadvisor-reviews-scraper").call(
run_input={
"startUrls": [
"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
],
"maxPlacesPerSearch": 5,
"maxReviewsPerPlace": 20,
"sortBy": "most_recent",
"translateReviews": True,
"includePlaceDetails": False,
"includeReviewerInfo": True
},
max_total_charge_usd=1.00, # hard cap for this run
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)JavaScript / Node
// npm i apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/tripadvisor-reviews-scraper').call({
"startUrls": [
"https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
],
"maxPlacesPerSearch": 5,
"maxReviewsPerPlace": 20,
"sortBy": "most_recent",
"translateReviews": true,
"includePlaceDetails": false,
"includeReviewerInfo": true
}, { maxTotalChargeUsd: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);MCP (Claude, Cursor, VS Code, any MCP client)
{
"mcpServers": {
"wrenfield-tripadvisor-reviews-scraper": {
"url": "https://mcp.apify.com?tools=wrenfield-data/tripadvisor-reviews-scraper"
}
}
}Remote MCP server hosted by Apify. Sign in with OAuth on first use, or send Authorization: Bearer <APIFY_TOKEN>. The tool appears as wrenfield-data--tripadvisor-reviews-scraper. More client setups on the MCP page.
n8n, Make, Zapier
Use the official Apify node or app, pick Run Actor, enter wrenfield-data/tripadvisor-reviews-scraper and paste the input JSON above. Then read the run's dataset items. Ready-made n8n workflows are on the n8n templates page.
FAQ
How much does Tripadvisor Reviews Scraper cost?
$0.001 per review on the Apify Free plan ($1 per 1,000), billed per result by Apify with no subscription. Plus $0.003 per place summary. Plus $0.0001 per actor start. Higher Apify plans get the discounted tiers shown in the pricing table. You can cap any run with a maximum cost.
Is it legal to scrape Tripadvisor reviews?
This Actor does not crawl Tripadvisor itself. It reads publicly visible reviews through a commercial data provider (DataForSEO's Business Data API), so it doesn't bypass any login, CAPTCHA or bot protection. Reviews are copyrighted by their authors and Tripadvisor, and reviewer names are personal data: use the results for analysis, monitoring and research, don't republish review text wholesale, and follow the privacy laws that apply to you (for example GDPR). Turn off Include reviewer info if you don't need it. Ask a lawyer if you are unsure.
How many reviews can I get per place?
Up to 4,490 per request, which is enough for almost every place. For bigger places the Actor automatically splits the job by star rating (5★, 4★...) and removes duplicates, so you can go well beyond that.
Why do I get fewer reviews than the page shows?
Tripadvisor's total counts include reviews in every language and some that are hidden on the site. With Use Tripadvisor translations off, Tripadvisor mostly returns reviews written in the site's language only. Filters (stars, traveler type, months, newer than) also reduce the count.
How do languages work?
By default you get reviews in the language of the URL's site (English for tripadvisor.com), with reviews written in other languages machine-translated by Tripadvisor (isTranslated = true). Set Output language (e.g. es) to get them in another language. To keep only reviews originally written in one language, filter the results on originalLanguage.
Which Tripadvisor sites work?
Any country site: tripadvisor.com, .co.uk, .de, .fr, .it, .es, .com.au, .ca and so on. Reviews come in that site's language (translated if needed). Pagination parts like -or20- are removed automatically so you always start from the top.
How do searches work?
Write what in where, e.g. hotels in Barcelona, Spain, pizza in Portland, Oregon or things to do in Kyoto, Japan, or set Search location once for all queries. Add the country (or the US state) to avoid ambiguity: there is more than one Barcelona and Portland. The location the Actor used is saved in searchLocation on every row. Sponsored results are skipped.
Related tools
Google Shopping Price Comparison
Seller prices by keyword or UPC/EAN barcode, 45 countries.
Walmart Scraper
Prices, stock, sellers, UPC and reviews, with local ZIP pricing.
Home Depot & Lowe's Scraper
Price, store stock, aisle and reviews for any ZIP code.
Shopify Store Scraper
Any Shopify catalog, plus price-drop and restock monitoring.
Compare and plan
Try Tripadvisor Reviews Scraper now
Open it on Apify, keep the prefilled example and click Start. The Apify Free plan includes $5 of monthly credit, no card needed.
Open on Apify