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
Viator Tours Scraper
Extract tour and activity listings from Viator destination pages with clean, structured output. Collect listing data such as titles, prices, ratings, review counts, durations, destinations, images, languages, cancellation details, and product URLs for travel research, pricing analysis, and catalog monitoring.
Features
- Destination listing support - Paste a Viator listing URL such as a city tours page and collect available activities.
- Pagination control - Move through multiple listing pages until your result target or page limit is reached.
- Clean dataset - Empty and always-null values are removed from saved records.
Use Cases
Travel Market Research
Compare Viator tours across destinations to understand what experiences are available, how they are priced, and which activities receive strong traveler interest. Ratings, review counts, and duration fields help you sort high-performing listings quickly.
Price Monitoring
Track starting prices for tours and activities in specific cities. Use repeated runs to monitor pricing changes for popular destinations, attractions, and competitor offerings.
Catalog Building
Create a structured catalog of tours with product codes, destination details, images, short descriptions, and direct URLs. This is useful for travel apps, internal research databases, and editorial planning.
Supplier and Product Analysis
Review listing-level signals such as cancellation policy, private tour availability, likely-to-sell-out flags, language availability, and badges. These fields help compare product positioning across similar experiences.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | Rome tours URL | Viator destination listing URL to extract listings from. |
results_wanted | Integer | No | 20 | Maximum number of listings to save. |
max_pages | Integer | No | 5 | Maximum listing pages to request. |
proxyConfiguration | Object | No | Apify proxy disabled | Proxy settings for reliable runs. |
Output Data
Each item in the dataset can contain:
| Field | Type | Description |
|---|---|---|
product_code | String | Viator product code. |
title | String | Tour or activity title. |
canonical_name | String | Canonical product name. |
url | String | Viator product URL. |
source_url | String | Listing page where the item was found. |
source_page | Number | Listing page number. |
destination_id | String | Viator destination id. |
destination_name | String | Primary destination name. |
destination_parent_name | String | Parent destination, such as country or region. |
description | String | Listing description. |
brief_description | String | Short product summary. |
price_from | Number | Starting price. |
currency | String | Price currency code. |
rating | Number | Average traveler rating. |
exact_rating | Number | Exact rating when available. |
review_count | Number | Number of reviews. |
duration | String | Human-readable duration. |
free_cancellation | Boolean | Whether free cancellation is available. |
likely_to_sell_out | Boolean | Whether Viator marks the listing as likely to sell out. |
new_product | Boolean | Whether the listing is marked as new. |
private_tour | Boolean | Whether the activity is a private tour. |
language_codes | Array | Offered language codes. |
image_url | String | Main listing image. |
badges | Array | Listing badges when available. |
Usage Examples
Destination URL
Collect listings from a Viator Rome tours page:
{"startUrl": "https://www.viator.com/Rome/d511-ttd","results_wanted": 20,"max_pages": 2}
Larger Collection
Collect more listings from the same destination:
{"startUrl": "https://www.viator.com/Rome/d511-ttd","results_wanted": 50,"max_pages": 5}
Sample Output
{"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_parent_name": "Italy","price_from": 33.73,"currency": "USD","rating": 4.5,"review_count": 9545,"duration": "150 minutes","free_cancellation": true,"language_codes": ["de", "en", "es", "fr", "pt"],"image_url": "https://dynamic-media.tacdn.com/media/photo-o/2e/a6/46/1f/caption.jpg?w=1200&h=800&s=1"}
Tips for Best Results
Use Listing URLs
- Use destination pages that end with patterns like
/Rome/d511-ttd. - For page-specific testing, URLs such as
/Rome/d511-ttd/2are supported.
Start With Small Runs
- Use
results_wantedbetween 20 and 50 for tests. - Increase
max_pageswhen you need broader coverage.
Check Pagination
- Increase
max_pageswhen the first page does not contain enough listings. - Use the dataset
source_pagefield to see where each listing was found.
Integrations
Connect your data with:
- Google Sheets - Review listings and pricing in spreadsheets.
- Airtable - Build a searchable travel product catalog.
- Slack - Send notifications when runs finish.
- Webhooks - Forward datasets to your own systems.
- Make - Automate reporting and enrichment workflows.
- Zapier - Trigger downstream actions from completed runs.
Export Formats
- JSON - For applications and data pipelines.
- CSV - For spreadsheet analysis.
- Excel - For business reporting.
- XML - For system imports.
Frequently Asked Questions
Can I scrape any Viator listing URL?
Yes, you can scrape Viator destination listing URLs that expose tour and activity listings, such as /Rome/d511-ttd.
Can I collect listings from multiple pages?
Yes, the actor follows listing page pagination until it reaches results_wanted, max_pages, or the available page count.
What happens when a field is missing?
Missing, empty, and always-null values are skipped so the dataset stays clean.
Do I need a proxy?
A proxy is optional for small runs. For larger or repeated runs, proxy configuration can improve reliability.
Support
For issues or feature requests, contact support through the Apify Console.
Resources
Legal Notice
This actor is designed for legitimate data collection purposes. Users are responsible for ensuring their use of collected data complies with Viator terms, Tripadvisor rules, and applicable laws. Use data responsibly and respect platform limits.