Kiwi.com affiliate program API

The Kiwi.com API provides access to a comprehensive database of flight information from Kiwi.

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 one location_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 one location_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 one location_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 one location_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 form search_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 one location_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 one location_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 or clicks.
    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 or clicks.
    Example: searches
  • fallback_popularity — based on searches, bookings or clicks. Can be left blank. Used if not enough results is returned by source_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 and local_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 and one_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 and one_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 parameter selectedAirlines.
    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 and return_from / return_to parameters. If both of them are given, the API uses the nights_on_trip parameters and the return dates are ignored). When you omit one of these two params, the default value for nights_on_trip_from is 1 and for nights_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&currency=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"
}