Viator Tours and Experiences Scraper
parseforge/viator-scraper
TravelE-commerceOther
Scrapes Viator tour and activity listings by destination or activity search query. Returns each tour as a flat row with title, price, rating, review count, duration, and direct booking URL.
- Total users
- 7
- Monthly active
- 2
- Total runs
- 152
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 9 days ago
Overview
Viator Tours and Experiences Scraper
Scrape Viator tours and experiences by destination or activity, up to a million per run. Every listing returns its title, price, rating, review count, duration, and direct booking link. No API key required. Export to CSV, JSON, Excel, or XML.
Viator's official API requires partnership approval and rate limits that slow down market research. This actor reads the public tour and activity search feeds directly, filtered by any destination or activity keyword you provide, and returns each matching listing in one consistent flat schema. It is built for travel analysts, tour operators, and affiliate marketers who need bulk tour data without writing a single line of code.
| Who uses it | What they scrape Viator for |
|---|---|
| Travel affiliate marketers | Build a searchable database of Viator tours with direct booking links for content sites. |
| Tour operators | Monitor competitor pricing and review scores across a destination. |
| Destination marketing organizations | Catalog every bookable experience in their region to spot gaps in the local tourism offering. |
| Data journalists | Analyze pricing trends and review distributions across popular tourist cities. |
What it does
This Actor collects Viator tour and activity listings by destination or activity search query and returns each one as a flat row with its title, price, rating, review count, duration, and booking URL.
- π Destination or activity search: enter any term like 'Paris tours', 'Eiffel Tower', or 'Rome food tour' and the actor returns every matching listing.
- π Flat row output: each tour comes as one row with title, price, rating, review count, duration, and a direct Viator booking link.
- β‘ High volume ready: set maxItems up to 1,000,000 to pull every tour in a destination in a single run.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Viator data
π Monitor competitor tours in a destination.
A tour operator searches 'Barcelona walking tours' weekly, collects every listing, and tracks which competitors raised prices or gained reviews.
π οΈ Build a tour search widget for a travel blog.
An affiliate marketer scrapes all 'Thailand island tours', stores the flat rows in a database, and powers an on-site search widget with direct Viator booking links.
πΊοΈ Catalog every experience in a region.
A destination marketing organization searches their city name, pulls every tour, and identifies experience categories that are underserved by local operators.
π° Report on tourism pricing trends.
A data journalist scrapes the same five major cities each quarter, compares average tour prices and review counts, and publishes a seasonal pricing index.
Why choose this scraper
| What you get | |
|---|---|
| No API approval needed | Reads the public Viator search feeds directly, no partnership application or OAuth flow. |
| One flat schema | Every tour returns the same fields so you can append runs and compare destinations without cleaning. |
| Direct booking links | Each row includes the Viator listing URL so you can drive traffic or check availability manually. |
| Runs in the cloud | Schedule daily or weekly runs on the Apify platform and get fresh data without keeping a machine on. |
How it compares
This actor focuses on fast, high-volume tour search scraping with a simple destination or activity query. Here is how it compares to other Viator scrapers on Apify Store based on their public listings.
| Feature | ParseForge | Viator Tours Intelligence | Viator Reviews Scraper | Viator Tour Search Scraper |
|---|---|---|---|---|
| Search by destination or activity keyword | Yes | Yes | Not listed | Yes |
| Returns tour price | Yes | Yes | Not listed | Yes |
| Returns rating and review count | Yes | Yes | Yes | Yes |
| Returns tour duration | Yes | Yes | Not listed | Not listed |
| Returns direct booking URL | Yes | Not listed | Not listed | Not listed |
| Filter by minimum rating before output | Not listed | Yes | Not listed | Not listed |
| Scrapes customer reviews | Not listed | Not listed | Yes | Not listed |
Configure the run
Drive the Actor with a single destination or activity search query, and set a maximum number of tours to collect per run. The Input tab lists every parameter.
A first run with the defaults:
{
"searchQuery": "Paris tours",
"maxItems": 10
}
A larger pull:
{
"searchQuery": "Paris tours",
"maxItems": 200
}
Pricing
Pay-per-result: $0.021 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Viator Tours and Experiences Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Viator through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/viator-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check your search query spelling. Viator search works best with destination names or specific activity phrases like 'Paris tours' or 'Eiffel Tower'. Very broad single-word queries may return zero results. Try a more specific phrase.
The actor returned fewer tours than my maxItems setting.
This is normal. The actor stops when Viator has no more matching listings for your query. If you searched a niche activity in a small town, there may be fewer tours available than your limit.
Some tours are missing prices or ratings.
Viator listings sometimes show 'from' prices or omit ratings for new tours with no reviews yet. The actor returns whatever Viator displays publicly. Missing fields will be empty in your output.
The run timed out.
Large searches with high maxItems values can take time. Increase the run timeout in your actor settings, or reduce maxItems and run multiple smaller searches.
I need reviews, not tour listings.
This actor scrapes tour and activity search results only. For customer reviews, search Apify Store for a dedicated Viator reviews scraper that extracts review text, ratings, and traveler photos.
FAQ
| Question | Answer |
|---|---|
| Do I need a Viator API key or login? | No. This actor reads the public Viator search pages that anyone can visit in a browser. No API key, no OAuth, and no Viator account are required. |
| What data does each tour row include? | Every row returns the tour title, price, average rating, total review count, duration, and the direct Viator listing URL. The exact fields are shown in the sample output above. |
| Can I scrape tours from multiple destinations in one run? | One run handles one search query. To cover multiple destinations, run the actor once per query, or set up multiple scheduled tasks, one for each destination you track. |
| How many tours can I collect? | You set the maximum with the maxItems field, up to 1,000,000 per run. The actor stops when it hits your limit or when Viator has no more matching listings. |
| Does this actor scrape reviews? | No. This actor collects tour and activity listings from Viator search results. If you need customer reviews, look for a dedicated Viator reviews scraper on Apify Store. |
| Can I filter by price or rating? | The actor returns every listing that matches your search query. Filtering by price, rating, or review count is done after the run, in your spreadsheet, database, or code. |
| What output formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify platform. |
| Can I schedule this to run automatically? | Yes. Apify supports scheduled runs. Set it to daily or weekly and your dataset updates with the latest Viator listings without any manual work. |
| Is this an official Viator product? | No. This is an unofficial scraper built on Apify that reads publicly available Viator search pages. It is not affiliated with or endorsed by Viator, Inc. |
| What is the difference between this and the Viator API? | The official Viator API requires a partnership application and has rate limits. This actor reads the public search pages directly, so you can start collecting data immediately with no approval process. |
Related actors
Browse the full ParseForge collection for more scrapers.
π Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
β οΈ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Viator, Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| searchQuery | string | Search term for tours and activities (e.g. 'Paris tours', 'Eiffel Tower', 'Rome food tour'). If omitted, a broad destination search is performed. | Paris tours |
| maxItems | integer | How many tours to collect per run. | 10 |
Pricing
from $19.00 per 1,000 results
| Charged for | What it is | Price each |
|---|---|---|
| result | Single result in the default dataset. | $0.019 to $0.021 |
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~viator-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run Viator Tours and Experiences Scraper on Apify All scrapers
