TripAdvisor Restaurant Reviews Scraper - Full History avatar

TripAdvisor Restaurant Reviews Scraper - Full History

Pricing

from $5.00 / 1,000 reviews

Go to Apify Store
TripAdvisor Restaurant Reviews Scraper - Full History

TripAdvisor Restaurant Reviews Scraper - Full History

Every review of a restaurant, hotel or attraction on TripAdvisor, not just the first page: rating, title, full text, reviewer with home city and contribution count, date of visit, trip type and permalink. With change tracking on, each review is billed once per feed and listing. Failures are free.

Pricing

from $5.00 / 1,000 reviews

Rating

0.0

(0)

Developer

Blackcube

Blackcube

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Business Reviews Suite  •  12 Actors, one codebase, one review billed once
Business Reviews Aggregator
6 Review Sites, One API
All in One Reviews Scraper
Every Review Site at Once
Review Monitoring & Alerts
Only New Reviews, Daily
Brand Reviews Scraper API
Every Review of Your Brand
Business Rating Scraper
Star Ratings From 6 Sites
Consumer Reviews Scraper
Complaints, Ratings, Replies
Local Business Reviews Scraper
Restaurants & Hotels
Online Reviews Scraper API
Any Brand, 6 Review Sites
Ecommerce Reviews Scraper
Online Store Reviews API
Multi Source Reviews Scraper
6 Review Sites, One Run
Reputation Management Scraper
6 Review Sites, 1 API
TripAdvisor Restaurant Reviews Scraper
➤ You are here

More from this account: YouTube Transcript Suite · Website Contact & Email Suite · Career Site & ATS Jobs Suite · Google News Suite · Keyword Research Suite · Shopify Store Intelligence Suite · eBay Data Suite · Amazon Reviews Suite · Reddit · Meta Ad Library · Vinted · Trustpilot Review Intelligence Suite · App Store & Google Play Reviews Suite · Etsy Research Suite · YouTube Comments Intelligence Suite · Telegram Channel Intelligence Suite · Google Trends Suite · Amazon Product Data Suite · Polymarket Order Book · Nordic Marketplaces Suite · Google Sheets Suite · TikTok Suite · Snapchat Suite · LinkedIn Public Data Suite · Instagram Suite · Contact Validation Suite · Google Maps Suite · X / Twitter

The Business Reviews suite — 12 Actors, one engine

Every review of a business, from TripAdvisor, in one run and one schema. TripAdvisor only, paged past the first 15 reviews.

No run-start fee, and failures are free. Error rows and the coverage report cost nothing, a re-run with onlyNewSinceLastRun on (the default) never bills a review it already delivered to the same feed on this listing, and a page that could not be read or a business a site does not carry is never billed. A re-run with nothing new is cheap, not free: each business found on a site still bills its profile while profiles are on, and a business whose page was read and lists reviews but billed nothing else is billed once per site as a business checked ($0.015 on Gold; a business page that lists no reviews is free).

⭐ Why this one

Most TripAdvisor scrapers hand you the first page and stop. This pages through the whole history, and every run ends with a coverage row that says whether you actually got everything — how many reviews were read, how many TripAdvisor says exist, and if the walk stopped early, exactly what stopped it. No rival in this category emits any completeness signal at all.

Ratings come back rescaled to 1–5, dates as real ISO timestamps, and a field the site does not publish comes back null rather than as an invented value. And the same engine reads five other review sites — switch sources and this becomes an aggregator without changing anything else.

🎯 Use cases

  • Reputation monitoring — watch TripAdvisor and get alerted the morning a one-star review appears.
  • Competitive research — pull a rival's full review history and read what their customers complain about, in bulk.
  • Due diligence — check a supplier's real standing before signing.
  • Product and CX analytics — feed thousands of verbatim reviews into a sentiment or topic model with no per-site cleanup.

🚀 Recipes

A local venue: restaurant, hotel or attraction

Paste the TripAdvisor page URL straight from your address bar. It pages past the first 15 reviews.

