Search and compare flight prices, calendars, airports, routes, and destinations with Aviasurf.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find cached indicative fares and filter destinations locally by geography, climate, coast, island, elevation or terrain relief, beach or hiking traits, culture, parks, population, connectivity, and route trip-duration suitability. Use population_level=low for quieter small-city options, but note that it is a global population band, not a measure of crowds or tourism: a small city may still be busy with visitors. Other low/medium/high values are also global bands, not ranks within a country; museum_level=low means no notable museum signal, not no museums. National-park distance is to the park centre. Monthly air and water filters require month. Prices are per adult. Always link the returned search_url from a short label; never paste the raw URL.
Origin city or airport IATA code.
Sort by indicative price or preserve upstream popularity order.
Curated destination group, applied locally. asia: cities in selected Asian countries. schengen: cities in the Schengen area. russia: domestic Russian destinations. Use the separate measured coast, monthly temperature, island, and elevation filters for those traits; do not infer unsupported themes.
Maximum number of destinations to return, applied locally.
Optional departure month.
Request nonstop observations only.
When true, return tourist island destinations rather than dense urban island districts or continent-sized landmasses. Use for requests such as 'take me to an island' or 'куда на острова'.
Language locale for reference names and response text.
Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country.
Two-letter destination country filter, applied locally.
Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country.
Seven-continent destination code, applied locally.
UN M49 destination subregion in lowercase snake_case, applied locally.
Maximum indicative price, applied locally.
Minimum monthly air temperature in degrees Celsius. Requires month and excludes destinations without air-temperature data.
Minimum direct-route airline count.
Minimum monthly water temperature in degrees Celsius. Use with month for requests such as 'where can I swim?' or 'где можно купаться'; destinations without water data are excluded.
Minimum destination elevation above sea level in metres, applied locally. Use for mountain or high-altitude requests such as 'I want to go to the mountains' or 'хочу в горы'.
Maximum city elevation in metres.
Minimum global museum band; low means no notable museum signal, not no museums.
Exact global population band; use low for quieter small-city options, not as a crowd or tourism measure.
Measured beach-destination signal.
Derived hiking-destination signal.
Minimum nearby national-park count.
Route-suitability band from the destination knowledge base. Use weekend for requests such as 'weekend getaway' or 'куда на выходные'; use the other bands for an explicitly requested trip length.
Minimum surrounding terrain relief in metres.
Maximum destination-city distance to the coast in kilometres, applied locally from the Aviasurf destination knowledge base.
Minimum warm-water months per year.
Minimum direct destination count.
Minimum World Heritage site count.
Derived quiet beach-holiday signal.
Minimum global historical-places band.
Maximum distance to a national park centre in kilometres.
Find cached indicative fares and filter destinations locally by geography, climate, coast, island, elevation or terrain relief, beach or hiking traits, culture, parks, population, connectivity, and route trip-duration suitability. Use population_level=low for quieter small-city options, but note that it is a global population band, not a measure of crowds or tourism: a small city may still be busy with visitors. Other low/medium/high values are also global bands, not ranks within a country; museum_level=low means no notable museum signal, not no museums. National-park distance is to the park centre. Monthly air and water filters require month. Prices are per adult. Always link the returned search_url from a short label; never paste the raw URL.
| Argument | Type | Description |
|---|---|---|
| sort | string | Sort by indicative price or preserve upstream popularity order. |
| group | string | Curated destination group, applied locally. asia: cities in selected Asian countries. schengen: cities in the Schengen area. russia: domestic Russian destinations. Use the separate measured coast, monthly temperature, island, and elevation filters for those traits; do not infer unsupported themes. |
| limit | integer | Maximum number of destinations to return, applied locally. |
| month | string | Optional departure month. |
| direct | boolean | Request nonstop observations only. |
| island | boolean | When true, return tourist island destinations rather than dense urban island districts or continent-sized landmasses. Use for requests such as 'take me to an island' or 'куда на острова'. |
| locale | string | Language locale for reference names and response text. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| country | string | Two-letter destination country filter, applied locally. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
| continent | string | Seven-continent destination code, applied locally. |
| subregion | string | UN M49 destination subregion in lowercase snake_case, applied locally. |
| budget_max | integer | Maximum indicative price, applied locally. |
| air_temp_min | number | Minimum monthly air temperature in degrees Celsius. Requires month and excludes destinations without air-temperature data. |
| airlines_min | integer | Minimum direct-route airline count. |
| water_temp_min | number | Minimum monthly water temperature in degrees Celsius. Use with month for requests such as 'where can I swim?' or 'где можно купаться'; destinations without water data are excluded. |
| elevation_min_m | number | Minimum destination elevation above sea level in metres, applied locally. Use for mountain or high-altitude requests such as 'I want to go to the mountains' or 'хочу в горы'. |
| max_elevation_m | number | Maximum city elevation in metres. |
| museum_level_min | string | Minimum global museum band; low means no notable museum signal, not no museums. |
| population_level | string | Exact global population band; use low for quieter small-city options, not as a crowd or tourism measure. |
| beach_destination | boolean | Measured beach-destination signal. |
| hiking_destination | boolean | Derived hiking-destination signal. |
| national_parks_min | integer | Minimum nearby national-park count. |
| trip_duration_band | string | Route-suitability band from the destination knowledge base. Use weekend for requests such as 'weekend getaway' or 'куда на выходные'; use the other bands for an explicitly requested trip length. |
| terrain_relief_min_m | number | Minimum surrounding terrain relief in metres. |
| max_coast_distance_km | number | Maximum destination-city distance to the coast in kilometres, applied locally from the Aviasurf destination knowledge base. |
| warm_water_months_min | integer | Minimum warm-water months per year. |
| direct_destinations_min | integer | Minimum direct destination count. |
| world_heritage_sites_min | integer | Minimum World Heritage site count. |
| relaxing_beach_destination | boolean | Derived quiet beach-holiday signal. |
| historical_places_level_min | string | Minimum global historical-places band. |
| max_national_park_distance_km | number | Maximum distance to a national park centre in kilometres. |
{
"type": "object",
"required": [
"origin"
],
"properties": {
"sort": {
"enum": [
"price",
"popularity"
],
"type": "string",
"default": "price",
"description": "Sort by indicative price or preserve upstream popularity order."
},
"group": {
"enum": [
"asia",
"schengen",
"russia"
],
"type": "string",
"description": "Curated destination group, applied locally. asia: cities in selected Asian countries. schengen: cities in the Schengen area. russia: domestic Russian destinations. Use the separate measured coast, monthly temperature, island, and elevation filters for those traits; do not infer unsupported themes."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Maximum number of destinations to return, applied locally."
},
"month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"description": "Optional departure month."
},
"direct": {
"type": "boolean",
"default": false,
"description": "Request nonstop observations only."
},
"island": {
"type": "boolean",
"default": false,
"description": "When true, return tourist island destinations rather than dense urban island districts or continent-sized landmasses. Use for requests such as 'take me to an island' or 'куда на острова'."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for reference names and response text."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter destination country filter, applied locally."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"continent": {
"enum": [
"AF",
"AN",
"AS",
"EU",
"NA",
"OC",
"SA"
],
"type": "string",
"description": "Seven-continent destination code, applied locally."
},
"subregion": {
"enum": [
"antarctica",
"australia_and_new_zealand",
"caribbean",
"central_america",
"central_asia",
"eastern_africa",
"eastern_asia",
"eastern_europe",
"melanesia",
"micronesia",
"middle_africa",
"northern_africa",
"northern_america",
"northern_europe",
"polynesia",
"south_america",
"south_eastern_asia",
"southern_africa",
"southern_asia",
"southern_europe",
"western_africa",
"western_asia",
"western_europe"
],
"type": "string",
"description": "UN M49 destination subregion in lowercase snake_case, applied locally."
},
"budget_max": {
"type": "integer",
"minimum": 1,
"description": "Maximum indicative price, applied locally."
},
"air_temp_min": {
"type": "number",
"maximum": 60,
"minimum": -80,
"description": "Minimum monthly air temperature in degrees Celsius. Requires month and excludes destinations without air-temperature data."
},
"airlines_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum direct-route airline count."
},
"water_temp_min": {
"type": "number",
"maximum": 40,
"minimum": -5,
"description": "Minimum monthly water temperature in degrees Celsius. Use with month for requests such as 'where can I swim?' or 'где можно купаться'; destinations without water data are excluded."
},
"elevation_min_m": {
"type": "number",
"maximum": 9000,
"minimum": -500,
"description": "Minimum destination elevation above sea level in metres, applied locally. Use for mountain or high-altitude requests such as 'I want to go to the mountains' or 'хочу в горы'."
},
"max_elevation_m": {
"type": "number",
"maximum": 9000,
"minimum": -500,
"description": "Maximum city elevation in metres."
},
"museum_level_min": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "Minimum global museum band; low means no notable museum signal, not no museums."
},
"population_level": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "Exact global population band; use low for quieter small-city options, not as a crowd or tourism measure."
},
"beach_destination": {
"type": "boolean",
"default": false,
"description": "Measured beach-destination signal."
},
"hiking_destination": {
"type": "boolean",
"default": false,
"description": "Derived hiking-destination signal."
},
"national_parks_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum nearby national-park count."
},
"trip_duration_band": {
"enum": [
"day_trip",
"weekend",
"short_trip",
"week",
"extended_stay"
],
"type": "string",
"description": "Route-suitability band from the destination knowledge base. Use weekend for requests such as 'weekend getaway' or 'куда на выходные'; use the other bands for an explicitly requested trip length."
},
"terrain_relief_min_m": {
"type": "number",
"minimum": 0,
"description": "Minimum surrounding terrain relief in metres."
},
"max_coast_distance_km": {
"type": "number",
"minimum": 0,
"description": "Maximum destination-city distance to the coast in kilometres, applied locally from the Aviasurf destination knowledge base."
},
"warm_water_months_min": {
"type": "integer",
"maximum": 12,
"minimum": 1,
"description": "Minimum warm-water months per year."
},
"direct_destinations_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum direct destination count."
},
"world_heritage_sites_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum World Heritage site count."
},
"relaxing_beach_destination": {
"type": "boolean",
"default": false,
"description": "Derived quiet beach-holiday signal."
},
"historical_places_level_min": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "Minimum global historical-places band."
},
"max_national_park_distance_km": {
"type": "number",
"minimum": 0,
"description": "Maximum distance to a national park centre in kilometres."
}
},
"additionalProperties": false
}Compare cached indicative fare samples in an interactive airport comparison across airports of the origin city, destination city, or both. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Outbound and inbound are calculated separately. Missing prices mean no cached observation, not that no flight exists.
| Argument | Type | Description |
|---|---|---|
| side | string | Expand airports on the origin side, destination side, or both. |
| direct | boolean | Request nonstop observations only. |
| locale | string | Language locale for airport and airline names and response text. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
| direction | string |
Use this tool when the user asks what a place is like, when to visit, how warm its air or water is, how far the coast is, what national parks or museums are nearby, or when comparing destinations before choosing one. Climate values are 1991–2020 normals, not a forecast. Beach objects are not available; the tool provides only distance to the coastline and the derived beach_destination trait, meaning the coast is within 10 km and at least one month has water warmer than 20 °C. The nearest national park distance is measured to the park centre, not an entrance or boundary. museum_level=low means no notable museum signal, not that there are no museums. Missing fields mean the source has no measurement; do not invent values.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language locale for response text and the destination widget. |
| destination* | string | Destination city IATA code. |
{
"type": "object",
"required": [
"destination"
],
"properties": {
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for response text and the destination widget."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city IATA code."
}
},
"additionalProperties": false
}Find cached indicative 'from' fares for a route and render interactive flight cards. Prices are per adult. These are historical observations, not live availability or booking offers. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of public fare items to return. |
| direct | boolean | Request nonstop options only. |
| locale | string | Language locale for names and response text. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| one_way | boolean | Search a one-way trip; inferred from return_date when omitted. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
Find cached indicative fares with baggage, cabin, direct-flight, budget, flexible-date, and trip-duration filters and render interactive flight cards. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Airline, departure-time, and transfer-count filters are applied only to the returned cache sample and are reported in query_coverage. Use flight_prices for requests that do not need these filters.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum upstream samples per pair. |
| pairs* | array | One to three origin/destination pairs to search in one batch. |
| direct | boolean | Ask upstream for nonstop options only. |
| locale | string | Language locale for names and response text. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| offset | integer | Upstream result offset. |
| one_way | boolean | Search one-way trips; inferred from return constraints when omitted. |
Build an Aviasurf live-search URL with dates, passenger composition, cabin class, currency, and locale. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. This opens live search; it does not confirm a fare or availability.
| Argument | Type | Description |
|---|---|---|
| adults | integer | Number of adult passengers. |
| locale | string | Language locale for the live search page. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| infants | integer | Number of infant passengers. |
| children | integer | Number of child passengers. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
| trip_class |
Show cached indicative price observations in an interactive calendar by day, by month, or as observed departure/return date pairs. Prices are per adult. Every monthly row includes sample_size and sample_sufficient. A month with sample_sufficient=false is a limited cached observation, not a reliable monthly minimum or evidence of seasonality; state that limitation instead of drawing a seasonal conclusion. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. Missing dates mean no cached observation, not that no flight exists.
| Argument | Type | Description |
|---|---|---|
| top_n | integer | Maximum number of cheapest dates to include in top_dates. |
| direct | boolean | Request nonstop observations only. |
| locale | string | Language locale for response text and live-search handoff. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
Resolve a city, airport, or country name to IATA/location candidates. Returns every plausible candidate instead of guessing, and includes airports for city candidates.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of candidates to return. |
| query* | string | Place name or IATA code to resolve. |
| types | array | Place types to include in the candidates. |
| locale | string | Language locale for returned place names. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum number of candidates to return."
},
"query": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Place name or IATA code to resolve."
},
"types": {
"type": "array",
"items": {
"enum": [
"city",
"airport",
"country"
],
"type": "string"
},
"default": [
"city",
"airport",
"country"
],
"maxItems": 3,
"description": "Place types to include in the candidates.",
"uniqueItems": true
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for returned place names."
}
},
"additionalProperties": false
}Summarize a cached fare sample in an interactive route profile: price statistics, airlines observed, travel duration, route distance, and city airports. Prices are per adult. Always link the returned search_url from a short label in the answer language, for example "Check live prices on Aviasurf"; never paste the raw URL as text. direct_seen means only that a nonstop option appeared in the sample; never infer that direct flights do not exist.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language locale for airport and airline names. |
| market | string | Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country. |
| origin* | string | Origin city or airport IATA code. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
| depart_date | string | Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month. |
| destination* | string | Destination city or airport IATA code. |
| Compare outbound routes, inbound routes, or both independently. |
| depart_date | string | Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month. |
| destination* | string | Destination city or airport IATA code. |
| return_date | string | Optional return date for outbound price comparisons. |
| depart_month | string | Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date. |
{
"not": {
"required": [
"depart_date",
"depart_month"
]
},
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"side": {
"enum": [
"origin",
"destination",
"both"
],
"type": "string",
"default": "both",
"description": "Expand airports on the origin side, destination side, or both."
},
"direct": {
"type": "boolean",
"default": false,
"description": "Request nonstop observations only."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for airport and airline names and response text."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"direction": {
"enum": [
"outbound",
"inbound",
"both"
],
"type": "string",
"default": "outbound",
"description": "Compare outbound routes, inbound routes, or both independently."
},
"depart_date": {
"type": "string",
"format": "date",
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
},
"return_date": {
"type": "string",
"format": "date",
"description": "Optional return date for outbound price comparisons."
},
"depart_month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date."
}
},
"additionalProperties": false
}| depart_date |
| string |
| Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month. |
| destination* | string | Destination city or airport IATA code. |
| return_date | string | Optional return date for a round trip. |
| depart_month | string | Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date. |
{
"not": {
"required": [
"depart_date",
"depart_month"
]
},
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Maximum number of public fare items to return."
},
"direct": {
"type": "boolean",
"default": false,
"description": "Request nonstop options only."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for names and response text."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"one_way": {
"type": "boolean",
"description": "Search a one-way trip; inferred from return_date when omitted."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"depart_date": {
"type": "string",
"format": "date",
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
},
"return_date": {
"type": "string",
"format": "date",
"description": "Optional return date for a round trip."
},
"depart_month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date."
}
},
"additionalProperties": false
}| sorting | string | Upstream result ordering. |
| airlines | array | Allowed airline IATA codes, applied locally to the returned sample. |
| currency | string | Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country. |
| grouping | string | Optional upstream grouping mode. |
| value_max | integer | Maximum indicative price in the requested currency. |
| value_min | integer | Minimum indicative price in the requested currency. |
| convenient | boolean | Ask upstream for convenient itineraries. |
| no_lowcost | boolean | Exclude low-cost carriers upstream. |
| trip_class | string | Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases. |
| with_baggage | boolean | Ask upstream for options marked as including baggage. |
| transfers_max | integer | Maximum number of transfers, applied locally to the returned sample. |
| depart_date_max | string | Latest departure date, inclusive. |
| depart_date_min* | string | Earliest departure date, inclusive. |
| return_date_max | string | Latest return date, inclusive. |
| return_date_min | string | Earliest return date, inclusive. |
| trip_duration_max | integer | Maximum trip length in days for round trips. |
| trip_duration_min | integer | Minimum trip length in days for round trips. |
| departure_time_max | string | Latest local departure time in HH:MM format, applied locally. |
| departure_time_min | string | Earliest local departure time in HH:MM format, applied locally. |
| no_visa_at_transfer | boolean | Exclude itineraries flagged as requiring a transit visa. |
{
"type": "object",
"required": [
"pairs",
"depart_date_min"
],
"properties": {
"limit": {
"type": "integer",
"default": 30,
"maximum": 60,
"minimum": 1,
"description": "Maximum upstream samples per pair."
},
"pairs": {
"type": "array",
"items": {
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
}
},
"additionalProperties": false
},
"maxItems": 3,
"minItems": 1,
"description": "One to three origin/destination pairs to search in one batch."
},
"direct": {
"type": "boolean",
"description": "Ask upstream for nonstop options only."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for names and response text."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Upstream result offset."
},
"one_way": {
"type": "boolean",
"description": "Search one-way trips; inferred from return constraints when omitted."
},
"sorting": {
"enum": [
"VALUE_ASC",
"ROUTE_WEIGHT_DESC",
"DISCOUNT_DESC"
],
"type": "string",
"default": "VALUE_ASC",
"description": "Upstream result ordering."
},
"airlines": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9]{2,3}$"
},
"maxItems": 10,
"description": "Allowed airline IATA codes, applied locally to the returned sample."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"grouping": {
"enum": [
"NONE",
"DEPART_DATE",
"DIRECTIONS",
"DATES",
"DATES_NUM_OF_CHANGES",
"YEAR_MONTH"
],
"type": "string",
"description": "Optional upstream grouping mode."
},
"value_max": {
"type": "integer",
"minimum": 0,
"description": "Maximum indicative price in the requested currency."
},
"value_min": {
"type": "integer",
"minimum": 0,
"description": "Minimum indicative price in the requested currency."
},
"convenient": {
"type": "boolean",
"description": "Ask upstream for convenient itineraries."
},
"no_lowcost": {
"type": "boolean",
"description": "Exclude low-cost carriers upstream."
},
"trip_class": {
"enum": [
"economy",
"premium_economy",
"business",
"first",
"Y",
"W",
"C",
"F"
],
"type": "string",
"description": "Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases."
},
"with_baggage": {
"type": "boolean",
"description": "Ask upstream for options marked as including baggage."
},
"transfers_max": {
"type": "integer",
"maximum": 4,
"minimum": 0,
"description": "Maximum number of transfers, applied locally to the returned sample."
},
"depart_date_max": {
"type": "string",
"format": "date",
"description": "Latest departure date, inclusive."
},
"depart_date_min": {
"type": "string",
"format": "date",
"description": "Earliest departure date, inclusive."
},
"return_date_max": {
"type": "string",
"format": "date",
"description": "Latest return date, inclusive."
},
"return_date_min": {
"type": "string",
"format": "date",
"description": "Earliest return date, inclusive."
},
"trip_duration_max": {
"type": "integer",
"minimum": 1,
"description": "Maximum trip length in days for round trips."
},
"trip_duration_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum trip length in days for round trips."
},
"departure_time_max": {
"type": "string",
"pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Latest local departure time in HH:MM format, applied locally."
},
"departure_time_min": {
"type": "string",
"pattern": "^(?:[01][0-9]|2[0-3]):[0-5][0-9]$",
"description": "Earliest local departure time in HH:MM format, applied locally."
},
"no_visa_at_transfer": {
"type": "boolean",
"description": "Exclude itineraries flagged as requiring a transit visa."
}
},
"additionalProperties": false
}| string |
| Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases. |
| depart_date | string | Optional departure date to prefill in live search. |
| destination* | string | Destination city or airport IATA code. |
| return_date | string | Optional return date to prefill in live search. |
{
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"adults": {
"type": "integer",
"default": 1,
"minimum": 1,
"description": "Number of adult passengers."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for the live search page."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"infants": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Number of infant passengers."
},
"children": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Number of child passengers."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"trip_class": {
"enum": [
"economy",
"premium_economy",
"business",
"first",
"Y",
"W",
"C",
"F"
],
"type": "string",
"default": "economy",
"description": "Cabin class; human-readable names are preferred and Y/W/C/F are accepted aliases."
},
"depart_date": {
"type": "string",
"format": "date",
"description": "Optional departure date to prefill in live search."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
},
"return_date": {
"type": "string",
"format": "date",
"description": "Optional return date to prefill in live search."
}
},
"additionalProperties": false
}| group_by | string | Calendar mode: daily departures, monthly minima, or observed round-trip date pairs. |
| depart_date | string | Center date for the local plus-or-minus three-day window. |
| destination* | string | Destination city or airport IATA code. |
| depart_month | string | Month for a daily calendar or observed date pairs. |
| months_ahead | integer | Number of months including the current partial month for month mode. |
| trip_duration_max | integer | Maximum trip length in days for observed date pairs. |
| trip_duration_min | integer | Minimum trip length in days for observed date pairs. |
{
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"top_n": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Maximum number of cheapest dates to include in top_dates."
},
"direct": {
"type": "boolean",
"default": false,
"description": "Request nonstop observations only."
},
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for response text and live-search handoff."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"group_by": {
"enum": [
"departure_at",
"month",
"dates_pair"
],
"type": "string",
"default": "departure_at",
"description": "Calendar mode: daily departures, monthly minima, or observed round-trip date pairs."
},
"depart_date": {
"type": "string",
"format": "date",
"description": "Center date for the local plus-or-minus three-day window."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
},
"depart_month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"description": "Month for a daily calendar or observed date pairs."
},
"months_ahead": {
"type": "integer",
"default": 6,
"maximum": 12,
"minimum": 1,
"description": "Number of months including the current partial month for month mode."
},
"trip_duration_max": {
"type": "integer",
"minimum": 1,
"description": "Maximum trip length in days for observed date pairs."
},
"trip_duration_min": {
"type": "integer",
"minimum": 1,
"description": "Minimum trip length in days for observed date pairs."
}
},
"additionalProperties": false
}| return_date | string | Optional return date for a round trip. |
| depart_month | string | Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date. |
{
"not": {
"required": [
"depart_date",
"depart_month"
]
},
"type": "object",
"required": [
"origin",
"destination"
],
"properties": {
"locale": {
"type": "string",
"default": "en",
"pattern": "^[A-Za-z]{2}(?:-[A-Za-z]{2})?$",
"description": "Language locale for airport and airline names."
},
"market": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Two-letter country market. Set it only when the user explicitly requests a country market or local Aviasurf site; otherwise the service derives it from the departure country."
},
"origin": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Origin city or airport IATA code."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter output currency. Set it only when the user explicitly requests a currency; otherwise the service derives it from the departure country."
},
"depart_date": {
"type": "string",
"format": "date",
"description": "Optional exact departure date. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_month."
},
"destination": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Destination city or airport IATA code."
},
"return_date": {
"type": "string",
"format": "date",
"description": "Optional return date for a round trip."
},
"depart_month": {
"type": "string",
"pattern": "^[0-9]{4}-(0[1-9]|1[0-2])$",
"description": "Optional departure month. Omit both date fields for the cheapest observations across the cached horizon; do not combine with depart_date."
}
},
"additionalProperties": false
}