Viator Review Scraper avatar

Viator Review Scraper

Pricing

from $3.00 / 1,000 reviews

Go to Apify Store
Viator Review Scraper

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

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

8 days ago

Last modified

Categories

Features

Limited permissions

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

ActorRole
GetYourGuide Tours ScraperPublic GetYourGuide tours: price, rating, review count
Viator Review Scraper ◄── you are herePublic 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

FieldDefaultWhat it does
Product URLssample tourPublic tour page, or a Viator search page
Product codesemptyCode such as 3731COLOSSEUM
Max reviews per product100Stop after this many saved reviews that match the filters
SortMost insightfulML_SORTED, DATE, RATING, or HELPFUL_VOTES
Search queriesemptyCity or keyword, such as Rome Colosseum
Max products per search5Products opened from each search or listing page
Star ratingsallKeep selected stars from 1 to 5
Traveler typesallCOUPLES, FAMILY, FRIENDS, SOLO, BUSINESS
Review sourceallall, viator, or tripadvisor
Published fromemptyKeep reviews on or after this UTC date
KeywordemptyWord or phrase in the review title or text
ProxyUS residentialRequired. 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

FieldMeaning
reviewIdPublic review id
productCodeViator product code
productTitleTour or activity name
productUrlPublic product page
searchQuerySearch text or listing URL that found the product. Null for a direct product
productReviewCountTotal reviews reported for the product
ratingStars from 1 to 5
titleReview title
textReview text
localeLanguage of the text
publishedAtPublication time in UTC
partyTypeTravel party, such as COUPLES or FAMILY
helpfulVotesHelpful vote count
reviewerNamePublic reviewer name
isTripadvisorTrue when Tripadvisor provided the review
machineTranslatedTrue when the text is machine translated
ownerResponseSupplier reply, when one is public
photoCountNumber of traveler photos
photoUrlsUp to five photo URLs
scrapedAtUTC 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 ApifyClient
client = 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().items
print(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.

⌂ 换网址