Viator.com Tours Scraper avatar

Viator.com Tours Scraper

Pricing

Pay per usage

Go to Apify Store
Viator.com Tours Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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?

FieldDescription
product_codeUnique Viator product code.
titleTour or activity title.
canonical_nameCanonical product name used by Viator.
urlDirect Viator product URL.
source_urlDestination listing URL where the item was found.
source_pageListing page number containing the item.
destination_namePrimary destination name.
descriptionFull listing description when available.
brief_descriptionShort product summary when available.
price_fromStarting price for the listing.
currencyCurrency code for the starting price.
ratingAverage traveler rating.
review_countNumber of traveler reviews.
durationHuman-readable activity duration.
free_cancellationWhether free cancellation is available.
private_tourWhether the listing is marked as a private tour.
language_codesLanguages offered for the activity.
image_urlMain listing image URL.
badgesProduct badges shown by Viator when available.

How to scrape Viator tour data

  1. Open Viator Tours Scraper in Apify Console.
  2. Add one Viator destination listing URL, or provide multiple URLs.
  3. Set results_wanted for the maximum number of records and max_pages for pagination depth.
  4. Start the run and review the dataset preview.
  5. 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

ParameterTypeRequiredDefaultDescription
startUrlStringNo*-One public Viator destination listing URL, such as https://www.viator.com/Rome/d511-ttd.
startUrlsArrayNo*[]Multiple Viator listing URLs. Each item can be a URL string or an object containing a url property.
urlStringNo-Compatibility alias for startUrl.
start_urlStringNo-Compatibility alias for startUrl.
results_wantedIntegerNo20Maximum number of unique listings to save. The minimum is 1.
max_pagesIntegerNo5Maximum number of listing pages to collect from each source URL. The minimum is 1.
proxyConfigurationObjectNoDisabledOptional 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.

FieldTypeDescription
product_codeStringViator product code used to identify the listing.
titleStringTour or activity title.
canonical_nameStringCanonical product name.
urlStringDirect Viator product URL.
source_urlStringSource destination listing URL.
source_pageNumberPage number where the listing was found.
destination_idNumberViator destination identifier.
destination_nameStringPrimary destination name.
destination_canonical_nameStringCanonical destination name.
destination_parent_nameStringParent destination, such as a country or region.
descriptionStringFull listing description when available.
brief_descriptionStringShort listing summary when available.
price_fromNumberStarting price.
currencyStringCurrency code for the starting price.
price_varies_by_group_sizeBooleanWhether pricing can vary with group size.
pricing_typeStringViator pricing type when available.
ratingNumberAverage traveler rating.
exact_ratingNumberMore precise rating value when available.
review_countNumberNumber of traveler reviews.
supplier_ratingNumberAverage supplier rating when available.
supplier_review_countNumberNumber of supplier reviews when available.
durationStringHuman-readable duration, such as 150 minutes.
duration_valueNumberNumeric duration value.
duration_unitStringDuration unit supplied by Viator.
free_cancellationBooleanWhether free cancellation is available.
likely_to_sell_outBooleanWhether Viator marks the activity as likely to sell out.
new_productBooleanWhether the activity is marked as new.
private_tourBooleanWhether the activity is a private tour.
highlightedBooleanWhether Viator highlights the listing.
language_codesArrayLanguage codes offered for the activity.
photo_countNumberNumber of listing photos.
image_urlStringMain listing image URL.
video_countNumberNumber of listing videos.
badgesArrayListing badges when available.
ranker_scoreNumberListing ranking score when supplied by Viator.
candidate_sourceStringListing source label when supplied by Viator.
candidate_generator_scoreNumberCandidate 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: 20 and a low max_pages value before collecting a large catalog.
  • Use pagination deliberately - Increase max_pages when the first page does not contain enough listings, and use source_page to 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.

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.

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.

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.