Viator Review Scraper
Pricing
from $3.00 / 1,000 reviews
Viator Review Scraper
Scrape public Viator tour reviews by product URL, code, or city search. Filter by stars, traveler type, date, or keyword. Export rating, text, traveler type, and owner reply. No login.
Pricing
from $3.00 / 1,000 reviews
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Features
Share
Viator Review Scraper — Tour Reviews
Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Viator, Inc. or its affiliates. Data is read from publicly accessible tour and activity review pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.
Scrape public Viator tour and activity reviews into one dataset. Each row has the rating, title, text, publication date, traveler type, helpful votes, reviewer name, owner reply, and the product URL.
Tour operators use this Viator scraper to watch guest feedback on a product. OTAs use it as a Viator reviews API alternative without a partner key. Export JSON or CSV from the dataset with Python, Node.js, cURL, or an MCP client.
Travel suite
| Actor | Role |
|---|---|
| GetYourGuide Tours Scraper | Public GetYourGuide tours: price, rating, review count |
| Viator Review Scraper ◄── you are here | Public Viator tour reviews |
When to use
Use this Actor for a public Viator product URL, a product code, or a city or keyword search when you need the review text, not only the average rating.
Skip it for bookings, private supplier dashboards, and anything behind a login.
Key features
- Product URL, product code, or a city or keyword search, up to 50 products in one run
- Rating, title, full text, date, traveler type, and helpful votes
- Filter by stars, traveler type, Viator or Tripadvisor, published date, or a word in the title or text
- Reviewer name, owner reply, and up to five photo URLs on the same row
- Sort by most recent, most insightful, highest rating, or most helpful
- One saved review per row
Input
| Field | Default | What it does |
|---|---|---|
| Product URLs | sample tour | Public tour page, or a Viator search page |
| Product codes | empty | Code such as 3731COLOSSEUM |
| Max reviews per product | 100 | Stop after this many saved reviews that match the filters |
| Sort | Most insightful | ML_SORTED, DATE, RATING, or HELPFUL_VOTES |
| Search queries | empty | City or keyword, such as Rome Colosseum |
| Max products per search | 5 | Products opened from each search or listing page |
| Star ratings | all | Keep selected stars from 1 to 5 |
| Traveler types | all | COUPLES, FAMILY, FRIENDS, SOLO, BUSINESS |
| Review source | all | all, viator, or tripadvisor |
| Published from | empty | Keep reviews on or after this UTC date |
| Keyword | empty | Word or phrase in the review title or text |
| Proxy | US residential | Required. Datacenter IPs are blocked |
{"startUrls": [{"url": "https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM"}],"maxReviews": 20,"sortBy": "ML_SORTED","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Filters
Filters run after a review is read. A review that does not match is not saved and is not charged. Max reviews counts saved matches for that product. With a published-from date, the run reads newest first and stops that product when it reaches an older review. Each product is scanned up to 3000 reviews.
{"startUrls": [{"url": "https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM"}],"maxReviews": 100,"ratings": ["5", "4"],"travelerTypes": ["COUPLES", "FAMILY"],"reviewSource": "viator","dateFrom": "2026-01-01","reviewKeyword": "guide"}
Search by city
Pass city or keyword searches, or put a Viator search URL in product URLs. The run opens the search results, takes the first products (default 5, up to 50 per page), and scrapes their reviews. One run keeps at most 50 products, including ones you passed directly. searchQuery is the text or listing URL that found the product. It is null when you passed that product yourself.
{"searchQueries": ["Rome Colosseum", "Paris"],"maxProductsPerSearch": 5,"maxReviews": 20,"sortBy": "DATE"}
Destination pages such as /Paris/d479-ttd are often blocked by Viator. Use a search query like Paris Eiffel Tower instead.
Output
| Field | Meaning |
|---|---|
reviewId | Public review id |
productCode | Viator product code |
productTitle | Tour or activity name |
productUrl | Public product page |
searchQuery | Search text or listing URL that found the product. Null for a direct product |
productReviewCount | Total reviews reported for the product |
rating | Stars from 1 to 5 |
title | Review title |
text | Review text |
locale | Language of the text |
publishedAt | Publication time in UTC |
partyType | Travel party, such as COUPLES or FAMILY |
helpfulVotes | Helpful vote count |
reviewerName | Public reviewer name |
isTripadvisor | True when Tripadvisor provided the review |
machineTranslated | True when the text is machine translated |
ownerResponse | Supplier reply, when one is public |
photoCount | Number of traveler photos |
photoUrls | Up to five photo URLs |
scrapedAt | UTC time the row was built |
{"reviewId": "1080010801","productCode": "3731COLOSSEUM","productTitle": "Rome: Colosseum, Roman Forum, and Palatine Hill Guided Tour 2026","productUrl": "https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM","searchQuery": null,"productReviewCount": 25913,"rating": 5,"title": "Great guide","text": "Francesca made the history come to life.","locale": "en","publishedAt": "2026-09-30T00:00:00Z","partyType": "FAMILY","helpfulVotes": 2,"reviewerName": "brooke_e","isTripadvisor": false,"machineTranslated": false,"ownerResponse": null,"photoCount": 0,"photoUrls": []}
Use cases
- Track new guest reviews on a tour you operate
- Compare review text across competing Colosseum or Vatican products
- Build a sentiment file with rating, traveler type, and owner replies
- Feed an MCP assistant a product URL and get the latest reviews as JSON
Integration examples
Replace YOUR_TOKEN and run these against the Actor. These calls start a run and do not set a price.
Node.js
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_TOKEN" });const run = await client.actor("crawloop/viator-review-scraper").call({startUrls: [{url: "https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM",},],maxReviews: 20,sortBy: "ML_SORTED",proxyConfiguration: {useApifyProxy: true,apifyProxyGroups: ["RESIDENTIAL"],apifyProxyCountry: "US",},});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("crawloop/viator-review-scraper").call(run_input={"startUrls": [{"url": "https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM",}],"maxReviews": 20,"sortBy": "ML_SORTED","proxyConfiguration": {"useApifyProxy": True,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US",},})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/crawloop~viator-review-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d "{\"startUrls\":[{\"url\":\"https://www.viator.com/tours/Rome/Colosseum-and-Ancient-Rome-Tour-with-Roman-Forum-and-Palatine-Hill/d511-3731COLOSSEUM\"}],\"maxReviews\":20,\"sortBy\":\"ML_SORTED\",\"proxyConfiguration\":{\"useApifyProxy\":true,\"apifyProxyGroups\":[\"RESIDENTIAL\"],\"apifyProxyCountry\":\"US\"}}"
MCP and AI assistants
Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call this Actor by its Store name.
Example prompts:
- "Run Viator Review Scraper on the Colosseum product URL and return 20 recent reviews as JSON"
- "Summarize the latest Viator reviews for product code 3731COLOSSEUM: rating, traveler type, and complaints"
- "After Viator Review Scraper, run GetYourGuide Tours Scraper for Rome and compare ratings"
Suite next step
For public tour prices and ratings on GetYourGuide, run GetYourGuide Tours Scraper next.
FAQ
Does this need a partner API key or a login?
No. It reads public tour and activity review pages.
Is this a Viator API alternative?
Yes. It collects public reviews from a product URL, a product code, or a city or keyword search. It does not use a partner key.
What is one charged result?
One saved review. Photos and the owner reply sit on that same row.
Why are some runs empty?
Datacenter IPs are blocked. Keep the US residential proxy on. A code that is not a public product returns no rows.
Can I scrape several tours at once?
Yes. Add more product URLs, product codes, or search queries. The run keeps at most 50 products. Each product stops at max reviews.