{
"targets": ["https://www.tripadvisor.com/Restaurant_Review-g60713-d446798-Reviews-Eagle_Cafe-San_Francisco_California.html"],
"maxReviewsPerBusiness": 200
}

Complaints only

One and two-star reviews. Filtered reviews are never charged.

{
"targets": ["https://www.tripadvisor.com/Restaurant_Review-g60713-d446798-Reviews-Eagle_Cafe-San_Francisco_California.html"],
"maxRating": 2
}

Daily watch: only what is new

Put this on a schedule. Reviews delivered by a previous run are skipped and never charged again.

{
"targets": ["https://www.tripadvisor.com/Restaurant_Review-g60713-d446798-Reviews-Eagle_Cafe-San_Francisco_California.html"],
"onlyNewSinceLastRun": true,
"stateName": "daily-watch",
"maxCostUsd": 2
}

Ratings only, for tracking a score over time

One row per site with the aggregate rating and total review count wherever the site publishes them, and no review rows at all — set the per-business depth to 0 and each business found bills its profile, never a review. A page that lists reviews but shows no rating, count or name has no profile to bill, so where this listing's pricing lists a business check it bills one business checked instead.

{ "targets": ["https://www.tripadvisor.com/Restaurant_Review-g60713-d446798-Reviews-Eagle_Cafe-San_Francisco_California.html"], "maxReviewsPerBusiness": 0, "includeBusinessProfiles": true }

📚 Coverage, measured

Rivals claim coverage. This publishes it, and every run repeats it per business in a free coverage row.

SiteWhat it coversHow deepMeasured field fillReviews sampled
TripAdvisorRestaurants, hotels, attractionsFull history — paged past the first 15100% text · 100% rating · 100% reviewer · 100% permalink · 91% date163

Those percentages are pooled from 163 real review rows returned by this Actor on the Apify platform on 2026-08-27 — not from one sample page. Each one is also a floor asserted in the test suite, so a site that changes its markup fails a test here before it reaches you.

Owner replies: the ownerReply field is on every row, and measured 0% across 2,007 reviews — none of the six sites published a business reply on the pages sampled. It fills when one appears; it is not claimed as coverage.

Not covered, and why — Yelp and Google reviews are deliberately absent. Both were tested and neither can be delivered at a quality worth charging for, so neither is promised. Naming what a tool does not do is cheaper than a refund.

How to scrape TripAdvisor reviews

The only one of the six that covers physical venues. Reviewer home city present on 64% of reviews; the date is the month of the visit, which TripAdvisor omits on 9% of cards.

What comes back: rating, title, text, reviewer, home city, contributions, date of visit, trip type, permalink.

How to point at it: paste the TripAdvisor page URL for the business straight from your browser's address bar.

📥 Input

FieldWhat it does
targetsA review page URL, straight from your address bar.
sourcesDefaults to TripAdvisor. Set it wider and the same run reads the other five sites too.
maxReviewsPerBusinessHow deep to read on each site, per business.
maxReviewsTotalA ceiling on billable rows for the whole run.
includeBusinessProfilesOne row per business per site: its name, plus aggregate rating, total review count, address and category wherever the site publishes them.
onlyNewSinceLastRunSkip and never re-charge reviews a previous run of the same feed on this listing already delivered.
stateNameName a feed so two schedules track separately.
minRating / maxRatingKeep only a rating band. Filtered reviews are free.
newerThanKeep only reviews published on or after a date.
maxCostUsdHard spend ceiling for the run.

No proxy settings. Unblocking is handled and priced in. You never configure infrastructure.

📤 Output

Four row types, one dataset. Only review and business rows are charged as rows. Where the pricing lists a business checked, that is charged per business and site and adds no row of its own — see Pricing.

RowWhat it is
reviewOne review: source, business, rating (1–5), title, text, language, ISO date, reviewer with profile link, home city and lifetime review count, helpful votes, the owner's reply where the site publishes one, and for travel reviews the date of visit and trip type.
businessOne business as one site sees it: name and page URL, plus aggregate rating, total review count, address and category wherever the site publishes them.
coverageFree. Per business per site: reviews read, how many were new, how many the site holds in total, whether the walk reached the end, and if not, exactly what stopped it.
errorFree. Anything that could not be read, with a stable machine-readable reason. Nothing you typed is ever dropped in silence.

