Free Tripadvisor Reviews Scraper
Pricing
from $0.00005 / actor start
Free Tripadvisor Reviews Scraper
Free Tripadvisor review scraper. No per-result charge, pay only Apify proxy/compute costs. Get full review text, trip type, owner replies, and rating subratings via Tripadvisor's mobile API, no browser needed. Bypasses bot checks automatically. 10 runs/day, 5 listings/run.
Pricing
from $0.00005 / actor start
Rating
0.0
(0)
Developer
Vladimir Efimenco
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Scrape Tripadvisor reviews for free, built on the site's internal mobile API. No per-result charge, no rental fee: this is a free Tripadvisor review scraper, you only cover Apify's own platform usage (proxy traffic and compute), nothing goes to the developer. Returns full review content alongside reviewer details, owner replies, trip type, visit dates, and category subratings, for hotels, restaurants, attractions, and attraction products (tours/activities).
Looking for a way to extract Tripadvisor reviews without paying per review? This free actor calls the same internal API the Tripadvisor app uses, so there's no browser session to maintain and no layout changes to break it, at zero cost beyond your own proxy and compute usage.
🆓 Free tier limits
This is a free Tripadvisor Reviews Scraper: no charge per result, no rental fee. You only pay Apify for the proxy and compute your run uses, same as you would running any actor with your own proxy. To keep the free plan sustainable, these limits apply:
- 10 runs per day for free-tier accounts. Paid Apify accounts skip this limit.
- Up to 5 hotels per run on the free tier, up to 25 on a paid Apify account.
- No cap on reviews per hotel.
maxResultsis yours to set
A proxy is required to run this actor. Use Apify Proxy (Residential or Datacenter) or plug in your own proxy URLs under "Proxy configuration" in the input, the actor won't start without one.
⚡ Why use this free Tripadvisor Reviews Scraper
- Free, not a limited trial. No credit card charge per result and no expiring trial period. Most Tripadvisor review scrapers you find charge per row from the first run; this one only bills you for the proxy and compute you'd pay for anyway.
- No browser session needed to get past bot checks. Most tools that scrape Tripadvisor reviews for free have to run a full browser session just to clear Tripadvisor's bot protection before they can call the review data. This one talks to the mobile API directly, so there's no session to maintain and no captcha retries burning through your run.
- Full dataset, not a summary. Every review comes with the review text, rating, trip type, visit date, reviewer profile info, and the owner's reply where present.
- Listing-wide rating breakdown included. Overall rating distribution and category subratings are attached alongside each review.
- The most filters of any free Tripadvisor reviews scraper on the store. Rating, date range (relative period or exact date), month, trip type, and keyword search that can run server-side or locally, all in the same input.
- Batch by design. Scrape up to 5 listings in a single free run.
🎯 Who uses this free Tripadvisor Reviews Scraper
- Hospitality market researchers & analysts studying guest sentiment, seasonal patterns, or trip-type breakdowns (business vs family vs solo travel) across hotels, restaurants, or attractions.
- Competitor benchmarking teams comparing review scores and subratings across properties in the same city or category.
- Reputation management agencies tracking new reviews and owner responses across a portfolio of client properties, filtered to a specific time window.
- Sentiment analysis and NLP teams feeding review text into topic models or classifiers, filtered by rating or keyword before it ever hits their pipeline.
- Developers building hospitality dashboards or review aggregators who need clean structured Tripadvisor data instead of scraping pages by hand, without a per-result bill.
🧾 What you get, per review
- Review content: title, text, rating, published date, visited date, trip type, tip
- Reviewer info: name, profile URL, avatar, hometown, contributions, helpful votes
- Owner reply: reply text and date, if the business responded
- Category subratings: e.g. Service, Value, Location, depending on listing type
- Listing-wide stats: total review count, overall rating, rating distribution
- Keyword match: whether the search query matched this review
🔍 How keyword search works
The search field is a single query, same as what you'd type into Tripadvisor's own review search box.
searchIsLocalFilterunchecked (default): the query is sent to Tripadvisor as a server-side filter. Only matching reviews are returned, and every one of them is markedkeyword_match: true.searchIsLocalFilterchecked: the query is not sent to Tripadvisor. Every review is still fetched and returned, but each one is checked locally against the title and text, and gets akeyword_matchflag showing whether it was found.
Use the checked option when you want the full, unfiltered review set but still want to know which reviews mention your keyword.
📅 How the date filter works
sincePeriod: a relative window (last 1 month / 3 months / 6 months / 1 year), computed from today's date.sinceDate: an exact calendar date. If set, it overridessincePeriod.
Leave both empty to fetch reviews from any date.
🔧 Input options
| Field | Description |
|---|---|
listingUrls | One or more Tripadvisor listing page URLs (hotel, restaurant, attraction, or attraction product); max 5 on the free tier |
maxResults | Max reviews to collect per listing. Leave empty to collect all available |
rating | Filter by star rating (1-5), multi-select |
sincePeriod | Relative date window: last 1/3/6 months or 1 year |
sinceDate | Exact start date, overrides sincePeriod if set |
months | Filter reviews written in specific calendar months, multi-select |
type | Filter by trip type: Business, Couples, Family, Friends, Solo |
search | Keyword to search for in reviews |
searchIsLocalFilter | If checked, search tags reviews locally instead of filtering them via Tripadvisor |
proxyConfiguration | Required. Apify Proxy (Residential/Datacenter) or your own proxy URLs |
Example input
Reviews mentioning "friendly" from couples, families, and friends trips since the start of 2026, tagged locally rather than filtered server-side:
{"listingUrls": [{ "url": "https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html" }],"maxResults": 1000,"search": "friendly","searchIsLocalFilter": true,"sinceDate": "2026-01-01","type": ["Couples", "Family", "Friends"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
📊 Data Fields
📝 Review Details
| Field | Description |
|---|---|
listing_url | Tripadvisor listing page URL this review belongs to |
listing_title | Title of the listing |
review_id | Unique ID of the review |
rating | Reviewer's overall star rating |
title / text | Review title and body text (HTML) |
published_date | Localized date the review was published |
visited_date | Localized date the reviewer visited |
trip_type | Business, Couples, Family, Friends, or Solo |
tip | Reviewer's tip for future visitors, if provided |
helpful_votes | Number of helpful votes the review received |
photos | URLs of photos attached to the review |
review_url | Shareable public URL of the review |
👤 Reviewer
| Field | Description |
|---|---|
author | Name, profile URL, avatar, hometown, contributions, helpful votes count |
🏢 Owner
| Field | Description |
|---|---|
owner_response | Author, published date, report URL, and reply text, if the owner replied |
⭐ Ratings & Matching
| Field | Description |
|---|---|
subratings | Category subratings (e.g. Service, Value, Location), keyed by category label |
reviews_stats | Listing-wide aggregate stats: total reviews, overall rating, rating distribution |
keyword_query | The search keyword provided in actor input, if any |
keyword_match | True if the query matched this review, either verified locally or because Tripadvisor's own filter already applied it |
📋 Example output
[{"listing_title": "Restaurant Armònia","listing_url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html","reviews_stats": {"reviews_total": 685,"listing_rating": 4.9,"listing_rating_text": "Excellent","ratings_stats": {"Excellent": {"count": 641,"percentage": 93},"Good": {"count": 23,"percentage": 3},"Average": {"count": 9,"percentage": 1},"Poor": {"count": 6,"percentage": 1},"Terrible": {"count": 7,"percentage": 1}},"subratings_stats": {"atmosphere": 4.9,"food": 4.8,"service": 4.9,"value": 4.7}},"review_id": "1072224757","rating": 5,"title": "Superbe soirée","text": "Superbe soirée <br />Dîner délicieux <br />Et service impeccable et très accueillants <br />Ciro s’est occupé de nous avec beaucoup de professionnalisme.","text_clean": "Superbe soirée \nDîner délicieux \nEt service impeccable et très accueillants \nCiro s’est occupé de nous avec beaucoup de professionnalisme.","published_date": "Today","visited_date": "Aug 2026","trip_type": "Friends","tip": null,"helpful_votes": 0,"photos": [],"review_url": "https://www.tripadvisor.com/ShowUserReviews-g187892-d12850867-r1072224757-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html","report_url": "https://www.tripadvisor.com/SocialIapReporting?objectType=Review&contentId=1072224757&locationId=12850867","author": {"name": "alexandra l","profile_url": "https://www.tripadvisor.com/Profile/alexandralH8117TZ","avatar_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/f2/b8/default-avatar-2020-26.jpg","hometown": null,"contributions": 3,"helpful_votes": 0},"owner_response": null,"subratings": {},"keyword_query": "friend","keyword_match": false},{"listing_title": "Restaurant Armònia","listing_url": "https://www.tripadvisor.com/Restaurant_Review-g187892-d12850867-Reviews-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html","reviews_stats": {"reviews_total": 685,"listing_rating": 4.9,"listing_rating_text": "Excellent","ratings_stats": {"Excellent": {"count": 641,"percentage": 93},"Good": {"count": 23,"percentage": 3},"Average": {"count": 9,"percentage": 1},"Poor": {"count": 6,"percentage": 1},"Terrible": {"count": 7,"percentage": 1}},"subratings_stats": {"atmosphere": 4.9,"food": 4.8,"service": 4.9,"value": 4.7}},"review_id": "1071989352","rating": 5,"title": "* Eleganza, qualità e un consiglio costruttivo","text": "Abbiamo trascorso una giornata davvero meravigliosa. Venendo da fuori, abbiamo deciso di passare la giornata in spiaggia e di pranzare nel vostro ristorante: è stato tutto eccellente e ci siamo trovati benissimo.<br /><br />Se posso permettermi un piccolo suggerimento, credo sia un vero peccato che il personale indossi divise in tessuti sintetici, soprattutto con questo caldo. In una struttura così elegante e raffinata, degli abiti in lino e cotone sarebbero molto più in armonia con l’atmosfera dell’hotel e darebbero un’immagine ancora più esclusiva. Tutto qui trasmette classe, mentre le divise attuali, a mio parere, non valorizzano il personale, soprattutto le ragazze.<br /><br />È solo un’osservazione fatta con grande rispetto, perché abbiamo davvero apprezzato la nostra esperienza e speriamo di tornare presto.😎☀️🏖️","text_clean": "Abbiamo trascorso una giornata davvero meravigliosa. Venendo da fuori, abbiamo deciso di passare la giornata in spiaggia e di pranzare nel vostro ristorante: è stato tutto eccellente e ci siamo trovati benissimo.\n\nSe posso permettermi un piccolo suggerimento, credo sia un vero peccato che il personale indossi divise in tessuti sintetici, soprattutto con questo caldo. In una struttura così elegante e raffinata, degli abiti in lino e cotone sarebbero molto più in armonia con l’atmosfera dell’hotel e darebbero un’immagine ancora più esclusiva. Tutto qui trasmette classe, mentre le divise attuali, a mio parere, non valorizzano il personale, soprattutto le ragazze.\n\nÈ solo un’osservazione fatta con grande rispetto, perché abbiamo davvero apprezzato la nostra esperienza e speriamo di tornare presto.😎☀️🏖️","published_date": "2 days ago","visited_date": "Aug 2026","trip_type": "Couples","tip": null,"helpful_votes": 0,"photos": [],"review_url": "https://www.tripadvisor.com/ShowUserReviews-g187892-d12850867-r1071989352-Restaurant_Armonia-Taormina_Province_of_Messina_Sicily.html","report_url": "https://www.tripadvisor.com/SocialIapReporting?objectType=Review&contentId=1071989352&locationId=12850867","author": {"name": "Caro 57","profile_url": "https://www.tripadvisor.com/Profile/CAROLINECARA","avatar_url": "https://dynamic-media-cdn.tripadvisor.com/media/photo-o/1a/f6/eb/6d/default-avatar-2020-19.jpg","hometown": null,"contributions": 3,"helpful_votes": 2},"owner_response": null,"subratings": {},"keyword_query": "friend","keyword_match": false}]
🚀 Running the actor
Via Apify Console
Open the actor page, fill in the input form, and click Start.
Via Apify API: Python
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run_input = {"listingUrls": [{"url": "https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html"}],"maxResults": 1000,"search": "friendly","searchIsLocalFilter": True,"sinceDate": "2026-01-01","type": ["Couples", "Family", "Friends"],"proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],},}run = client.actor("mof1re/tripadvisor-reviews-scraper-browserless").call(run_input=run_input)for review in client.dataset(run["defaultDatasetId"]).iterate_items():print(review["listing_title"], review["rating"], review["title"])
call() blocks until the run finishes. For long runs, use client.actor(...).start(run_input=run_input) instead and fetch the dataset later with the returned run ID.
Via Apify API: Node.js
$npm install apify-client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'your_apify_token' });const input = {listingUrls: [{ url: 'https://www.tripadvisor.com/Hotel_Review-g187849-d19239938-Reviews-INNSiDE_by_Melia_Milano_Torre_GalFa-Milan_Lombardy.html' }],maxResults: 1000,search: 'friendly',searchIsLocalFilter: true,sinceDate: '2026-01-01',type: ['Couples', 'Family', 'Friends'],proxyConfiguration: {useApifyProxy: true,apifyProxyGroups: ['RESIDENTIAL'],},};const run = await client.actor('mof1re/tripadvisor-reviews-scraper-browserless').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Fetched ${items.length} reviews`);
🤖 Use it from Claude via MCP
This actor also runs as a tool inside Claude (or any other MCP-compatible AI client), no code needed. Apify runs a hosted MCP server at https://mcp.apify.com that exposes Actors from Apify Store as callable tools.
Hosted server (recommended)
Add a custom connector in Claude Desktop with server URL https://mcp.apify.com and sign in with your Apify account. The default tool set already includes Actor search and detail lookup, so you can just ask: "Get reviews mentioning 'friendly' for this hotel from couples and family trips since January 2026." Claude finds this actor in Apify Store, checks its input schema, and runs it with the parameters you described.
To skip the search step and expose this actor directly, add it to the tools query parameter:
https://mcp.apify.com?tools=mof1re/tripadvisor-reviews-scraper-browserless
Local stdio server
For clients that don't support the remote URL, run the server locally:
{"mcpServers": {"actors-mcp-server": {"command": "npx","args": ["-y", "@apify/actors-mcp-server"],"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }}}}
To limit the local server to this actor, pass --tools on the command line instead:
npx @apify/actors-mcp-server --tools mof1re/tripadvisor-reviews-scraper-browserless
Full setup and tool reference: Apify MCP server docs.
❓ FAQ
How is this different from other free tools that scrape Tripadvisor reviews? Most either charge per result from the first row or run a browser to clear Tripadvisor's bot checks, and most only filter by one or two fields. This actor calls the mobile API directly, doesn't charge per result, and supports rating, date range, month, trip type, and dual-mode keyword filtering together.
Is this actor really free? Yes. There's no per-result charge. You only pay Apify for the platform usage your run consumes, mainly proxy traffic and compute time, same as running any actor with your own proxy.
Does this scraper need an account or API key? No Tripadvisor account needed to extract the publicly available review data. You need an Apify API token only if you're running it via the API or Python/Node client.
Why not just use Tripadvisor's official API? Tripadvisor's official review API caps out at a handful of reviews per listing and requires a paid key with daily quotas. This actor isn't limited by that beyond the free-tier run limits above.
Can I filter reviews by trip type or visit month? Yes. Set type for business, couples, family, friends, or solo trips, and months for specific calendar months, independent of the date range filter.
Do I need to provide my own proxy? You need a proxy either way. Use Apify Proxy (Residential or Datacenter, billed by Apify at platform rates) or your own proxy URLs. The actor won't run without one set in the input.
Is this legal? Can I scrape publicly available reviews? This tool extracts publicly available review data. You're responsible for complying with the target site's terms of service and applicable data protection laws for your use case.
💳 Pricing
Free. No per-result charge, no rental fee. You're billed by Apify only for platform usage (proxy and compute), not by this actor's developer.
⚠️ Notes
- Limited to 5 listings per run and 10 runs per day, see Free tier limits above.
- A proxy (Apify Proxy or your own) is required to run this actor.
- Data reflects what's publicly listed on tripadvisor.com at the time of the run; the source updates continuously.
🔗 See also
Need reviews from another platform? Check out: