Viator.com Tours Scraper
Pricing
Pay per usage
Viator.com Tours Scraper
Extract tours, activities, attractions, prices, ratings, reviews, durations, destinations, availability, images, itineraries, inclusions, and more from Viator.com. Ideal for travel research, market analysis, price monitoring, lead generation, and tourism data collection.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Viator Tours Scraper do?
Viator Tours Scraper is a Viator tour scraper that collects tour and activity listings from public Viator destination pages. Provide one destination listing URL, such as https://www.viator.com/Rome/d511-ttd, or several URLs, and receive structured records with titles, prices, ratings, reviews, durations, destinations, images, cancellation details, and direct product URLs.
Use the dataset for travel market research, activity catalogs, price monitoring, supplier comparison, travel applications, and content planning. Results can be downloaded from Apify or connected through datasets, API access, webhooks, and integrations.
Why use Viator Tours Scraper?
- Build travel datasets - Collect comparable tour and activity records without manual copy-paste.
- Analyze prices and demand signals - Compare starting prices, currencies, ratings, review counts, supplier ratings, and likely-to-sell-out indicators.
- Monitor destination catalogs - Repeat runs for cities, regions, or attractions to identify new products and changes over time.
- Compare product positioning - Review duration, languages, private-tour status, cancellation availability, badges, and descriptions.
- Support workflows - Export JSON, CSV, Excel, or XML data, schedule repeat runs, and send results to downstream tools.
What data can you extract from Viator?
| Field | Description |
|---|---|
product_code | Unique Viator product code. |
title | Tour or activity title. |
canonical_name | Canonical product name used by Viator. |
url | Direct Viator product URL. |
source_url | Destination listing URL where the item was found. |
source_page | Listing page number containing the item. |
destination_name | Primary destination name. |
description | Full listing description when available. |
brief_description | Short product summary when available. |
price_from | Starting price for the listing. |
currency | Currency code for the starting price. |
rating | Average traveler rating. |
review_count | Number of traveler reviews. |
duration | Human-readable activity duration. |
free_cancellation | Whether free cancellation is available. |
private_tour | Whether the listing is marked as a private tour. |
language_codes | Languages offered for the activity. |
image_url | Main listing image URL. |
badges | Product badges shown by Viator when available. |
How to scrape Viator tour data
- Open Viator Tours Scraper in Apify Console.
- Add one Viator destination listing URL, or provide multiple URLs.
- Set
results_wantedfor the maximum number of records andmax_pagesfor pagination depth. - Start the run and review the dataset preview.
- Download the results or connect the dataset to an API, webhook, spreadsheet, or automation.
The Actor follows destination listing pagination and stops at the requested result count, configured page limit, or available listing pages. Duplicate products are saved only once per run.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No* | - | One public Viator destination listing URL, such as https://www.viator.com/Rome/d511-ttd. |
startUrls | Array | No* | [] | Multiple Viator listing URLs. Each item can be a URL string or an object containing a url property. |
url | String | No | - | Compatibility alias for startUrl. |
start_url | String | No | - | Compatibility alias for startUrl. |
results_wanted | Integer | No | 20 | Maximum number of unique listings to save. The minimum is 1. |
max_pages | Integer | No | 5 | Maximum number of listing pages to collect from each source URL. The minimum is 1. |
proxyConfiguration | Object | No | Disabled | Optional Apify Proxy configuration for runs that need proxy support. |
At least one source URL is required. The Actor also accepts resultsWanted and maxPages as camelCase aliases. When both a list and a single URL are supplied, all are considered until the result limit is reached.
Output Data
Each item represents one unique Viator tour or activity. Empty values are omitted.
| Field | Type | Description |
|---|---|---|
product_code | String | Viator product code used to identify the listing. |
title | String | Tour or activity title. |
canonical_name | String | Canonical product name. |
url | String | Direct Viator product URL. |
source_url | String | Source destination listing URL. |
source_page | Number | Page number where the listing was found. |
destination_id | Number | Viator destination identifier. |
destination_name | String | Primary destination name. |
destination_canonical_name | String | Canonical destination name. |
destination_parent_name | String | Parent destination, such as a country or region. |
description | String | Full listing description when available. |
brief_description | String | Short listing summary when available. |
price_from | Number | Starting price. |
currency | String | Currency code for the starting price. |
price_varies_by_group_size | Boolean | Whether pricing can vary with group size. |
pricing_type | String | Viator pricing type when available. |
rating | Number | Average traveler rating. |
exact_rating | Number | More precise rating value when available. |
review_count | Number | Number of traveler reviews. |
supplier_rating | Number | Average supplier rating when available. |
supplier_review_count | Number | Number of supplier reviews when available. |
duration | String | Human-readable duration, such as 150 minutes. |
duration_value | Number | Numeric duration value. |
duration_unit | String | Duration unit supplied by Viator. |
free_cancellation | Boolean | Whether free cancellation is available. |
likely_to_sell_out | Boolean | Whether Viator marks the activity as likely to sell out. |
new_product | Boolean | Whether the activity is marked as new. |
private_tour | Boolean | Whether the activity is a private tour. |
highlighted | Boolean | Whether Viator highlights the listing. |
language_codes | Array | Language codes offered for the activity. |
photo_count | Number | Number of listing photos. |
image_url | String | Main listing image URL. |
video_count | Number | Number of listing videos. |
badges | Array | Listing badges when available. |
ranker_score | Number | Listing ranking score when supplied by Viator. |
candidate_source | String | Listing source label when supplied by Viator. |
candidate_generator_score | Number | Candidate score when supplied by Viator. |
Usage Examples
Basic Destination Collection
Collect up to 20 activities from a Rome destination page and inspect the first two listing pages.
{"startUrl": "https://www.viator.com/Rome/d511-ttd","results_wanted": 20,"max_pages": 2}
Multiple Destinations
Collect listings from Rome and Paris in one run, with a shared result limit.
{"startUrls": ["https://www.viator.com/Rome/d511-ttd", "https://www.viator.com/Paris/d479-ttd"],"results_wanted": 50,"max_pages": 5}
Larger Paginated Collection
Collect a broader destination catalog by increasing both the result target and the number of pages.
{"startUrl": "https://www.viator.com/London/d737-ttd","results_wanted": 100,"max_pages": 10,"proxyConfiguration": {"useApifyProxy": true}}
The Actor does not apply price or rating filters inside the run. To narrow a collection, start with the relevant Viator destination listing URL, then filter the exported dataset using fields such as price_from, rating, review_count, duration, or private_tour.
Sample Output
This example shows one dataset item. Fields that Viator does not provide are omitted.
{"product_code": "62972P2","title": "Colosseum Arena Floor, Roman Forum and Palatine Hill Tour","canonical_name": "Colosseum Arena Floor, Roman Forum and Palatine Hill Guided Tour","url": "https://www.viator.com/tours/Rome/Colosseum-Arena-Floor-Roman-Forum-and-Palatine-Hill-Guided-Tour/d511-62972P2","source_url": "https://www.viator.com/Rome/d511-ttd","source_page": 1,"destination_id": 511,"destination_name": "Rome","destination_canonical_name": "Rome","destination_parent_name": "Italy","brief_description": "Visit Rome's ancient landmarks with a guided tour.","price_from": 33.73,"currency": "USD","price_varies_by_group_size": false,"rating": 4.5,"exact_rating": 4.5,"review_count": 9545,"duration": "150 minutes","duration_value": 150,"duration_unit": "MINUTES","free_cancellation": true,"likely_to_sell_out": true,"private_tour": false,"language_codes": ["de", "en", "es", "fr", "pt"],"photo_count": 12,"image_url": "https://images.example.com/viator/colosseum.jpg","video_count": 0,"badges": ["Likely to Sell Out"]}
Tips for Best Results
- Use destination listing URLs - Start with a public Viator page for a city, region, attraction, or destination category.
- Test with a small limit - Begin with
results_wanted: 20and a lowmax_pagesvalue before collecting a large catalog. - Use pagination deliberately - Increase
max_pageswhen the first page does not contain enough listings, and usesource_pageto trace each result. - Review the preview - Confirm prices, currencies, destinations, and product URLs before scheduling repeat runs.
- Expect source changes - Report missing or changed fields through the Actor's Issues tab.
Integrations and Export Formats
- Google Sheets - Review catalogs, prices, and ratings in a spreadsheet.
- Airtable - Create a searchable activity catalog.
- Webhooks - Trigger downstream workflows when a run finishes.
- Make or Zapier - Send listings to reporting, notifications, or enrichment workflows.
- API access - Retrieve dataset records programmatically for travel applications and data pipelines.
Apify datasets can be downloaded in JSON, CSV, Excel, XML, and other supported formats.
Frequently Asked Questions
Can I scrape Viator destination pages?
Yes. Provide public Viator destination listing pages such as /Rome/d511-ttd in startUrl or startUrls.
Can I collect Viator tours from multiple destinations?
Yes. Add several listing URLs to startUrls; the Actor removes duplicate product codes during the run and stops at results_wanted.
Can I collect more than one listing page?
Yes. Set max_pages to control how many pages are checked for each source URL. The Actor also stops when Viator has no more available pages or the result limit is reached.
Does the Actor filter by price, rating, or duration?
No. The Actor collects the listings available at the supplied destination pages. Filter the dataset afterward using price_from, rating, review_count, duration_value, or other output fields.
Can I export Viator data to CSV or Excel?
Yes. Apify datasets support CSV, Excel, JSON, XML, and other export formats.
What happens when a field is missing?
Fields with empty or unavailable values are omitted from that record. This usually indicates that Viator did not publish the value for that product.
Can I run this Actor on a schedule?
Yes. Create an Apify schedule to refresh destination data hourly, daily, weekly, or at another interval that fits your monitoring workflow.
Is it legal to collect Viator data?
Public-data collection may be subject to Viator and Tripadvisor terms, applicable privacy rules, and local laws. You are responsible for confirming that your use, storage, and redistribution of the data are permitted.
Related Actors
- Booking.com Scraper - Collect hotel listings for broader travel pricing and destination research.
- Tripadvisor Reviews Scraper - Collect traveler reviews and ratings for reputation and activity research.
- Hellotickets.com Scraper - Collect event and activity listings from another travel marketplace.
Support
For issues, feature requests, or changed source fields, use the Issues tab on the Actor page. Include the input URL, run ID, and a short description of the problem when possible.
Legal Notice
This Actor is intended for legitimate collection of publicly available Viator listing information. Users are responsible for complying with Viator and Tripadvisor terms, applicable laws, privacy requirements, and any restrictions on using or redistributing collected data.