💰 Pricing

Pay per review. Failures are free and there is no run-start fee.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
review$10.00$8.30$6.30$5.00$5.00$5.00
business profile$30.00$25.00$19.00$15.00$15.00$15.00
business page checked, nothing new billed$30.00$25.00$19.00$15.00$15.00$15.00

Prices are per 1,000. Your tier is your Apify plan.

On the Gold plan, 1,000 reviews cost $5.00 and 1,000 business profiles $15.00. With onlyNewSinceLastRun on, a scheduled re-run of the same feed never charges twice for a review you already have — delivered reviews are skipped, not re-billed. What a re-run with nothing new does bill, per business and per site it reads:

  • one business profile ($0.015 on Gold; $0.03 Free, $0.025 Bronze, $0.019 Silver) while Include business profiles is on, or otherwise one business checked ($0.015 on Gold; $0.03 Free, $0.025 Bronze, $0.019 Silver). Turning profiles off does not make it free.

A page that could not be read, and a business the site does not carry, are never billed.

Free vs paid Apify plan: this Actor runs on the free plan. The free plan's $5 monthly credit buys about 500 reviews at the Free-tier price, fewer with business profiles on (the default); beyond that you need a paid plan, as with every Store Actor.

⏰ Run it on a schedule

This is what the Actor is built for. Set a daily cron (0 7 * * *), leave onlyNewSinceLastRun on, and each morning you get the reviews that appeared overnight and nothing else.

Because already-delivered reviews are never charged again, a busy day bills the new arrivals and a quiet day bills only the per-business charges listed under Pricing — never the same reviews twice. That is what makes a daily watch rational instead of a bill you cancel after a week.

Add maxRating: 2 and the schedule becomes a negative-review alarm.

❓ FAQ

How do I scrape all reviews for a business from TripAdvisor?

Paste the TripAdvisor page URL for the business into targets and run it. Everything comes back in one dataset with one schema.

Do I need a proxy or an account on TripAdvisor?

No. Everything is handled for you and priced into the per-review fee. There is no proxy field to configure and no login anywhere.

How do I export reviews to CSV, Excel or JSON?

Every run's dataset exports to CSV, Excel, JSON, XML or HTML from the Storage tab, or through the Apify API. The dataset ships with three ready-made views: Reviews, Business profiles and the Coverage report.

Can I get only the negative reviews?

Yes — set maxRating to 2. Filtering happens before billing, so the reviews you filtered out are not charged.

How do I know whether I got every review?

Read the free coverage row. It reports how many reviews were read, how many the site says exist in total, whether the walk reached the end, and if not, what stopped it — your own cap, or a limit the site itself imposes.

Does a re-run charge me again for reviews I already have?

No, while onlyNewSinceLastRun is on (the default): reviews delivered by a previous run of the same feed on this listing are skipped and never charged a second time. Each listing remembers its own feeds, so a different stateName, or the same targets on another listing of this suite, bills those reviews again.

What happens if a business is not on one of the sites?

You get a free row saying so: an error row with reason not-found when the site has no such page, a coverage row ending not-on-site when it serves an empty page, or a coverage row ending no-reviews when the business is listed but has no reviews there. No charge. With onlyNewSinceLastRun on, the feed then stops paying to ask again: a page the site says does not exist is rechecked after 14 days, an empty page after 7, and in between the coverage row reads not-found-recently.

Why are Yelp and Google reviews not included?

Both were tested and neither could be delivered at a standard worth charging for, so neither is promised. The six sites this engine reads are the ones that were verified to work.

Is this affiliated with TripAdvisor?

No. This is an independent tool and is not affiliated with, endorsed by or sponsored by TripAdvisor, Trustpilot, Sitejabber, ResellerRatings, ConsumerAffairs and PissedConsumer. It reads only publicly available pages.

🛟 Support

Something not working, or a site you want added? Open an issue on the Issues tab — it is read and answered. If the Actor does what you needed, a rating on the listing helps more than you would think.

