← Back to all apps

Viator

Travelby TripAdvisor Inc.
Launched Jun 17, 2026 on ChatGPTLaunched Apr 23, 2026 on Claude

Discover and book unforgettable things to do with the Viator app. Search Viator's catalog of tours, attractions, and experiences using natural language. Just tell us where you're going and what you're interested in, and we will help you explore relevant options quickly and clearly. You can narrow results by destination, dates, price range, and categories, making it easy to move from a broad idea ("things to do in Paris") to options that fit your plans and budget. Each result focuses on practical details, so you can compare experiences without jumping between pages or tabs.

2ChatGPT Tools
2Claude Tools
TripAdvisor Inc.Developer
TravelCategory

Use Cases

productivity

Available Tools

Get experience details

get_experience_details
Full Description

Retrieves enriched information for a specific Viator experience, including detailed descriptions, highlights, imagery, pricing, duration, key features, and the click-out URL.It also returns what is included and excluded in the price, high-level itinerary metadata, bookable experience options, traveler age bands and booking constraints, start/end locations and traveler pickup, additional information such as requirements and restrictions, available language guides, associated destinations, the operating time zone, the operator, every image for the experience with its available dimension variants and captions, and the cancellation policy covering the refund terms, weather and minimum-traveler cancellation conditions, and how much is refundable depending on how far in advance the booking is cancelled.The model should call this tool only when the user clearly refers to a specific experience—either by selecting it in the UI or by asking follow-up questions such as “Tell me more about…”;if multiple experiences were shown, the model must resolve ambiguity by asking which one the user means. This tool is intended for deepening experience understanding rather than search, and should only be invoked with a code previously returned by search_experiences. get_experience_details only returns high-level itinerary metadata. Full itinerary content, including the sequence of stops and activities, detailed descriptions, and location information, is available through get_experience_itinerary. Clients should call that tool on demand when the traveler asks for more detail about what happens during the experience.

Parameters (2 required, 3 optional)
Required
codestring

(required) Unique identifier of the Viator experience to retrieve details for.This value must correspond to an experience previously returned by the search_experiences tool.The model must not guess or make up experience IDs; if the user request is ambiguous (e.g., multiple items shown), the model must ask which experience they mean before calling the tool.

sessionIdstring

(required) Identifier for the current user session. Re-use the value of previous MCP calls in the same conversation.

Optional
currencystring

(optional) Currency code for from-price display (e.g., USD, EUR, GBP).When provided, fromPrice and fromPriceBeforeDiscount are populated.When omitted, pricing fields are not returned.Should match the currency used in the preceding search_experiences call when available.

languagestring

(deprecated) This value is deprecated and should not be sent. Please only send the locale.

localestring

(optional) The language/locale code requested for content localization (e.g., en-US, en-GB, fr-FR).If not provided by the user, the model should infer it from context or default to en.Used to descriptions, highlights, and content where available.

Search for experiences

search_experiences
Full Description

Retrieves a curated list of Viator experiences based on a free-text search of what the user wants (destination, activity type, and preferences), plus trip dates and optional refiners (budget, duration, etc.). The model must supply a non-blank searchTerm as natural language describing where and what the user is looking for (e.g. "walking tours in Paris, France", "kid friendly food experiences in Rome"). Dates, prices, duration limits, and currency belong in their dedicated parameters—not inside searchTerm. The model must provide searchTerm and dates before calling this tool. The model may re-issue a refined searchExperiences call whenever the user adds, removes, or adjusts refinement criteria (e.g., kid-friendly, price range, shorter duration) to narrow or improve the results. If the tool returns zero results, the model must proactively guide the user toward a successful refinement. It should review the parameters used in the failed request and recommend the most appropriate based on the proposed logic:" If > 1 categories applied, suggest removing some categories. Eg: “It looks like those categories combined are too restrictive. Would you like to narrow it down?” If the query requests a specific feature (eg private tour), suggest removing this constraint. Eg: “Private tours may be limited in this area, would you like to consider group options too?” If duration (avg from/to) > XX, suggest trying a shorter duration. If duration (avg from/to) < XX, suggest trying a longer duration. If price constraint was applied, suggest widening (or removing) price limits. Else, suggest broaden location search. Eg: “Nothing matches in central Siena, should we try Tuscany or nearby towns?”

Parameters (3 required, 10 optional)
Required
endDatestring

(required) The last date the user is available to participate in an experience, formatted as ISO-8601 (YYYY-MM-DD).Also derived from natural-language expressions (e.g., 'this summer', 'next weekend', 'early April', 'tomorrow'); if the user gives a single day, set endDate = startDate. When resolving these expressions, use the destination timezone from searchTerm when inferable, otherwise the user's timezone. Must be >= startDate. Used to widen search results to a date range.

searchTermstring

(required) Natural-language description of what the user is looking for. Must be non-blank and at most 500 characters; the tool rejects empty, whitespace-only, or over-length values. Include destination, activity type, and preferences in this single free-text query (e.g. 'walking tours in Paris, France'). Do not embed dates, prices, duration limits, or currency here—use the dedicated fields.

startDatestring

(required) The first date the user is available to participate in an experience, formatted as ISO-8601 (YYYY-MM-DD).The model must convert natural-language expressions (e.g., 'this summer', 'next weekend', 'early April', 'tomorrow') into a specific ISO date before calling the tool. When resolving these expressions, if searchTerm names a destination, use that location's local timezone. Otherwise, use the user's current timezone. The date must not be in the past. Must be before the endDate. There is no upper bound: a date any distance in the future is searchable, so a user planning a far-off trip must still be shown what a destination offers. Booking, however, is limited to travel dates within 85 days of today - check_availability and hold_booking reject anything beyond that. So when this date is more than 85 days away, the model must present the results as research rather than as bookable, and must not present any returned price as current or hold-able.

Optional
categorystring

(deprecated) A single category label. Used to build the free-text query only when searchTerm is omitted or blank.

currencystring

(optional) Currency code used for interpreting and filtering prices.The model should infer currency from context when possible (e.g., GBP if the user is in the UK; USD if the user specifies dollars).Default value: USDValid ISO currency codes include: AED, ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, DKK, EUR, FJD, GBP, HKD, IDR, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, SEK, SGD, THB, TRY, TWD, USD, VND, ZAR

durationinteger

(optional) User preference for maximum experience length, expressed in minutes.Used to filter results to experiences at or below this duration.

featuresarray

(deprecated) User-preferred features (KID_FRIENDLY, SKIP_THE_LINE, PRIVATE_TOUR). Appended in natural language when searchTerm is omitted or blank; still used when mapping product attributes in results.

fromPricenumber

(optional) Minimum per-person price to include in search, expressed in the requested currency.Used when the user specifies a lower budget boundary (e.g., “at least €50”).

limitinteger

(optional) Maximum number of products to return, between 1 and 10.If omitted, defaults to 5.Not intended as a user-facing refinement mechanism; the model should not use it to alter intent.

localestring

(optional) The language/locale code requested for content localization (e.g., en-US, en-GB, fr-FR).If not provided by the user, the model should infer it from context or default to en.Used to localize title, and other content where available.

locationstring

(deprecated) Human-readable location in English. Used to build the free-text query only when searchTerm is omitted or blank (concatenated with category and features). May still be recorded on usage events.

sessionIdstring

(optional) Session identifier. If provided, it will be echoed in the response, otherwise a server-generated value to reuse on follow-up calls. Repeated calls to search_experiences during the same conversation should re-use the first identifier.

toPricenumber

(optional) Maximum per-person price to include in search, expressed in the requested currency.Used when the user expresses a maximum budget (e.g., “under $100”)