Kiwi.com API
API Endpoint
https://api.skypicker.comThis document describes the Kiwi.com flights search API.
Endpoint: api.skypicker.com
To implement the basic search, you only need the /locations
and /flights
API calls.
-
Locations API - for the ‘fly_from’ and ‘fly_to’ parameters
-
Airlines - this GET call does not have any specific parameters. It enables the user to get a list of all airlines (both LC - legacy carrier and LCC - low cost carrier) together with their codes.
-
Airline logos - https://images.kiwi.com/airlines/64/<iata_code>.png - this website provides access to all airlines’ logos. To get the desired airline logo, replace the <iata_code> with an actual airline code. Please see this part of the document for a legal statement.
-
Aggregation Flights - to see aggregated search results (per city, per date)
-
Searching and acquiring ground transport - procedural documentation which guides you through the process of searching ground transport connections
-
Search deeplink- the search deeplink leads to the Kiwi.com search page (or search in app if installed), booking deeplink is provided in flights response (for partners only).
-
WebHooks - the document details how relevant information about the state of a reservation is delivered to the customers’ endpoint. It also describes all notifications that are sent from Kiwi.com.
-
WebHooks 2.0 - the document details how relevant information about the state of a reservation is delivered to the customers’ endpoint.
-
Nomad API - Nomad finds the cheapest possible route. Use this document to see how to create Nomad requests and an example response.
-
Travel tip API - this document describes the conditions of when what travel tip is offered. Travel tips help customers save money and/or time.
-
Check Flights - this document describes the parameters used when confirming the price of found flights.
-
Save booking - Save booking initiates the booking on our backend. The response is similar to a response from check_flights but has more parameters.
-
Confirm payment - see this document for information about Zooz payments and credits
-
Visa - see this document for information about travel visas
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/2019
-
In order to implement the
Booking API
you need to use thebooking_token
which contains all the required flights data. These need to be passed as parameters to check flights as well as to save booking calls. -
use
atime
anddtime
as these are the local times and are guaranteed to be correct -
We we do not support using body in GET requests
-
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. -
The responses are G-zipped and need to be unpacked (response header Content-Encoding: gzip).
Partner implementation
Use the parameter partner=picky
for testing your implementation. Before going live, your account manager will assign your custom partner ID to you. You can use api.skypicker.com for both the implementation and testing.
There is no development API as most of the queries are simple GET requests that are not changing the state of any resource (except save_booking
).
How it works
The flights API is a REST API and therefore the regular rules apply. Everything else you need to know is described in this document.
Basic flights call
The basic flights call could look like this:
https://api.skypicker.com/flights?flyFrom=PRG&to=LGW&dateFrom=18/11/2018&dateTo=12/12/2018&partner=picky
It is mandatory to specify the partner parameter. Only then will the response contain the link directly to Kiwi.com booking page where the user can book the specified flight.
For more specific searches and filters continue to this specification, where every available parameter is described.
Other information
Contact Us
In case you cannot find what you are looking for in this document please contact us directly at [email protected].
Service Status
We also have a Service Status page. You can view it here: https://status.kiwi.com/.
Legal information for ‘airline-logos’:
The trademarks, logos, and service marks (hereinafter referred as the “Trademarks”) which may be found here are registered and unregistered. Trademarks of their respective owners. All Trademarks related to the operating airlines and other third party providers which may be found here belong to their respective owners and we use these Trademarks solely for customers’ convenience. Nothing contained on this website. Should be construed as Our pretension of these third party Trademarks or as granting, by implication, estoppel, or otherwise, any license or right to use any Trademark displayed on the Website without the express written permission of its respective owner, or such third party that may own the Trademarks displayed on the Website. Your misuse of the Trademarks displayed on the Website, or any other content on the Website, is strictly prohibited. You must ensure that Your use of the third party content (Trademarks, logos, watermarks and other registered details) complies with all applicable laws and the intellectual property and other rights of the relevant third party provider. You acknowledge and agree that the third party content and services and all intellectual property rights subsisting in the third party content and services will remain the property of the relevant third party provider. No part of the third party content and services may be modified, duplicated, published, uploaded, distributed, translated, adapted, marketed or used, without the prior written consent of the relevant third party provider.
Additional information about bags
Please DO NOT USE search baggage data. Use bag data from booking’s check_flights response
Even if bags are stated as free, they need to be ordered with the reservation.
Baggage included is displayed under “bags_price” parameter in the following way (these are just examples, the prices can differ):
-
“bags_price”: {“1”:10,“2”:25} - meaning that price for 1 bag is 10 Eur and price for 2 bags is 25 (this is cumulative, so the price split is 10+15 Eur)
-
“bags_price”: {“1”:0,“2”:25} - meaning that 1 bag is free of charge and the price for two bags is 25 Eur
-
“bags_price”: {“1”:0,“2”:0} - meaning that both bags are free of charge
-
“bags_price”: {} - meaning that it is not possible to add any bags
flights ¶
A single flight search.
Please note
-
Only active parameters have been described in this document. Parameters that are not described are deprecated.
-
All URLs must be encoded (for example use
%3B
instead of;
)
flights ¶
Headers
Content-Type: application/json
Body
{
"search_params": {
"to_type": "airport",
"flyFrom_type": "airport"
},
"time": 1,
"connections": [],
"currency": "pln",
"currency_rate": 0.2348,
"data": [
{
"mapIdfrom": "edinburgh",
"return_duration": "10h 55m",
"flyTo": "WMI",
"conversion": {
"PLN": 1154,
"EUR": 271
},
"deep_link": "https://www.skypicker.com/deep?type=abc-m14.5&from=EDI&to=WMI&departure=19-12-2015&return=23-12-2015&flightsId=240466858|236557749|245258276|234220297&affilid=skyscanner_pl&price=271.5362&passengers=1&lang=pl¤cy=pln&booking_token=NwyrOTUtH6wv4BdWZTvOrbnFTa5SOifCjnpGoAl4cKO2kB2HhT7afLhR/TDxb+eFu4YtIczyK0WbM+XCt51oGwDK7vohxDpNs2GE3fTG8FoBhxY59V7abVbbkEWcRIOXaJcmIZB1tq37mciGQWi4Sc29PEWEgFYVwxJYBIOJMNLYkB8FOhhUNMDmnaVNHDOgySMJd4it4r5fhopJczkKnJIKoMFEelHE0x5203/3dHkfA7iBk4/c1OYTA61XBIAlsCuTH4D0j0IHASTFV4VXT36kZS9oxvJuya4nyDoff2017Up/UHkaXQbNBAoD5W0A",
"mapIdto": "warsaw",
"nightsInDest": 3,
"id": "240466858|236557749|245258276|234220297",
"fly_duration": "24h 10m",
"countryTo": {
"code": "PL",
"name": "Rzeczpospolita Polska"
},
"bags_price": {
"1": 107.8,
"2": 231.2,
"hand": 20.9
},
"baglimit": {
"hand_height": 40,
"hand_length": 55,
"hand_weight": 7,
"hand_width": 23,
"hold_height": 52,
"hold_length": 78,
"hold_weight": 20,
"hold_width": 28,
"hold_dimensions_sum": 158,
},
"aTimeUTC": 1450643100,
"distance": 1624.4,
"price": 1154,
"type_flights": [
"lcc"
],
"bags_price": {
"1": 100.0,
"2": 200.0,
"hand": 20.9
},
"cityTo": "Warszawa",
"flyFrom": "EDI",
"dTimeUTC": 1450556100,
"p2": 232,
"countryFrom": {
"code": "GB",
"name": "Zjednoczone Królestwo Wielkiej Brytanii"
},
"p1": 232,
"dTime": 1450556100,
"booking_token": "NwyrOTUtH6wv4BdWZTvOrbnFTa5SOifCjnpGoAl4cKO2kB2HhT7afLhR/TDxb+eFu4YtIczyK0WbM+XCt51oGwDK7vohxDpNs2GE3fTG8FoBhxY59V7abVbbkEWcRIOXaJcmIZB1tq37mciGQWi4Sc29PEWEgFYVwxJYBIOJMNLYkB8FOhhUNMDmnaVNHDOgySMJd4it4r5fhopJczkKnJIKoMFEelHE0x5203/3dHkfA7iBk4/c1OYTA61XBIAlsCuTH4D0j0IHASTFV4VXT36kZS9oxvJuya4nyDoff2017Up/UHkaXQbNBAoD5W0A",
"cityFrom": "Edynburg",
"aTime": 1450646700,
"virtual_interlining": true,
"throw_away_ticketing": false,
"route": [
{
"bags_recheck_required": false,
"aTimeUTC": 1450560300,
"mapIdfrom": "edinburgh",
"mapIdto": "dublin",
"flight_no": 819,
"operating_carrier": "",
"dTime": 1450556100,
"latTo": 53.3331,
"flyTo": "DUB",
"return": 0,
"source": null,
"id": "240466858",
"airline": "FR",
"lngTo": -6.24889,
"cityTo": "Dublin",
"cityFrom": "Edynburg",
"lngFrom": -3.1936633587,
"aTime": 1450560300,
"flyFrom": "EDI",
"price": 1,
"latFrom": 55.9485946759,
"dTimeUTC": 1450556100
},
{
"bags_recheck_required": true,
"aTimeUTC": 1450643100,
"mapIdfrom": "dublin",
"mapIdto": "warsaw",
"flight_no": 4543,
"operating_carrier": "",
"dTime": 1450633200,
"latTo": 52.2298,
"flyTo": "WMI",
"return": 0,
"source": null,
"id": "236557749",
"airline": "FR",
"lngTo": 21.0118,
"cityTo": "Warszawa",
"cityFrom": "Dublin",
"lngFrom": -6.24889,
"aTime": 1450646700,
"flyFrom": "DUB",
"price": 133.0,
"latFrom": 53.3331,
"dTimeUTC": 1450633200
},
{
"bags_recheck_required": false,
"aTimeUTC": 1450914900,
"mapIdfrom": "warsaw",
"mapIdto": "dublin",
"flight_no": 4544,
"operating_carrier": "",
"dTime": 1450907400,
"latTo": 53.3331,
"flyTo": "DUB",
"return": 1,
"source": null,
"id": "245258276",
"airline": "FR",
"lngTo": -6.24889,
"cityTo": "Dublin",
"cityFrom": "Warszawa",
"lngFrom": 21.0118,
"aTime": 1450914900,
"flyFrom": "WMI",
"price": 63.0,
"latFrom": 52.2298,
"dTimeUTC": 1450903800
},
{
"bags_recheck_required": true,
"aTimeUTC": 1450943100,
"mapIdfrom": "dublin",
"mapIdto": "edinburgh",
"flight_no": 812,
"operating_carrier": "",
"dTime": 1450938600,
"latTo": 55.9485946759,
"flyTo": "EDI",
"return": 1,
"source": null,
"id": "234220297",
"airline": "FR",
"lngTo": -3.1936633587,
"cityTo": "Edynburg",
"cityFrom": "Dublin",
"lngFrom": -6.24889,
"aTime": 1450943100,
"flyFrom": "DUB",
"price": 15.0,
"latFrom": 53.3331,
"dTimeUTC": 1450938600
}
]
}
]
}
Headers
Content-Type: application/json
Body
{
"message": "Here you will be notified of the error that occurred."
}
Headers
Content-Type: application/json
Body
{
"message": [
{
"errors": [
"Not recognized location: `XXX`"
],
"param": "fly_to"
}
]
}
GETGET/flights{?fly_from,fly_to,date_from,date_to,nights_in_dst_from,nights_in_dst_to,return_from,return_to,max_fly_duration,flight_type,adults,children,infants,selected_cabins,mix_with_cabins,adult_hold_bag,adult_hand_bag,child_hold_bag,child_hand_bag,fly_days,fly_days_type,ret_fly_days,ret_fly_days_type,one_for_city,only_working_days,only_weekends,one_per_date,direct_flights,locale,partner,partner_market,v,xml,curr,price_from,price_to,dtime_from,dtime_to,atime_from,atime_to,ret_dtime_from,ret_dtime_to,ret_atime_from,ret_atime_to,stopover_from,stopover_to,max_stopovers,conn_on_diff_airport,ret_from_diff_airport,ret_to_diff_airport,select_airlines,select_stop_airport,select_airlines_exclude,select_stop_airport_exclude,limit,sort,asc}
Response parameters
PARAMETER NAME | PARAMETER NAME | PARAMETER NAME | DESCRIPTION |
---|---|---|---|
search_params | |||
to_type | the type of destination (airport, city) | ||
flyFrom_type | the type of the from location (airport, city) | ||
time | always set to 1 |
||
connections | It is a list of sector_ids where the sector_id is written as ['flight_id', 'dst_id', 'segment_count'] . The sectors are taken from the itinerary['connections'] . One itinerary can have more than one sector. |
||
currency | currency code | ||
currency_rate | the currency rate for the currency and EUR conversion | ||
data | |||
mapIdfrom | The city that is specified in the flyFrom parameter. It is written in its normalised form and is taken from the ‘Locations API’. |
||
return_duration | the duration of the return flight in hours | ||
flyTo | IATA code of the destination | ||
conversion | lists the selected currency and the conversion to EUR | ||
deep_link | the deep link URL | ||
mapIdTo | The city that is specified in the flyTo parameter. It is written in its normalised form and is taken from the ‘Locations API’. |
||
nightsInDest | the number of nights in the destination | ||
id | a unique itinerary identifier. It is made up of flight IDs and is divided by | |
||
fly_duration | duration of flight in hours (sum of of arrival time - departure time of all legs) | ||
countryTo | destination country information | ||
code | destination country IATA code | ||
name | destination country name | ||
DO NOT USE | bags_price | prices of bags. Where value is the price. Key is “hand” in case of hand baggage. In case of tier-based price key is “1” or “2” (for tier 1, tier 2) | |
DO NOT USE | 1 | the price of one checked bag | |
DO NOT USE | 2 | the price of two checked bags | |
DO NOT USE | hand | the price of the hand bag | |
DO NOT USE | baglimit | hand_height | the height of the hand bag in cm |
DO NOT USE | hand_length | the length of the hand bag in cm | |
DO NOT USE | hand_weight | the weight of the hand bag in kg; weight=null is used for unlimited weight cabin bag | |
DO NOT USE | hand_width | the width of the hand bag in cm | |
DO NOT USE | hold_height | the height of the hold bag in cm | |
DO NOT USE | hold_length | the length of the hold bag in cm | |
DO NOT USE | hold_weight | the weight of the hold bag in kg | |
DO NOT USE | hold_width | the width of the hold bag in cm | |
USE check_flights | hold_dimensions_sum | the sum of all dimensions of the hold bags in cm; it can also be null | |
aTimeUTC | timestamp of flight arrival time in Coordinated Universal Time | ||
distance | distance between origin and destination in kilometers | ||
price | price of the itinerary in currency specified in “currency” field | ||
type_flights | lcc for low cost carriers or lc for legacy carriers | ||
cityTo | the city destination | ||
flyFrom | IATA code of the origin airport | ||
dTimeUTC | timestamp of flight departure time in UTC | ||
p2 | deprecated - returns 1 |
||
countryFrom | the origin country information | ||
code | the origin country code | ||
name | the origin country name | ||
p1 | deprecated - returns 1 |
||
dTime | the departure UNIX timestamp in the time zone of the departure airport. The best way to handle it is to set up your server to UTC+0 time and just transfer the timestamps to human-readable format without any time zones necessary. | ||
booking_token | the booking token | ||
cityFrom | the departure city name | ||
aTime | the arrival UNIX timestamp in the time zone of the arrival airport. The best way to handle it is to set up your server to UTC+0 time and just transfer the timestamps to human-readable format without any time zones necessary. | ||
virtual_interlining | should the itinerary consist of at least two PNR, then vi=true |
||
throw_away_ticketing | tat=true when at least one segment is a hidden flight |
||
route | information about the route | ||
bags_recheck_required | true - bags need to be rechecked, false - no need to recheck bags |
||
aTimeUTC | timestamp of flight arrival time in Coordinated Universal Time | ||
mapIdfrom | The city that is specified in the fly_from parameter. It is written in the normalised form and is taken from the ‘Locations API’. |
||
mapIdto | The city that is specified in the flyTo parameter. It is written in the normalised form and is taken from the ‘Locations API’. |
||
flight_no | the flight number | ||
dTime | the departure UNIX timestamp in the time zone of the departure airport. The best way to handle it is to set up your server to UTC+0 time and just transfer the timestamps to human-readable format without any time zones necessary. | ||
latTo | latitude of the destination airport | ||
flyTo | IATA code of the destination airport | ||
return | return flight flag. 0 for no, 1 for yes. |
||
source | data source of where the flight was found, such as GDS , lcc-FR . Deprecated - always set to 1 . |
||
id | flight id - part of the piped data_booking_token_id | ||
airline | the airline code | ||
fare_basis | (often just referred to as a fare basis) an alphabetic or alpha-numeric code used by airlines to identify a fare type and allow airline staff and travel agents to find the rules applicable to that fare | ||
fare_family | group of fares that airlines use to market different travel options associated with an airfare, such as non-refundable, flexible, etc. | ||
fare_classes | information about the particular class. | ||
lngTo | longitude of the destination airport | ||
cityTo | destination city name | ||
cityFrom | origin city name | ||
lngFrom | longitude of the origin airport | ||
aTime | the arrival UNIX timestamp in the time zone of the arrival airport. The best way to handle it is to set up your server to UTC+0 time and just transfer the timestamps to human-readable format without any time zones necessary. | ||
flyFrom | IATA code of the origin airport | ||
price | the price in EUR (without margin) of that one flight; deprecated - always set to 1 . |
||
latFrom | latitude of the origin airport | ||
dTimeUTC | timestamp of flight departure time in UTC | ||
operating_carrier | is the airline whose aircraft and personnel operates the flight. It can return an airline or null. | ||
equipment | type of aircraft example: 32A (airbus A320), functionality is still in beta form and it may be empty when we do not have this information |
- fly_from
string
(required) Example: CZKiwi api ID of the departure location.
It accepts multiple values separated by comma, these values might be airport codes, city IDs, two letter country codes, metropolitan codes and radiuses as well as 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=DUS
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
. Deprecated format: flyFrom
-
- fly_to
string
(optional) Example: portoKiwi api ID of the arrival destination. It accepts the same values in the same format as the
fly_from
parameter. Deprecated format: to.If you don’t include any value you’ll get results for all airports in the world.
- v
integer
(required) Example: 3geographical data API version. Default value ‘v=3’.
- date_from
string
(required) Example: 08/08/2017search flights from this date (dd/mm/YYYY). Use parameters date_from and date_to as a date range for the flight departure. Deprecated format: dateFrom Parameters ‘date_from=01/05/2016’ and ‘date_to=30/05/2016’ 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.
- date_to
string
(required) Example: 08/09/2017search flights upto this date (dd/mm/YYYY). Deprecated format: dateTo
- return_from
string
(optional) Example: 08/08/2017min return date of the whole trip (dd/mm/YYYY). Deprecated format: returnFrom
- return_to
string
(optional) Example: 08/09/2017max return date of the whole trip (dd/mm/YYYY). Deprecated format: returnTo
- nights_in_dst_from
integer
(optional) Example: 2the minimal length of stay in the destination given in the fly_to parameter. Deprecated format: daysInDestinationFrom
- nights_in_dst_to
integer
(optional) Example: 14the maximal length of stay in the destination given in the fly_to parameter. Deprecated format: daysInDestinationTo. Either both parameters ‘nights_in_dst_to’ and ‘nights_in_dst_from’ have to be specified or none of them.
- max_fly_duration
integer
(optional) Example: 6max flight duration in hours, min value 0. Deprecated format: maxFlyDuration
- flight_type
string
(optional) Example: onewayswitch 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.) Deprecated format: typeFlight
Choices:
round
oneway
- one_for_city
boolean
(optional) Example: 0returns 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. Deprecated format: oneforcity- one_per_date
boolean
(optional) Example: 0returns 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.- adults
integer
(optional) Example: 2Used 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. Deprecated format: passengers
- children
integer
(optional) Example: 3It 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
integer
(optional) Example: 0It is used to specify number of infants. The default value is 0. The sum of adults, children and infants cannot be greater than 9.
- selected_cabins
string
(optional) Example: FThis parameter is used to specify the preferred classes.
M
(economy),W
(economy premium),C
(business),F
(first class). It is not a good practice to call this API with all the cabins. Please call the API only with the single desired cabin.Choices:
M
W
C
F
- mix_with_cabins
string
(optional) Example: MThis parameter allows the client to specify and combine two different classes in their request. In the results there can be the same itineraries (flights) with different pricing based on the cabin class. If
mix_with_cabins
is not set, itineraries are composed from classes specified in theselected_cabins
parameter. In such a case where the client chooses mixed classes, the mixture of selected classes can occur within one result (otherwise the results consist of itineraries of the same class) following these conditions: The total time spent in the higher class segments (GDS) of single sector needs to be at least 50% of the total sector’s travelling time. And any segment with travelling time longer than 4 hours needs to be with higher class. (considered as long-haul)M
(economy),W
(economy premium),C
(business),F
(first class). It is not a good practice to call this API with all the cabins. Please call the API only with the desired cabins.Choices:
M
W
C
F
- adult_hold_bag
integer
(optional) Example: 1,0Number of adult hold bags separated by commas. The first number represents the number of bags for passenger 1, the second number is for passenger 2 etc. Can only contain up to two hold bags per passenger.
- adult_hand_bag
integer
(optional) Example: 1,1Number of adult hand bags separated by commas. The first number represents the number of bags for passenger 1, the second number is for passenger 2 etc. Can only contain up to one hand bag per passenger.
- child_hold_bag
integer
(optional) Example: 2,1,0Number of child hold bags separated by commas. The first number represents the number of bags for passenger 1, the second number is for passenger 2 etc. Can only contain up to two hold bags per passenger.
- child_hand_bag
integer
(optional) Example: 1,1,0Number of child hand bags separated by commas. The first number represents the number of bags for passenger 1, the second number is for passenger 2 etc. Can only contain up to one hand bag per passenger.
- fly_days
list
(optional) Example: [0,1,2,3,4,5,6]the list of week days for the flight, where 0 is Sunday, 1 is Monday, etc. Deprecated format: flyDays URL encoded format for all days : ‘&fly_days=0&fly_days=1&fly_days=2&…&fly_days=6’
- fly_days_type
string
(optional) Example: departuretype of set fly_days; It is used to specify whether the flight is an arrival or a departure. Deprecated format: flyDaysType
Choices:
departure
arrival
- ret_fly_days
list
(optional) Example: [0,1,2,3,4,5,6]the list of week days for the flight, where 0 is Sunday, 1 is Monday, etc. Deprecated format: returnFlyDays URL encoded format for all days: ‘&ret_fly_days=0&ret_fly_days=1&ret_fly_days=2&…&ret_fly_days=6’
- ret_fly_days_type
string
(optional) Example: departuretype of set ret_fly_days; It is used to specify whether the flight is an arrival or a departure. Deprecated format: returnFlyDaysType
Choices:
departure
arrival
- only_working_days
boolean
(optional) Example: 0search flights with departure only on working days. Deprecated format: onlyWorkingDays. DEPRECATED
- only_weekends
boolean
(optional) Example: 0search flights with departure only on weekends. Deprecated format: onlyWeekends. DEPRECATED
- partner
string
(required) Example: pickypartner ID. If present, the result will include a link to a specific trip directly to Kiwi.com, with the affiliate ID included (use picky partner ID for testing)
- partner_market
string
(optional) Example: usMarket from which the request is coming from.
- curr
string
(optional) Example: EURuse this parameter to change the currency in the response
Choices:
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
string
(optional) Example: enthe language of city names in the response and also language of kiwi.com website to which deep_link leads
Choices:
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
integer
(optional) Example: 1result filter, minimal price
- price_to
integer
(optional) Example: 10000result filter, maximal price
- dtime_from
string
(optional) Example: 00:00result filter, min. departure time (11:00 means 11AM, 23:00 means 11PM). Deprecated format: dtimefrom
- dtime_to
string
(optional) Example: 00:00result filter, max departure time. Deprecated format: dtimeto
- atime_from
string
(optional) Example: 00:00result filter, min arrival time. Deprecated format: atimefrom
- atime_to
string
(optional) Example: 00:00result filter, max arrival time. Deprecated format: atimeto
- ret_dtime_from
string
(optional) Example: 00:00result filter, min dep. time of the returning flight. Deprecated format: returndtimefrom
- ret_dtime_to
string
(optional) Example: 00:00result filter, max dep. time of the returning flight. Deprecated format: returndtimeto
- ret_atime_from
string
(optional) Example: 00:00result filter, min arrival time of the returning flight. Deprecated format: returnatimefrom
- ret_atime_to
string
(optional) Example: 00:00result filter, min arrival time of the returning flight. Deprecated format: returnatimeto
- stopover_from
string
(optional) Example: 00:00result filter, min length of stopover, 48:00 means 2 days (48 hours). Deprecated format: stopoverfrom
- stopover_to
string
(optional) Example: 00:00result filter, max length of stopover, 48:00 means 2 days (48 hours). Deprecated format: stopoverto
- max_stopovers
integer
(optional) Example: 2max number of stopovers. Deprecated format: maxstopovers
- conn_on_diff_airport
integer
(optional) Example: 1whether or not to search for connections on different airport, can be set to 0 or 1, 1 is default. Deprecated format: connectionsOnDifferentAirport
- ret_from_diff_airport
integer
(optional) Example: 1whether 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. Deprecated format: returnFromDifferentAirport
- ret_to_diff_airport
integer
(optional) Example: 1whether 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. Deprecated format: returnToDifferentAirport
- select_airlines
string
(optional) Example: FR,AAa list of airlines (IATA codes) separated by ‘,’ (commas) that should / should not be included in the search… Deprecated format: selectedAirlines 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
boolean
(optional) Example: Falseit 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. Deprecated format: selectedAirlinesExclude- select_stop_airport
string
(optional) Example: BCN,FRAa list of stopover airports (IATA codes) separated by ‘,’ (commas) that should / should not be included. Deprecated format: selectedStopoverAirports in the search. 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
boolean
(optional) Example: FalseIt 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. Deprecated format: selectedStopoverAirportsExclude
- vehicle_type :
string
(required) Example: aircraftthis parameter allows you to specify the vehicle type. Aircraft is the default value. It is possible to enter more than one option separated by comma.
Choices:
aircraft
bus
train
- limit
integer
(optional) Example: 200limit number of results; the default value is 200; max is up to the partner (500 or 1000)
- sort
string
(optional) Example: pricesorts the results by quality, price, date or duration. Price is the default value.
Choices:
price
duration
quality
date
- asc
integer
(optional) Example: 1can be set to 1 or 0, default is 1 - from cheapest flights to the most expensive
- xml
integer
(optional)returns an xml response instead of json
- direct_flights
boolean
(optional) Example: 0search only for direct flights, can be set to 0 or 1, 0 is default. DEPRECATED, use max_stopovers=0. Deprecated format: directFlights
flights_multi ¶
Multicity flights are great when traveling through a number of destinations. It allows the customer to specify the from and to locations and finds the best routes and deals. Specifying specific departure dates or a date range narrows or widens the search results, respectively.
Please note:
-
Flights_multi accepts the same parameters as the /flights API call. These parameters are to be used in the body of the request not in the URL.
-
/flights_multi
is not to be used for searching for return trips. Use/flights
instead. -
The number of passengers needs to be requested in each segment and not in query or outside the
"requests"
list
This call is to be used in search_multicity_ (aka multi-stop or multi-leg) itineraries. Legs are not required to be continuous but have to in sequence one after another.
To do a request, send a POST json payload with a list of API parameters for each search query.
Response is a list of itineraries. The format of itineraries is the same as for a /flights
call.
Each result has its own deeplink which can be used to forward the user to Kiwi booking e.g.:
https://www.kiwi.com/deep?type=default&from=PRG&to=LGW&departure=24-05-2017&flightsId=EJ635397264_189412776%7CEJ635397264_203224652&affilid=picky&price=78 &passengers=1&lang=en¤cy=GBP&booking_token=frgUlO25...<snipped>
flights_multi ¶
Headers
Content-Type: application/json
Body
{
"requests": [
{
"fly_from": "MAD",
"fly_to": "DXB",
"date_from": "06/08/2019",
"date_to": "06/08/2019",
"direct_flights": 0,
"passengers": 2,
"adults": 2,
"infants": 0,
"children": 0
},
{
"fly_from": "DXB",
"fly_to": "CAI",
"date_from": "13/08/2019",
"date_to": "13/08/2019",
"direct_flights": 0,
"passengers": 2,
"adults": 2,
"infants": 0,
"children": 0
},
{
"fly_from": "CAI",
"fly_to": "MAD",
"date_from": "20/08/2019",
"date_to": "20/08/2019",
"direct_flights": 0,
"passengers": 2,
"adults": 2,
"infants": 0,
"children": 0
}
]
}
Headers
Content-Type: application/json
Body
{
"price": 218,
"deep_link": "https://www.kiwi.com/deep?from=LTN&to=OTP&departure=23-04-2019&flightsId=15724116492639301_0%7C3913163205378087_0&price=218.0&passengers=1&affilid=picky&lang=en¤cy=USD&booking_token=0T6hZkC4xKvv6vKoCqxJiOuia1/IKgs9amQtIzWzjBMJPE9pktTi7gJtFEqd8RDOTeD75hOt/P4PM4fGoiYH2BPYCaZ0UERmENRu1qtJzvROpL3RsP3mO6mYvEcl18V3bU8xFkSeUUO6plAWeJXSwMse0m6+4SR5lEYRsKeZtw8STO5ctN9gEv1OWDbb8hhTCbAeDDebCIHCneGEu9nJ6n1FMq9rUsuCAcCrjIxEVH+qZ1r5d0kLNxxksmqOxFOOcD5iXYqWU3BRtMFou23B+bXQH2PyFMjrYz5aJfzIQI2B7xGmx5SoQGpKHvBjdQ/8rz5Sllo2yLfKpooX1WL7YLdx1A277c9lcdewmvgjarNDlBNGxsZxMpTXD50tHF6ep6t/j3lSY0BTUjWfXgU74KpC8lWPOoIDXtzhoirvTsk5aBu0fSNyP6U2C4xYxwJPoz6INqsI4wXsHF/JOnmU76WTM8TSCurS0YdEDsZJZEQqeaQUWu6yWjgOxzK/6XS0bwt8gOnCMFwAEO42q/hrCOtB7htx1ASHduJN9He7TrbsctdvE0iCtGCNR7I+rfpE&type2=multicity",
"route": [
{
"mapIdfrom": "london_gb",
"duration": {
"total": 11400,
"return": 0,
"departure": 11400
},
"quality": 200.33324,
"flyTo": "OTP",
"conversion": {
"USD": 185,
"EUR": 163
},
"mapIdto": "bucharest_ro",
"nightsInDest": null,
"airlines": [
"W6"
],
"id": "15724116492639301_0",
"pnr_count": 1,
"fly_duration": "3h 10m",
"countryTo": {
"code": "RO",
"name": "Romania"
},
"baglimit": {
"hand_width": 23,
"hold_weight": 20,
"hand_height": 40,
"hand_weight": 10,
"hand_length": 55
},
"aTimeUTC": 1556049300,
"has_airport_change": false,
"p3": 1,
"price": 185,
"type_flights": [
"lcc-W6"
],
"bags_price": {
"1": 42.05
},
"cityTo": "Bucharest",
"transfers": [],
"flyFrom": "LTN",
"dTimeUTC": 1556037900,
"p2": 1,
"distance": 2109.87,
"p1": 1,
"dTime": 1556041500,
"found_on": [
"deprecated"
],
"facilitated_booking_available": false,
"routes": [
[
"LTN",
"OTP"
]
],
"cityFrom": "London",
"aTime": 1556060100,
"route": [
{
"bags_recheck_required": false,
"mapIdfrom": "london_gb",
"flight_no": 3008,
"original_return": 0,
"lngFrom": -0.368333,
"id": "15724116492639301_0",
"guarantee": false,
"refresh_timestamp": 0,
"source": "deprecated",
"combination_id": "15724116492639301",
"fare_family": "",
"flyTo": "OTP",
"equipment": null,
"latFrom": 51.874722,
"lngTo": 26.102222,
"fare_basis": "IREG",
"mapIdto": "bucharest_ro",
"aTimeUTC": 1556049300,
"return": 0,
"price": 1,
"operating_carrier": "",
"fare_classes": "I",
"cityTo": "Bucharest",
"vehicle_type": "aircraft",
"flyFrom": "LTN",
"dTimeUTC": 1556037900,
"latTo": 44.572222,
"dTime": 1556041500,
"found_on": "deprecated",
"airline": "W6",
"cityFrom": "London",
"aTime": 1556060100,
"last_seen": 1552988069
}
],
"countryFrom": {
"code": "GB",
"name": "United Kingdom"
}
},
{
"mapIdfrom": "frankfurt_de",
"duration": {
"total": 5700,
"return": 0,
"departure": 5700
},
"quality": 53.666605,
"flyTo": "STN",
"conversion": {
"USD": 33,
"EUR": 29
},
"mapIdto": "london_gb",
"nightsInDest": null,
"airlines": [
"FR"
],
"id": "3913163205378087_0",
"pnr_count": 1,
"fly_duration": "1h 35m",
"countryTo": {
"code": "GB",
"name": "United Kingdom"
},
"baglimit": {
"hand_width": 20,
"hold_weight": 20,
"hand_height": 40,
"hand_weight": 10,
"hand_length": 55
},
"aTimeUTC": 1556433300,
"has_airport_change": false,
"p3": 1,
"price": 33,
"type_flights": [
"lcc-FR"
],
"bags_price": {
"1": 18
},
"cityTo": "London",
"transfers": [],
"flyFrom": "FRA",
"dTimeUTC": 1556427600,
"p2": 1,
"distance": 619.32,
"p1": 1,
"dTime": 1556434800,
"found_on": [
"deprecated"
],
"facilitated_booking_available": false,
"routes": [
[
"FRA",
"STN"
]
],
"cityFrom": "Frankfurt",
"aTime": 1556436900,
"route": [
{
"bags_recheck_required": false,
"mapIdfrom": "frankfurt_de",
"flight_no": 1686,
"original_return": 0,
"lngFrom": 8.570556,
"id": "3913163205378087_0",
"guarantee": false,
"refresh_timestamp": 1553007395,
"source": "deprecated",
"combination_id": "3913163205378087",
"fare_family": "",
"flyTo": "STN",
"equipment": null,
"latFrom": 50.033056,
"lngTo": 0.235,
"fare_basis": "TLDISZP",
"mapIdto": "london_gb",
"aTimeUTC": 1556433300,
"return": 0,
"price": 1,
"operating_carrier": null,
"fare_classes": "T",
"cityTo": "London",
"vehicle_type": "aircraft",
"flyFrom": "FRA",
"dTimeUTC": 1556427600,
"latTo": 51.885,
"dTime": 1556434800,
"found_on": "deprecated",
"airline": "FR",
"cityFrom": "Frankfurt",
"aTime": 1556436900,
"last_seen": 1553007395
}
],
"countryFrom": {
"code": "DE",
"name": "Germany"
}
}
],
"booking_token": "0T6hZkC4xKvv6vKoCqxJiOuia1/IKgs9amQtIzWzjBMJPE9pktTi7gJtFEqd8RDOTeD75hOt/P4PM4fGoiYH2BPYCaZ0UERmENRu1qtJzvROpL3RsP3mO6mYvEcl18V3bU8xFkSeUUO6plAWeJXSwMse0m6+4SR5lEYRsKeZtw8STO5ctN9gEv1OWDbb8hhTCbAeDDebCIHCneGEu9nJ6n1FMq9rUsuCAcCrjIxEVH+qZ1r5d0kLNxxksmqOxFOOcD5iXYqWU3BRtMFou23B+bXQH2PyFMjrYz5aJfzIQI2B7xGmx5SoQGpKHvBjdQ/8rz5Sllo2yLfKpooX1WL7YLdx1A277c9lcdewmvgjarNDlBNGxsZxMpTXD50tHF6ep6t/j3lSY0BTUjWfXgU74KpC8lWPOoIDXtzhoirvTsk5aBu0fSNyP6U2C4xYxwJPoz6INqsI4wXsHF/JOnmU76WTM8TSCurS0YdEDsZJZEQqeaQUWu6yWjgOxzK/6XS0bwt8gOnCMFwAEO42q/hrCOtB7htx1ASHduJN9He7TrbsctdvE0iCtGCNR7I+rfpE"
}
POSTPOST/flights_multi{?partner,locale,curr}
- partner
string
(required) Example: pickyyour partner ID
- locale
string
(optional) Example: enlocalization, if you are using it for flights
- curr
string
(optional) Example: GBPcurrency, if you are using it for flights
Generated by aglio on 10 Dec 2019