Looking for the full aggregator? → Business Reviews Aggregator

Use it from n8n, MCP, the API or a schedule

Built to be called by a workflow, not only from the Store form. The Actor is vonsensey/tripadvisor-restaurant-reviews-scraper-api; every snippet below sends {}, which runs the defaults shown on the form — replace it with your own input.

n8n

Install the Apify community node (@apify/n8n-nodes-apify under Settings → Community Nodes, or search "Apify" on n8n Cloud). Add Apify → Run Actor with Actor vonsensey/tripadvisor-restaurant-reviews-scraper-api and your input JSON, then Apify → Get Dataset Items on the run's defaultDatasetId and pipe the rows anywhere. For scheduled runs, the On new Apify Event trigger fires when a run of this Actor finishes.

MCP (Claude, Cursor, VS Code, any MCP client)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vonsensey/tripadvisor-restaurant-reviews-scraper-api",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
}

Your agent then calls vonsensey/tripadvisor-restaurant-reviews-scraper-api as a tool with the same input the form takes and reads the dataset back.

REST API (one call, rows in the response)

curl -X POST "https://api.apify.com/v2/acts/vonsensey~tripadvisor-restaurant-reviews-scraper-api/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d '{}'

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("vonsensey/tripadvisor-restaurant-reviews-scraper-api").call(run_input={})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('vonsensey/tripadvisor-restaurant-reviews-scraper-api').call({});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Make, Zapier, LangChain, CrewAI

The Apify app in Make and Zapier has a Run an Actor module: pick vonsensey/tripadvisor-restaurant-reviews-scraper-api. In LangChain and CrewAI the Apify tool wrappers take the same Actor id. A daily schedule needs nothing but the Console: Schedules → Create → this Actor → cron, and the dataset fills on its own.

Run it without configuring anything — Scrape all TripAdvisor reviews of a place, a ready-made example you can start as-is or copy.

Use cases

  • Watch every site at once. One domain in, and the reviews come back from six review sites in one schema — with a per-source coverage row saying whether you got everything or hit a limit.
  • Catch a one-star review the morning it lands. A daily schedule returns only what is new; already-delivered reviews are never charged again, so a quiet day bills only the per-business charges listed under Pricing, never the same reviews twice.
  • Read a competitor's whole review history. Full pagination, not the first page, with the site's own total review count beside what was actually read.
  • Feed reviews to a model without a cleaning pass. Ratings rescaled to 1-5, dates as real ISO timestamps, and a field the site does not publish comes back null rather than invented.

Run it on a schedule

A one-off pull answers a question; a schedule answers it every day without you. Open Schedules in the Apify Console, point a cron at this Actor, and the dataset keeps filling on its own — no server, no cron box, no babysitting. Everything here is built to be re-run: you are billed per review delivered, and a scheduled run that finds nothing new bills only the per-business charges listed under Pricing, never the same reviews twice.

FAQ

Which review sites does this cover?

TripAdvisor (restaurants, hotels and attractions), Trustpilot, Sitejabber, ResellerRatings, ConsumerAffairs and PissedConsumer. Every one of them was verified returning real, parseable reviews on the Apify platform before the listing was written, and the measured field fill rate for each is published in the README.

Why are Yelp and Google reviews not included?

Both were tested and neither could be delivered at a standard worth charging for, so neither is promised. Naming what a tool does not do is cheaper than a refund, and the six sites that are included are the ones that were verified to work.

Do I need a proxy or an account on any of these sites?

No. Unblocking is handled and priced into the per-review fee. There is no proxy field to configure anywhere in the suite and no login on any site.

Does a scheduled re-run charge me again for reviews I already have?

No, while onlyNewSinceLastRun is on (the default): reviews a previous run of the same feed on this listing delivered are skipped and never charged a second time (a review is remembered for 120 days after a run last saw it), which is what makes a daily watch rational rather than a bill you cancel.


Something wrong, or a field you need that is missing? Open an issue on the Issues tab — it is read and it gets fixed. If this saved you time, a rating on the Store page helps the next person find it.