The Kiwi.com API provides access to a comprehensive database of flight information from Kiwi.
To get started, you'll need to sign up for the Travelpayouts platform and connect to the Kiwi.com program.
The access to Kiwi.com API is provided upon request based on your project description. Please contact our support team for details.
Locations API
Default API endpoint: tequila-api.kiwi.com/
Locations is a simple API used to search, suggest and resolve locations in various situations.
The responses are G-zipped and need to be unpacked (response header Content-Encoding: gzip).
Search locations by query
Type of request used mainly for suggestions (based on incomplete names).
GET /locations/query
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
term (required) — searched term (for suggestions). This parameter expects a full IATA code. If IATA code is not given, the search will go through other available fields: 'id', 'name' or 'code' of the location. It also depends on the 'location_types' specified eg. airport, city, country. The search that is used behind the scenes is elasticsearch. It returns data based on relevancy and many other factors.
Example: PRG -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Search locations by radius
This type of request supports either specification of location by coordinates (lat, lon) or by identifier (slug or id of location — term).
GET /locations/radius
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
lat — latitude of the centre point of the search. 40.7 is also acceptable.
Example: 40.730610 -
lon — longitude of the centre point of the search.
-73.9
is also acceptable.
Example: -73.935242 - term — identifier of the location — slug or id (you cannot specify coordinates & term in the same request).
-
radius — the radious defaults to 250 km but can be changed.
Example: 250 -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" }, "location": { "lat": "50.132625", "lon": "14.977992" }, "alternative_departure_points": [ "id: BRQ", "distance: 200", "duration: 2.5" ], "type": "bus_station" }, } ], "meta": { "locale": "", "status": "" } }
Search locations by box
Get all locations within the specified box.
GET /locations/box
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
low_lat (required) — latitude of southwest corner of geo box search;
40.2
is also acceptable.Example : 40.200610
-
low_lon (required) — longitude of southwest corner of geo box search;
-74.6
is also acceptable.
Example: -74.624328 -
high_lat (required) — latitude of northeast corner of geo box search;
44.7
is also acceptable.
Example: 44.763212 -
high_lon (required) — longitude of northeast corner of geo box search;
-73.3
is also acceptable.
Example: -73.376543 -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } }, "location": { "lon": "0.054167", "lat": "51.505" }, "alternative_departure_points": [ "id: LHR", "distance: 35.8", "duration: 1.4" ], "type": "airport" } ], "meta": { "locale": "", "status": "" } }
Get locations by subentity
Get all locations that are below (in hierarchy) the one specified by id — e.g. for ?type=subentity&term=london_gb
all locations in London are returned (as London is city
, airports
, stations
and bus_stations
are returned).
GET /locations/subentity
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
term (required) — this is the exact IATA airport or ISO3166 location code — station, airport, bus_station, city, autonomous_territory, subdivision, country.
Example: ZW -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displays all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Get locations by id
Get location specified by its id.
GET /locations/id
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
id (required) — this is the exact IATA airport or ISO3166 location code —
station
,airport
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. Multiple ids can be specified by appending&id={id}
.
Example: ZW -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displays all active locations.
Example: true
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Get locations by anything
Get locations specified by any of the following fields for example — id, int_id, code, icao, name, slug, etc.
GET /locations/anything
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
key (required) — key is the field in the response. To be used in conjunction with the 'value' field.
Example: int_id -
value (required) — value of the field selected in the key. To be used in conjunctions with the 'key' field. It returns locations that match the specified conditions.
Example: 1555 -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
active_only — default value = true. It displays all active locations.
Example: true
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Get locations by dump
Get dump of locations data in a specified language. When retrieving large amounts of locations (using type=dump), it is more efficient to use a paginated response. This can be done using the parameter search_after
. In addition, when retrieving paginated data it is advised to use «sort=id», so the returned results are consistent.
GET /locations/dump
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
search_after — To get more locations than is set limit for locations API use this parameter as follows. For the first request
search_after
is not required. Once the response to the first request is received, it contains property (list). For the next request (second page), use the parameter in formsearch_after=0qh&search_after=station#0b000000000010000101000010111101
.
Example: List [ «ᒕ呁ধᐒ妉簄ᰃ峃渄䀀\u0001», «airport0b000000000010001000101111110010» ] -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Search top destinations
This type of request returns a list of destinations most searched / clicked on / booked from the starting point term
. The limit
is used to limit the range of results.
GET /locations/topdestinations
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
term (required) — identifier of the start point — slug or id (
airport
,station
,bus_station
,city
,subdivision
,autonomous_territory
,country
) More than one is possible.
Example: london_gb -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
location_types — desired location output, accepted values:
station
,airport
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
. To use more than onelocation_types
, use multiple&location_types=
.
Example: airport -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
-
source_popularity — based on
searches
(default),bookings
orclicks
.
Example: searches
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Search locations by hashtags
This type of request returns a list of destinations most searched / clicked on / booked from the starting point term
. The limit
is used to limit the range of results.
GET /locations/hashtag
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
hashtag (required) — hashtag that the returned location have to be tagged with.
Example: beach -
term — identifier of the location the returned locations should be part of — id (
airport
,station
,bus_station
,city
,subdivision
,autonomous_territory
,country
).
Example: FR -
month — the month in which the hashtag should be valid. Multiple values are allowed.
Example: 1 -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
active_only — default value = true. It displayes all active locations.
Example: true - sort — desired order of the output. For A->Z use 'sort=name', for Z->A use 'sort=-name'.
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } } ], "meta": { "locale": "", "status": "" } }
Top destinations` hashtags lookup
This type of request returns a list of destinations' hashtags most searched / clicked on / booked from the starting point term
. In other words it can be understood as following: What are the most popular activies at the places that customers tend to search for / click / book when flying from term
? The limit
is used to limit the range of results.
GET /locations/tophashtags
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
term (required) — identifier of the start point — id (
airport
,station
,bus_station
,city
,subdivision
,autonomous_territory
,country
) More than one is possible.
Example: london_gb -
limit — default value = 10. Desired number of results in the output.
Example: 10 -
source_popularity — based on
searches
(default),bookings
orclicks
.
Example: searches -
fallback_popularity — based on
searches
,bookings
orclicks
. Can be left blank. Used if not enough results is returned bysource_popularity
.
Example: bookings
Response example
{ "meta": { "locale": { "code": "en-US", "status": "Locale not specified, using default." } }, "hashtags": [ "sightseeing", "activities", "famous cities", "family fun", "beach", "events" ], "last_refresh": 1611573691 }
Search locations by seo url
GET /locations/slug
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
term (required) — this field expects the exact slug code of the
airport
,station
,bus_station
,city
,autonomous_territory
,subdivision
,country
,region
,continent
.
Example: albany-new-york-united-states -
locale — desired locale output — this is the language of the results. Should any other locale be used other than the specified locales, en-US is used.
Available values : ar-AE, cs-CZ, da-DK, de-DE, el-GR, en-US, es-ES, fi-FI, fr-FR, hu-HU, is-IS, it-IT, iw-IL, ja-JP, ko-KR, lt-LT, ms-MY, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ro-RO, ru-RU, sk-SK, sr-RS, sv-SE, th-TH, tr-TR, uk-UA, zh-CN, zh-TW.
Example: en-US -
active_only — default value = true. It displayes all active locations.
Example: true
Response example
{ "locations": [ { "id": "LCY", "int_id": "9625", "active": true, "code": "LCY", "name": "London City Airport", "slug": "london-city-airport", "alternative_names": [], "rank": "0", "timezone": "Europe/London", "city": { "id": "london_gb", "name": "London", "code": "LON", "slug": "london", "subdivision": "null", "autonomous_territory": "null", "country": { "id": "GB", "name": "United Kingdom", "slug": "united-kingdom", "code": "GB" }, "region": { "id": "northern", "name": "Northern Europe", "slug": "northern-europe" }, "continent": { "id": "europe", "name": "Europe", "slug": "europe", "code": "EU" } }, "location": { "lon": "0.054167", "lat": "51.505" }, "alternative_departure_points": [ "id: LHR", "distance: 35.8", "duration: 1.4" ], "type": "airport" } ], "meta": { "locale": "", "status": "" } }
Search API
Default API endpoint: tequila-api.kiwi.com/
To implement the basic search, you only need the /v2/search
API calls.
Prerequisites
- TLS protocol version 1.2 or later must be used.
- We book the flights with the cheapest fare available.
- The correct date format is dd/mm/YYYY, e.g. 29/05/2021
- local departure and arrival times are indicated by parameters
local_departure
andlocal_arrival
. - We do not support using body in GET requests.
- The responses are G-zipped and need to be unpacked (response header Content-Encoding: gzip).
Basic flights call
The basic flights call could look like this: https://tequila-api.kiwi.com/v2/search?fly_from=LGA&fly_to=MIA&dateFrom=01/04/2021&dateTo=02/04/2021
For more specific searches and filters continue to this specification, where every available parameter is described.
Request
A single flights search. Please note, that only active parameters have been described in this document. Parameters that are not described are deprecated.
GET /search
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
fly_from (required) — Kiwi API ID of the departure location. It accepts multiple values separated by a comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as a subdivision, region, autonomous_territory, continent and specials (Points of interest, such as Times Square).
Some locations have the same code for airport and metropolis (city), e.g. DUS stands for metro code Duesseldorf, Moenchengladbach and Weeze as well as Duesseldorf airport. See the following examples:
- 'fly_from=city:DUS' will match all airports in «DUS», «MGL» and «NRN» (all in the city of Duesseldorf)
- 'fly_from=DUSf will do the same as the above
- 'fly_from=airport:DUS' will only match airport «DUS»
Radius needs to be in form lat-lon-xkm. The number of decimal places for radius is limited to 6. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom.Link to Locations API
.
Example: FRA
-
fly_to — Kiwi api ID of the arrival destination. It accepts the same values in the same format as the 'fly_from' parameter. If you don’t include any value you’ll get aggregated results for some airports.
Example: PRG -
date_from (required) — search flights from this date (dd/mm/yyyy). Use parameters date_from and date_to as a date range for the flight departure.
Parameters 'date_from=01/04/2021' and 'date_to=01/04/2021' mean that the departure can be anytime between the specified dates.
For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_in_dst_from' and 'nights_in_dst_to' parameters.
Example: 01/04/2021 -
date_to — search flights upto this date (dd/mm/yyyy).
Example: 05/04/2021 -
return_from — min return date of the whole trip (dd/mm/yyyy).
Example: 03/04/2021 -
return_to — max return date of the whole trip (dd/mm/yyyy).
Example: 04/04/2021 -
nights_in_dst_from — the minimal length of stay in the destination given in the fly_to parameter.
Example: 2 -
nights_in_dst_to — the maximal length of stay in the destination given in the fly_to parameter. Either both parameters 'nights_in_dst_to' and 'nights_in_dst_from' have to be specified or none of them.
Example: 3 -
max_fly_duration — max flight duration in hours, min value 0.
Example: 20 -
flight_type — switch for oneway/round flights search — will be deprecated in the near future (until then, you have to use the round parameter if one from the nights_in_dst of return date parameters is given.). Available values : round, oneway.
Example: round -
one_for_city — It returns the cheapest flights to every city covered by the to parameter. E.g. if you set it to 1 and your search is from PRG to LON/BUD/NYC, you’ll get 3 results: the cheapest PRG-LON, the cheapest PRG-BUD, and the cheapest PRG-NYC.
one_for_city
andone_per_date
query parameters work only on one-way requests. In case you want to create Return Trip itinerary calendar, you need to request Outbound and Inbound segments separately.
Example: 0 -
one_per_date — returns the cheapest flights for one date. Can be 0 or not included, or one of these two params can be set to 1.
one_for_city
andone_per_date
query parameters work only on one-way requests. In case you want to create Return Trip itinerary calendar, you need to request Outbound and Inbound segments separately.
Example: 0 -
adults — Used to specify the number of adults. Please note, that children are considered adults in our search engine. The default passengers' value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — It specifies the number of children. The default value is 0. The sum of adults, children and the infants cannot be greater than 9. At the moment, children are considered as adults in most of the provided content. Whenever we have the child fare available for some content it will be visible in the response.
- infants — Parameter used to specify the number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
selected_cabins — Specifies the preferred cabin class. Cabins can be: M (economy), W (economy premium), C (business), or F (first class). There can be only one selected cabin for one call.
Example: C -
mix_with_cabins — Allows the client to combine different cabin classes in their request. The response can then contain the same itineraries (flights) with different pricing based on the cabin class. If mix_with_cabins is not set, only selected_cabins is used. Itineraries consisting of more than one cabin class follow this rules:
1. The total time spent in higher class segments (GDS) of a single sector is at least 50% of the total sector’s traveling time.
2. Any segment with traveling time longer than four hours (long-haul) is with the higher cabin class.
Please call the API only with the desired cabin classes and note that the mix_with_cabins class must be lower than the selected_cabins class.
Example: M - fly_days — the list of week days for the flight, where 0 is Sunday, 1 is Monday, etc. URL encoded format for all days: '&fly_days=0&fly_days=1&fly_days=2&…&fly_days=6'
-
fly_days_type — type of set fly_days; It is used to specify whether the flight is an arrival or a departure.
Available values : departure, arrival -
return_fly_days — the list of week days for the flight, where 0 is Sunday, 1 is Monday, etc. URL encoded format for all days:
'&return_fly_days=0&return_fly_days=1&return_fly_days=2&…&return_fly_days=6' -
return_fly_days_type — type of set return_fly_days; It is used to specify whether the flight is an arrival or a departure.
Available values : departure, arrival -
only_working_days — search flights with departure only on working days.
Example: false -
only_weekends — search flights with departure only on weekends.
Example: false -
partner_market — The market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
Example: us -
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_links lead.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za - price_from — result filter, minimal price
- price_to — result filter, maximal price
- dtime_from — result filter, min. departure time (11:00 means 11AM, 23:00 means 11PM).
- dtime_to — result filter, max departure time (11:00 means 11AM, 23:00 means 11PM).
- atime_from — result filter, min arrival time (11:00 means 11AM, 23:00 means 11PM).
- atime_to — result filter, max arrival time (11:00 means 11AM, 23:00 means 11PM).
- ret_dtime_from — result filter, min dep. time of the returning flight (11:00 means 11AM, 23:00 means 11PM).
- ret_dtime_to — result filter, max dep. time of the returning flight (11:00 means 11AM, 23:00 means 11PM).
- ret_atime_from — result filter, min arrival time of the returning flight (11:00 means 11AM, 23:00 means 11PM).
- ret_atime_to — result filter, min arrival time of the returning flight (11:00 means 11AM, 23:00 means 11PM).
- stopover_from — result filter, min length of stopover, 48:00 means 2 days (48 hours).
- stopover_to — result filter, max length of stopover, 48:00 means 2 days (48 hours).
-
max_stopovers — max number of stopovers per itinerary. Use 'max_stopovers=0' for direct flights only.
Example: 2 -
max_sector_stopovers — max number of stopovers per itinerary’s sector.
Example: 2 - conn_on_diff_airport — whether or not to search for connections on different airport, can be set to 0 or 1, 1 is default.
- ret_from_diff_airport — whether or not to search for flights leaving from a different airport than where the customer landed, can be set to 0 or 1, 1 is default.
- ret_to_diff_airport — whether or not to search for flights returning to a different airport than the one from where the customer departed, can be set to 0 or 1, 1 is default.
-
select_airlines — a list of airlines (IATA codes) separated by ',' (commas) that should / should not be included in the search.
The selection or omission of the airline depends on the 'select_airlines_exclude' parameter.
Select a list of airlines and use the 'select_airlines_exclude' parameter to specify whether or not the selected airlines should be excluded/included in the search. -
select_airlines_exclude — it can be thought of as a switch for the 'selectedAirlines' parameter where 'False=select' and 'True=omit'.
If set to true the search returns combinations without the airlines specified in the parent parameterselectedAirlines
.
If set to false the search returns combinations where none of the flights in this combinations is served by any given airline code. -
select_stop_airport — a list of stopover airports (IATA codes) separated by ',' (commas) that should / should not be included.
The selection or omission of the airport depends on the 'select_stop_airport_exclude' parameter.
Select a list of airports and use the 'select_stop_airport_exclude' parameter to specify whether or not the selected airport should be excluded/included in the search. -
select_stop_airport_exclude — It can be thought of as a switch for the 'select_stop_airport' parameter where 'False=include,select' and 'True=exclude,omit'.
If set to true the search returns combinations where a stopover is through one of the given airports.
If is set to false the search returns combinations where none of stopovers is through any of given airports. -
vehicle_type — this parameter allows you to specify the vehicle type. The options are aircraft (default), bus, train.
Example: aircraft -
sort — sorts the results by quality, price, date or duration. Price is the default value.
Available values : price, duration, quality, date - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
Response example
{ "search_id": "0e00b78e-91bb-449d-a1af-f5e626b3b602", "data": [ { "id": "22ee0f6b491f000063ba729a_0", "nightsInDest": null, "duration": { "departure": 11220, "return": 0, "total": 11220 }, "flyFrom": "LGA", "cityFrom": "New York", "cityCodeFrom": "NYC", "countryFrom": { "code": "US", "name": "United States" }, "flyTo": "MIA", "cityTo": "Miami", "cityCodeTo": "MIA", "countryTo": { "code": "US", "name": "United States" }, "distance": 1770.31, "routes": [ "- LGA\n- MIA" ], "airlines": [ "AA" ], "pnr_count": 1, "has_airport_change": false, "technical_stops": 0, "price": 69, "bags_price": { "1": 36.96 }, "baglimit": { "hand_width": 23, "hand_height": 36, "hand_length": 56, "hand_weight": 10, "hold_width": 28, "hold_height": 52, "hold_length": 78, "hold_dimensions_sum": 158, "hold_weight": 23 }, "availability": { "seats": 7 }, "facilitated_booking_available": true, "conversion": { "EUR": 69 }, "quality": 142.86648200000002, "booking_token": "BpnCkNqQQCgJsFyvZChbweyYDAMPOZcG4hMj2jZ--xOulHSxYCwzukDf03iLflxdO07awWun1on4u4FKnJOfbHSp5EvfgUAIkdp6L_YnT8aLVM5gczx8mZ5tpGjPnu9_zaSnYouW41gQd2jF73dMmOoGC_mDNYSq1GZqA3VEU_DUWRjyuyEx2x9pnM5jEy4ujc1ENlEoFPcSyaqqPuIB7_CAALOWKuQqyNoMUNjxAN-d3caz9gn5XyUAxeF8EXSFddGVPQYkxJTlxN_s5uD3bxWtvfutujpEVKoUlNxdV0sBuOogQqCMvZhqlPLBcgA2SbfG9dZY-YC1yuP-nMPX3t7yYfpshni7aQ-G6YXI0KN4Lve3lw2m9FluWFMRVvPlyeicA-1IYxIxL5GUfg96OYr7HfLY40nmqA--IydcjsWLPOI8zYNoi4KMr6YTM0t_XuMGBUwLTjd51Zx-sm_R7tMZ2HHCTEtwTKhFQCNx3WN9MDsTZS5KfrLD73BzHUWWMBMEZ4ux2qJLH3XBeJKzovOGmMzHA-KRBetC5oocLyFshFijM53AWF2yyuJ1-XPEgPvg72qkrOMjtRi2cpYWS1Ig_tqPOUlkpPZmZsWp-cRJdGH2TxmwRrn8cB0uEvkkB", "transfers": [], "type_flights": [ "deprecated" ], "fare": { "adults": 34.5, "children": 34.5, "infants": 34.5 }, "price_dropdown": { "base_fare": 69, "fees": 0 }, "virtual_interlining": false, "route": [ { "fare_basis": "O7ALZNB3", "fare_category": "M", "fare_classes": "B", "fare_family": "", "last_seen": "2021-01-24T02:09:10.000Z", "refresh_timestamp": "2021-01-24T02:09:10.000Z", "return": 0, "bags_recheck_required": false, "guarantee": false, "id": "22ee0f6b491f000063ba729a_0", "combination_id": "22ee0f6b491f000063ba729a", "cityTo": "Miami", "cityFrom": "New York", "cityCodeFrom": "NYC", "cityCodeTo": "MIA", "flyTo": "MIA", "flyFrom": "LGA", "airline": "AA", "operating_carrier": "AA", "equipment": "738", "flight_no": 1249, "vehicle_type": "aircraft", "operating_flight_no": "1249", "local_arrival": "2021-04-02T09:07:00.000Z", "utc_arrival": "2021-04-02T13:07:00.000Z", "local_departure": "2021-04-02T06:00:00.000Z", "utc_departure": "2021-04-02T10:00:00.000Z" } ], "local_arrival": "2021-04-02T09:07:00.000Z", "utc_arrival": "2021-04-02T13:07:00.000Z", "local_departure": "2021-04-02T06:00:00.000Z", "utc_departure": "2021-04-02T10:00:00.000Z" } ], "connections": [], "time": 1, "currency": "EUR", "currency_rate": 1, "fx_rate": 1, "refresh": [], "del": 0, "ref_tasks": [], "search_params": { "flyFrom_type": "airport", "to_type": "airport", "seats": { "passengers": 2, "adults": 1, "children": 1, "infants": 0 } }, "all_stopover_airports": [], "all_airlines": [] }
Multicity API
The /flights_multi endpoint is designed for searching itineraries that involve multiple destinations. You can specify the origin and destination for each leg of the journey, and the API will find the best routes and deals. You can also narrow down your search by specifying exact departure dates or widen it by providing a date range.
To make a request, send a POST-JSON payload with a list of API parameters for each query in the body. The endpoint accepts the same parameters as the /search API call.
Key Features:
- Flexible Itineraries: The legs of your journey don’t need to be continuous, but they must follow a sequence and cannot overlap.
- Leg Limit: You can include up to 9 legs in a single request.
Important Notes:
- Return Trips: This endpoint is not intended for searching return trips. For that, use the /search endpoint.
- Response Validation: Avoid hard-validating the entire response from the Multicity API. Occasionally, some fields may be deprecated, or new fields may be added. It's best to handle these changes flexibly.
Request example
{
"requests": [
{
"fly_to": "LGW",
"fly_from": "PRG",
"date_from": "17/08/2023",
"date_to": "17/08/2023",
"adults": 1
},
{
"fly_to": "LGW",
"fly_from": "PRG",
"date_from": "17/08/2023",
"date_to": "17/08/2023",
"adults": 1
}
]
}
Request parameters:
- apikey (required) — your personal API key (HTTP Basic authentication header).
- fly_to — IATA code of the destination
- fly_from — IATA code of the origin
- date_from — search for flights from this date
- date_to — search for flights up to this date
- adults — specify the number of adults
Response example
{
"id": "string",
"baglimit": {
"hand_height": 0,
"hand_length": 0,
"hand_weight": 0,
"hand_width": 0,
"hold_height": 0,
"hold_length": 0,
"hold_weight": 0,
"hold_width": 0
},
"booking_token": "string",
"price": 0,
"route": [
{
"airlines": [
"string"
],
"baglimit": {
"hand_height": 0,
"hand_length": 0,
"hand_weight": 0,
"hand_width": 0,
"hold_height": 0,
"hold_length": 0,
"hold_weight": 0,
"hold_width": 0
},
"bags_price": {
"1": 0,
"2": 0
},
"cityFrom": "string",
"cityTo": "string",
"conversion": {
"additionalProp1": {}
},
"countryFrom": {
"code": "string",
"name": "string"
},
"countryTo": {
"code": "string",
"name": "string"
},
"distance": 0,
"duration": {
"departure": 0,
"return": 0,
"total": 0
},
"facilitated_booking_available": true,
"flyTo": "string",
"flyfrom": "string",
"has_airport_change": true,
"id": "string",
"local_arrival": "string",
"local_departure": "string",
"nightsInDest": 0,
"pnr_count": 0,
"quality": 0,
"route": [
{
"airline": "string",
"bags_recheck_required": true,
"cityFrom": "string",
"cityTo": "string",
"combination_id": 0,
"equipment": "string",
"fare_basis": "string",
"fare_classes": "string",
"fare_family": "string",
"flight_no": 0,
"flyFrom": "string",
"flyTo": "string",
"guarantee": true,
"id": "string",
"last_seen:": "string",
"local_arrival": "string",
"local_departure": "string",
"operating_carrier": "string",
"refresh_timestamp": "string",
"return": 0,
"utc_arrival": "string",
"utc_departure": "string",
"vehicle_type": "string"
}
],
"utc_arrival": "string",
"utc_departure": "string"
}
]
}
NOMAD API
The Nomad / Travelling Salesman was created for those travelers, who would like to visit n-number of cities in any order. A time restriction is not mandatory. At the moment n = 10.
The responses are G-zipped and need to be unpacked (response header Content-Encoding: gzip).
Please note: The design of this API is different from other APIs. In order to run this properly you need to run the POST request together with the payload body. The body
provides the basic flights information — location
, nights_range
and date_range
.
Each VIA in the payload of the request consists of three body parameters that are used in this API:
-
locations: -
BCN
(required, list) — Kiwi api ID of the departure destination. Accepts multiple values separated by comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses.
Radius needs to be in the form of lat-lon-xkm. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom. The number of decimal places is limited to 6.Link to Locations API
. -
nights_range: —
[3,5]
(optional, string) — number of nights [from,to]. Min is 1 and max is 30 nights. -
date_range: —
[«27/08/2018»,«02/09/2018»]
(optional, string) — date range of the stay
Please note, that either the 'nights_range' or 'date_range' parameters must be populated. If only the 'date_range' is used, the from and to dates are applied. In those cases where both the 'nights_range' and the 'date_range' are populated, then the 'nights_range' works as time windows between 'date_from' and 'date_to'.
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
adults (required) — Used to specify the number of adults. Please note, that children are considered adults in our search engine. The default adults value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — It is used to specify the number of children. The default value is 0. At the moment, children are considered adults in our search engine. We are working on improvements. The sum of adults, children and infants cannot be greater than 9.
- infants — It is used to specify number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYR, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_link leads, market, region and currency.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za - lang — language — if language is added to locale, then everything remains the same, only the language changes.
- xml — returns an xml response instead of json.
- partner_market — the market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
-
sort — sorts the results by quality, price, date or duration. Quality is the default value.
Example: quality - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
-
limit — limit the number of results, max is 200.
Example: 20 -
date_from (required) — search flights from this date (DD/MM/YYYY). Use parameters date_from and date_to as a date range for the flight departure. Parameters 'date_from=01/05/2019' and 'date_to=30/05/2019' mean that the departure can be anytime between the specified dates. For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_on_trip_from' and 'nights_on_trip_to' parameters.
Example: 01/01/2019 -
date_to (required) — search flights upto this date (DD/MM/YYYY).
Example: 31/01/2019 - return_from — search flights from this date (DD/MM/YYYY). Use parameters dateFrom and dateTo as a date range for the flight departure. Parameters ‘date_from=01/05/2019’ and ‘date_to=30/05/2019’ mean that the departure can be anytime between the specified dates. For the dates of the return flights, use the ‘return_to’ and ‘return_from’ or ‘nights_on_trip_from’ and ‘nights_on_trip_to’ parameters.
- return_to — search flights upto this date (DD/MM/YYYY).
- select_airlines — a list of airlines (IATA codes) separated by ',' (commas) that should / should not be included in the search. The selection or omission of the airline depends on the 'select_airlines_exclude' parameter. Select a list of airlines and use the 'select_airlines_exclude' parameter to specify whether or not the selected airlines should be excluded/included in the search.
- select_airlines_exclude — it can be thought of as a switch for the 'select_airlines' parameter where 'False=select' and 'True=omit'. If set to true the search returns combinations without the airlines specified in the parent parameter
select_airlines
. If set to false the search returns combinations where none of the flights in this combinations is served by any given airline code. -
fly_from (required) — Kiwi api ID of the departure destination. Accepts multiple values separated by comma, these values might be airport codes, city IDs, metropolitan codes.
Example: SFO -
fly_to (required) — Kiwi api ID of the arrival destination. Accepts the same values in the same format as the
fly_from
parameter.
Example: LAX - nights_on_trip_from — the minimal length of stay in the destination. Counts nights, not days.
- nights_on_trip_to — the max length of stay in the destination (use only one from the
nights_on_trip_from
/nights_on_trip_to
andreturn_from
/return_to
parameters. If both of them are given, the API uses thenights_on_trip
parameters and the return dates are ignored). When you omit one of these two params, the default value fornights_on_trip_from
is 1 and fornights_on_trip_to
is 14. - conn_on_diff_airport — whether or not to search for connections on different airport, can be set to 0 or 1; 1 is default.
- max_stopovers — global filter — maximum stopover count for each flight.
Response example
{ "response": { "value": { "baglimit": { "hand_height": "None", "hand_length": "None", "hand_weight": "None", "hand_width": "None", "hold_weight": 20 }, "bags_price": { "1": 150, "2": 300 }, "booking_token": "0T6hZkC4xKvv6vKoCqxJiDnXpXzE1Q844kKHQbBBq1cR5mkiRNPibvoHzTrfY7MZPQbf1/4e/21RfgFdGAADFMrFvX1EDcgeBAeHQn44Dd6/B6dPsBRAbT7yZVB4pioK2Kf5Z7nxo09m7Eqo27tYMi1/yNvb3FUVasR6uCl/nQ0n98DejUnXBAFk33z5ibw8yp242I1Yb8Ih16Vgp6jxXwNbTziPn/Aa/Vbg0VLEvMJtDbYlYUwv6eI7wrSRM45ioBcmAxXvlf0gsHoAcdFCVIS+9o7wHlD0udR+IWGdNyNTCFtrRjORBG9P/NJI4DiwhMDvyitnt9CXopfzEfU2hRxlVlBv8mITqMu25UVQrYGA+cTEabZ5HItc3S6xtc3fvBelH/8Oz+GU12zgS+HazZCf/0UzGvL7Qt9RZzw8F5TUoq9cSqd84oa4PJr0NXFXIUmw3O0kacwcUUMfvXaOEWj9DU6ssy7U0JXYOZXZyRhzlifOqNICVuaHnKzKDBVfPVrDMfoADAxYpGvzOGtM57v5ek96xP3v98+wjyDSSTMxFL1yEzCO9qKLMP1i48+tkVVyjZZXFJwVcV+huFMIBnDWNQ84cUuLm3Qg2+1TSG+xh8AEyanRglNSQvQNMFi5CWJyDAwoE5+t5xdJUP9m50ju6cFMgWO02C1lGyzH4uI4pTU4i5b/jLwbRd6KUznC5SrZMRNjF6fa1Q99ZcUQ/E2gMpeX0aPusblt21L78na857JqEKdHShXpROThkCk9ohIYecKA0+WGmkU0yIlQuOxPhYq6I1SuNYWg/+sPLBzzJ+5x6ecXMVCvqYTU69mm", "currency": "EUR", "deep_link": "https://www.kiwi.com/deep?from=PRG&to=BVA&departure=12-12-2018&flightsId=3973635228307542_0%7C3920858677740250_0%7C3961540602430384_0%7C3935152321765312_0%7C4002222539678644_0%7C3945047937951749_0&price=141.0&passengers=1&affilid=kayak_en&lang=en¤cy=EUR&booking_token=0T6hZkC4xKvv6vKoCqxJiDnXpXzE1Q844kKHQbBBq1cR5mkiRNPibvoHzTrfY7MZPQbf1/4e/21RfgFdGAADFMrFvX1EDcgeBAeHQn44Dd6/B6dPsBRAbT7yZVB4pioK2Kf5Z7nxo09m7Eqo27tYMi1/yNvb3FUVasR6uCl/nQ0n98DejUnXBAFk33z5ibw8yp242I1Yb8Ih16Vgp6jxXwNbTziPn/Aa/Vbg0VLEvMJtDbYlYUwv6eI7wrSRM45ioBcmAxXvlf0gsHoAcdFCVIS+9o7wHlD0udR+IWGdNyNTCFtrRjORBG9P/NJI4DiwhMDvyitnt9CXopfzEfU2hRxlVlBv8mITqMu25UVQrYGA+cTEabZ5HItc3S6xtc3fvBelH/8Oz+GU12zgS+HazZCf/0UzGvL7Qt9RZzw8F5TUoq9cSqd84oa4PJr0NXFXIUmw3O0kacwcUUMfvXaOEWj9DU6ssy7U0JXYOZXZyRhzlifOqNICVuaHnKzKDBVfPVrDMfoADAxYpGvzOGtM57v5ek96xP3v98+wjyDSSTMxFL1yEzCO9qKLMP1i48+tkVVyjZZXFJwVcV+huFMIBnDWNQ84cUuLm3Qg2+1TSG+xh8AEyanRglNSQvQNMFi5CWJyDAwoE5+t5xdJUP9m50ju6cFMgWO02C1lGyzH4uI4pTU4i5b/jLwbRd6KUznC5SrZMRNjF6fa1Q99ZcUQ/E2gMpeX0aPusblt21L78na857JqEKdHShXpROThkCk9ohIYecKA0+WGmkU0yIlQuOxPhYq6I1SuNYWg/+sPLBzzJ+5x6ecXMVCvqYTU69mm&type2=salesman", "facilitated_booking_available": false, "price": 141, "route": [ { "airlines": [ "FR" ], "cityFrom": "Prague", "cityTo": "Paris", "countryFrom": { "code": "CZ", "name": "Czechia" }, "countryTo": { "code": "FR", "name": "France" }, "distance": 875.17, "flyFrom": "PRG", "flyTo": "BVA", "has_airport_change": false, "id": "3973635228307542_0|3920858677740250_0", "local_arrival": "2018-12-12T20:30:00.000Z", "local_departure": "2018-12-12T07:05:00.000Z", "pnr_count": 2, "quality": 177.333035, "rank": 0.0193, "route": [ { "airline": "FR", "bags_recheck_required": false, "cityFrom": "Prague", "cityTo": "Rome", "combination_id": "3973635228307542", "equipment": "None", "fare_basis": "WZLDIS2", "fare_classes": "W", "fare_family": "", "flight_no": 8332, "flyFrom": "PRG", "flyTo": "CIA", "guarantee": false, "id": "3973635228307542_0", "last_seen": "2018-11-08T13:55:30.000Z", "local_arrival": "2018-12-12T08:55:00.000Z", "local_departure": "2018-12-12T07:05:00.000Z", "operating_carrier": "None", "refresh_timestamp": "2018-11-08T13:55:30.000Z", "return": 0, "utc_arrival": "2018-12-12T07:55:00.000Z", "utc_departure": "2018-12-12T06:05:00.000Z", "vehicle_type": "aircraft" }, { "airline": "FR", "bags_recheck_required": true, "cityFrom": "Rome", "cityTo": "Paris", "combination_id": "3920858677740250", "equipment": "None", "fare_basis": "NZ1499DC", "fare_classes": "N", "fare_family": "", "flight_no": 9635, "flyFrom": "CIA", "flyTo": "BVA", "guarantee": true, "id": "3920858677740250_0", "last_seen": "2018-11-08T14:43:32.000Z", "local_arrival": "2018-12-12T20:30:00.000Z", "local_departure": "2018-12-12T18:15:00.000Z", "operating_carrier": "None", "refresh_timestamp": "2018-11-08T14:43:32.000Z", "return": 0, "utc_arrival": "2018-12-12T19:30:00.000Z", "utc_departure": "2018-12-12T17:15:00.000Z", "vehicle_type": "aircraft" } ], "transfers": [], "type_flights": [ "lcc-FR" ], "utc_arrival": "2018-12-12T19:30:00.000Z", "utc_departure": "2018-12-12T06:05:00.000Z" } ] } } }
Use any service that makes url encode to create an affiliate link from the field deep_link.
Put the link (deep_link) received after the equal sign of the custom_url parameter in a link of the following form:
https://c111.travelpayouts.com/click?shmarker=YOUR_PARTNER_ID.YOUR_SUB_ID&promo_id=5000&source_type=customlink&type=click&custom_url=https%3A%2F%2Fwww.kiwi.com%2Fdeep%3Ffrom%3DPRG%26to%3DBVA%26departure%3D12-12-2018%26flightsId%3D3973635228307542_0%257C3920858677740250_0%257C3961540602430384_0%257C3935152321765312_0%257C4002222539678644_0%257C3945047937951749_0%26price%3D141.0%26passengers%3D1%26affilid%3Dkayak_en%26lang%3Den%26currency%3DEUR%26booking_token%3D0T6hZkC4xKvv6vKoCqxJiDnXpXzE1Q844kKHQbBBq1cR5mkiRNPibvoHzTrfY7MZPQbf1%2F4e%2F21RfgFdGAADFMrFvX1EDcgeBAeHQn44Dd6%2FB6dPsBRAbT7yZVB4pioK2Kf5Z7nxo09m7Eqo27tYMi1%2FyNvb3FUVasR6uCl%2FnQ0n98DejUnXBAFk33z5ibw8yp242I1Yb8Ih16Vgp6jxXwNbTziPn%2FAa%2FVbg0VLEvMJtDbYlYUwv6eI7wrSRM45ioBcmAxXvlf0gsHoAcdFCVIS%2B9o7wHlD0udR%2BIWGdNyNTCFtrRjORBG9P%2FNJI4DiwhMDvyitnt9CXopfzEfU2hRxlVlBv8mITqMu25UVQrYGA%2BcTEabZ5HItc3S6xtc3fvBelH%2F8Oz%2BGU12zgS%2BHazZCf%2F0UzGvL7Qt9RZzw8F5TUoq9cSqd84oa4PJr0NXFXIUmw3O0kacwcUUMfvXaOEWj9DU6ssy7U0JXYOZXZyRhzlifOqNICVuaHnKzKDBVfPVrDMfoADAxYpGvzOGtM57v5ek96xP3v98%2BwjyDSSTMxFL1yEzCO9qKLMP1i48%2BtkVVyjZZXFJwVcV%2BhuFMIBnDWNQ84cUuLm3Qg2%2B1TSG%2Bxh8AEyanRglNSQvQNMFi5CWJyDAwoE5%2Bt5xdJUP9m50ju6cFMgWO02C1lGyzH4uI4pTU4i5b%2FjLwbRd6KUznC5SrZMRNjF6fa1Q99ZcUQ%2FE2gMpeX0aPusblt21L78na857JqEKdHShXpROThkCk9ohIYecKA0%2BWGmkU0yIlQuOxPhYq6I1SuNYWg%2F%2BsPLBzzJ%2B5x6ecXMVCvqYTU69mm%26type2%3Dsalesman
Note the shmarker parameter, where you need to specify your partner ID and a SubID after a dot (SubID may be skipped).
Aggregation Search
This document describes the four endpoints that can be used to get aggregated flights. The flights can be aggregated by price per city, expand per city (this provides the most detail), sort per city and price per date.
The responses are G-zipped and need to be unpacked (response header Content-Encoding: gzip).
Search price per city
GET /aggregation_search/price_per_city
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
fly_from (required) — Kiwi API ID of the departure location. It accepts multiple values separated by a comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as a subdivision, region, autonomous_territory, continent and specials (Points of interest, such as Times Square).
Some locations have the same code for airport and metropolis (city), e.g. DUS stands for metro code Duesseldorf, Moenchengladbach and Weeze as well as Duesseldorf airport. See the following examples:
- 'fly_from=city:DUS' will match all airports in «DUS», «MGL» and «NRN» (all in the city of Duesseldorf)
- 'fly_from=DUSf will do the same as the above
- 'fly_from=airport:DUS' will only match airport «DUS»
Radius needs to be in form lat-lon-xkm. The number of decimal places for radius is limited to 6. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom.Link to Locations API
.
Example: FRA
-
fly_to — Kiwi api ID of the arrival destination. It accepts the same values in the same format as the 'fly_from' parameter. If you don’t include any value you’ll get aggregated results for some airports.
Example: PRG -
date_from (required) — search flights from this date (dd/mm/yyyy). Use parameters date_from and date_to as a date range for the flight departure.
Parameters 'date_from=01/04/2021' and 'date_to=01/04/2021' mean that the departure can be anytime between the specified dates.
For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_in_dst_from' and 'nights_in_dst_to' parameters.
Example: 01/04/2021 -
date_to (required) — search flights upto this date (dd/mm/yyyy).
Example: 05/04/2021 -
max_fly_duration — max flight duration in hours, min value 0.
Example: 20 -
flight_type — switch for oneway/round flights search — will be deprecated in the near future (until then, you have to use the round parameter if one from the nights_in_dst of return date parameters is given.). Available values : round, oneway.
Example: round -
adults — used to specify the number of adults. Please note, that children are considered adults in our search engine. The default passengers' value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — it specifies the number of children. The default value is 0. The sum of adults, children and the infants cannot be greater than 9. At the moment, children are considered as adults in most of the provided content. Whenever we have the child fare available for some content it will be visible in the response.
- infants — parameter used to specify the number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
partner_market — The market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
Example: us -
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_links lead.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za -
limit — limit number of results, max is 200.
Example: 30 -
sort — sorts the results by quality, price, date or duration. Price is the default value.
Available values : price, duration, quality, date - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
Response example
{ "search_params": { "to_type": "country", "flyFrom_type": "airport", "seats": { "infants": 0, "passengers": 1, "adults": 1, "children": 0 } }, "currency_rate": 1, "refresh": [], "connections": [], "currency": "EUR", "del": 2.080468, "all_airlines": [], "time": 1, "all_stopover_airports": [], "data": { "kastoria_gr": 312, "samos_gr": 283, "plaka_gr": 247, "rhodes_gr": 194, "ioannina_gr": 247, "kozani_gr": 312, "parikia_gr": 249, "kastellorizo_gr": 337, "kalymnos_gr": 310, "preveza_gr": 254, "alexandroupoli_gr": 284, "cephalonia_gr": 176, "volos_gr": 333, "corfu_gr": 190, "kasos_gr": 341, "zakynthos-island_gr": 263, "heraklion_gr": 248, "kalamata_gr": 259, "astypalaia_gr": 309, "santorini_gr": 225, "kos_gr": 224, "mytilene_gr": 271, "lemnos_gr": 282, "patras_gr": 334, "athens_gr": 191, "chania_gr": 208, "kythira_gr": 252, "chios_gr": 247, "icaria_gr": 286, "mykonos_gr": 197, "skiathos_gr": 271, "karpathos_gr": 252, "leros_gr": 308, "sitia_gr": 294, "kavala_gr": 279, "naxos_gr": 252, "syros_gr": 294, "skyros_gr": 238, "thessaloniki_gr": 205 }, "search_id": "78007495-13cf-49ec-9147-95fd4bdd856f" }
Expand per city
Search for response with duration, rating, price and segments count per city.
GET /aggregation_search/expand_per_city
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
fly_from (required) — Kiwi API ID of the departure location. It accepts multiple values separated by a comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as a subdivision, region, autonomous_territory, continent and specials (Points of interest, such as Times Square).
Some locations have the same code for airport and metropolis (city), e.g. DUS stands for metro code Duesseldorf, Moenchengladbach and Weeze as well as Duesseldorf airport. See the following examples:
- 'fly_from=city:DUS' will match all airports in «DUS», «MGL» and «NRN» (all in the city of Duesseldorf)
- 'fly_from=DUSf will do the same as the above
- 'fly_from=airport:DUS' will only match airport «DUS»
Radius needs to be in form lat-lon-xkm. The number of decimal places for radius is limited to 6. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom.Link to Locations API
.
Example: FRA
-
fly_to — Kiwi api ID of the arrival destination. It accepts the same values in the same format as the 'fly_from' parameter. If you don’t include any value you’ll get aggregated results for some airports.
Example: PRG -
date_from (required) — search flights from this date (dd/mm/yyyy). Use parameters date_from and date_to as a date range for the flight departure.
Parameters 'date_from=01/04/2021' and 'date_to=01/04/2021' mean that the departure can be anytime between the specified dates.
For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_in_dst_from' and 'nights_in_dst_to' parameters.
Example: 01/04/2021 -
date_to (required) — search flights upto this date (dd/mm/yyyy).
Example: 05/04/2021 -
max_fly_duration — max flight duration in hours, min value 0.
Example: 20 -
flight_type — switch for oneway/round flights search — will be deprecated in the near future (until then, you have to use the round parameter if one from the nights_in_dst of return date parameters is given.). Available values : round, oneway.
Example: round -
adults — used to specify the number of adults. Please note, that children are considered adults in our search engine. The default passengers' value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — it specifies the number of children. The default value is 0. The sum of adults, children and the infants cannot be greater than 9. At the moment, children are considered as adults in most of the provided content. Whenever we have the child fare available for some content it will be visible in the response.
- infants — parameter used to specify the number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
partner_market — The market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
Example: us -
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_links lead.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za -
limit — limit number of results, max is 200.
Example: 30 -
sort — sorts the results by quality, price, date or duration. Price is the default value.
Available values : price, duration, quality, date - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
Response example
{ "search_params": { "to_type": "country", "flyFrom_type": "airport", "seats": { "infants": 0, "passengers": 1, "adults": 1, "children": 0 } }, "currency_rate": 1, "refresh": [], "connections": [], "currency": "EUR", "del": 2.44155, "all_airlines": [], "time": 1, "all_stopover_airports": [], "data": { "kastoria_gr": { "duration": 196500, "rating": 312, "price": 312, "segments_count": 3 }, "samos_gr": { "duration": 186600, "rating": 283, "price": 283, "segments_count": 3 } }, "search_id": "78007495-13cf-49ec-9147-95fd4bdd856f" }
Sort per city
Search results sorted per city.
GET /aggregation_search/sort_per_city
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
fly_from (required) — Kiwi API ID of the departure location. It accepts multiple values separated by a comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as a subdivision, region, autonomous_territory, continent and specials (Points of interest, such as Times Square).
Some locations have the same code for airport and metropolis (city), e.g. DUS stands for metro code Duesseldorf, Moenchengladbach and Weeze as well as Duesseldorf airport. See the following examples:
- 'fly_from=city:DUS' will match all airports in «DUS», «MGL» and «NRN» (all in the city of Duesseldorf)
- 'fly_from=DUSf will do the same as the above
- 'fly_from=airport:DUS' will only match airport «DUS»
Radius needs to be in form lat-lon-xkm. The number of decimal places for radius is limited to 6. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom.Link to Locations API
.
Example: FRA
-
fly_to — Kiwi api ID of the arrival destination. It accepts the same values in the same format as the 'fly_from' parameter. If you don’t include any value you’ll get aggregated results for some airports.
Example: PRG -
date_from (required) — search flights from this date (dd/mm/yyyy). Use parameters date_from and date_to as a date range for the flight departure.
Parameters 'date_from=01/04/2021' and 'date_to=01/04/2021' mean that the departure can be anytime between the specified dates.
For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_in_dst_from' and 'nights_in_dst_to' parameters.
Example: 01/04/2021 -
date_to (required) — search flights upto this date (dd/mm/yyyy).
Example: 05/04/2021 -
max_fly_duration — max flight duration in hours, min value 0.
Example: 20 -
flight_type — switch for oneway/round flights search — will be deprecated in the near future (until then, you have to use the round parameter if one from the nights_in_dst of return date parameters is given.). Available values : round, oneway.
Example: round -
adults — used to specify the number of adults. Please note, that children are considered adults in our search engine. The default passengers' value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — it specifies the number of children. The default value is 0. The sum of adults, children and the infants cannot be greater than 9. At the moment, children are considered as adults in most of the provided content. Whenever we have the child fare available for some content it will be visible in the response.
- infants — parameter used to specify the number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
partner_market — The market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
Example: us -
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_links lead.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za -
limit — limit number of results, max is 200.
Example: 30 -
sort — sorts the results by quality, price, date or duration. Price is the default value.
Available values : price, duration, quality, date - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
Response example
{ "search_params": { "to_type": "country", "flyFrom_type": "airport", "seats": { "infants": 0, "passengers": 1, "adults": 1, "children": 0 } }, "currency_rate": 1, "refresh": [], "connections": [], "currency": "EUR", "del": 2.080468, "all_airlines": [], "time": 1, "all_stopover_airports": [], "data": { "kastoria_gr": { "sort_value": 312, "segments_count": 3 }, "thessaloniki_gr": { "sort_value": 205, "segments_count": 4 } }, "search_id": "78007495-13cf-49ec-9147-95fd4bdd856f" }
Price per date
Search price per date.
GET /aggregation_search/price_per_date
Request parameters
- apikey (required) — your personal apikey (HTTP Basic authentication header).
-
fly_from (required) — Kiwi API ID of the departure location. It accepts multiple values separated by a comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as a subdivision, region, autonomous_territory, continent and specials (Points of interest, such as Times Square).
Some locations have the same code for airport and metropolis (city), e.g. DUS stands for metro code Duesseldorf, Moenchengladbach and Weeze as well as Duesseldorf airport. See the following examples:
- 'fly_from=city:DUS' will match all airports in «DUS», «MGL» and «NRN» (all in the city of Duesseldorf)
- 'fly_from=DUSf will do the same as the above
- 'fly_from=airport:DUS' will only match airport «DUS»
Radius needs to be in form lat-lon-xkm. The number of decimal places for radius is limited to 6. E.g.-23.24–47.86-500km
for places around Sao Paulo. 'LON' — checks every airport in London, 'LHR' — checks flights from London Heathrow, 'UK' — flights from the United Kingdom.Link to Locations API
.
Example: FRA
-
fly_to — Kiwi api ID of the arrival destination. It accepts the same values in the same format as the 'fly_from' parameter. If you don’t include any value you’ll get aggregated results for some airports.
Example: PRG -
date_from (required) — search flights from this date (dd/mm/yyyy). Use parameters date_from and date_to as a date range for the flight departure.
Parameters 'date_from=01/04/2021' and 'date_to=01/04/2021' mean that the departure can be anytime between the specified dates.
For the dates of the return flights, use the 'return_to' and 'return_from' or 'nights_in_dst_from' and 'nights_in_dst_to' parameters.
Example: 01/04/2021 -
date_to (required) — search flights upto this date (dd/mm/yyyy).
Example: 05/04/2021 -
max_fly_duration — max flight duration in hours, min value 0.
Example: 20 -
flight_type — switch for oneway/round flights search — will be deprecated in the near future (until then, you have to use the round parameter if one from the nights_in_dst of return date parameters is given.). Available values : round, oneway.
Example: round -
adults — used to specify the number of adults. Please note, that children are considered adults in our search engine. The default passengers' value is 1. The sum of adults, children and infants cannot be greater than 9.
Example: 1 - children — it specifies the number of children. The default value is 0. The sum of adults, children and the infants cannot be greater than 9. At the moment, children are considered as adults in most of the provided content. Whenever we have the child fare available for some content it will be visible in the response.
- infants — parameter used to specify the number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
-
partner_market — The market of a particular country from which the request originates. Use ISO 3166–1 alpha-2 to fill in the value.
Example: us -
curr — use this parameter to change the currency in the response.
Available values : AED, AFN, ALL, AMD, ANG, AOA, ARS, AUD, AWG, AZN, BAM, BBD, BDT, BGN, BHD, BIF, BMD, BND, BOB, BRL, BSD, BTC, BTN, BWP, BYN, BZD, CAD, CDF, CHF, CLF, CLP, CNY, COP, CRC, CUC, CUP, CVE, CZK, DJF, DKK, DOP, DZD, EEK, EGP, ERN, ETB, EUR, FJD, FKP, GBP, GEL, GGP, GHS, GIP, GMD, GNF, GTQ, GYD, HKD, HNL, HRK, HTG, HUF, IDR, ILS, IMP, INR, IQD, IRR, ISK, JEP, JMD, JOD, JPY, KES, KGS, KHR, KMF, KPW, KRW, KWD, KYD, KZT, LAK, LBP, LKR, LRD, LSL, LTL, LVL, LYD, MAD, MDL, MGA, MKD, MMK, MNT, MOP, MRO, MTL, MUR, MVR, MWK, MXN, MYR, MZN, NAD, NGN, NIO, NOK, NPR, NZD, OMR, PAB, PEN, PGK, PHP, PKR, PLN, PYG, QAR, QUN, RON, RSD, RUB, RWF, SAR, SBD, SCR, SDG, SEK, SGD, SHP, SLL, SOS, SRD, STD, SVC, SYP, SZL, THB, TJS, TMT, TND, TOP, TRY, TTD, TWD, TZS, UAH, UGX, USD, UYU, UZS, VEF, VND, VUV, WST, XAF, XAG, XAU, XCD, XDR, XOF, XPD, XPF, XPT, YER, ZAR, ZMK, ZMW, ZWL -
locale — the language of city names in the response and also language of kiwi.com website to which deep_links lead.
Available values : ae, ag, ar, at, au, be, bg, bh, br, by, ca, ca-fr, ch, cl, cn, co, ct, cz, da, de, dk, ec, ee, el, en, es, fi, fr, gb, gr, hk, hr, hu, id, ie, il, in, is, it, ja, jo, jp, ko, kr, kw, kz, lt, mx, my, nl, no, nz, om, pe, ph, pl, pt, qa, ro, rs, ru, sa, se, sg, sk, sr, sv, th, tr, tw, ua, uk, us, vn, za -
limit — limit number of results, max is 200.
Example: 30 -
sort — sorts the results by quality, price, date or duration. Price is the default value.
Available values : price, duration, quality, date - asc — can be set to 1 or 0, default is 1 — from cheapest flights to the most expensive.
Response example
{ "search_params": { "to_type": "country", "flyFrom_type": "airport", "seats": { "infants": 0, "passengers": 1, "adults": 1, "children": 0 } }, "currency_rate": 1, "refresh": [], "connections": [], "currency": "EUR", "del": 2.080468, "all_airlines": [], "time": 1, "all_stopover_airports": [], "data": [ { "date": "2019-10-15", "price": 338 }, { "date": "2019-11-15", "price": 286 } ], "search_id": "78007495-13cf-49ec-9147-95fd4bdd856f" }