Kiwi.com Flight Search API Documentation Search one-way flights, or add a return date for a return trip. Each itinerary has the price, duration, segments with flight number, marketing and operating carrier, cabin and local times, layovers, baggage rules, a booking link and flags for virtual interlining and hidden-city routing. Every filter is applied by Kiwi.com and checked before the answer: dates, stops and price band. A search returns one result set of up to 50 itineraries and has no pages. total_available is the number of itineraries returned, at most 50. An empty list with a price band means no offer within that band.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
3 required parameters needed before sending a request.
14 optional filters available.
string
Required
Kiwi.com place id from the locations endpoint (City:berlin_de, Station:airport:BER) or an airport code (BER). Example: City:berlin_de.
example
string
Required
Place id or airport code of the destination. Example: City:london_gb.
example
string
Required
Departure date, YYYY-MM-DD, today or later. Every result departs on this date.
2026-06-15
string
Optional
Return date, YYYY-MM-DD. Leave it out for a one-way search. Every inbound leg departs on this date.
2026-06-15
integer
Optional
Adults, 1 to 9. Defaults to 1. Adults, children and infants together are at most 9.
10
integer
Optional
Children, 0 to 8. Defaults to 0.
10
integer
Optional
Infants, 0 to 8. Each infant needs an adult. Defaults to 0.
10
string
Optional
economy, premium_economy, business or first. Defaults to economy.
example
integer
Optional
Maximum stops per leg, 0 to 3. 0 returns direct flights only.
10
integer
Optional
Minimum total price in the chosen currency.
10
integer
Optional
Maximum total price in the chosen currency.
10
string
Optional
quality, price or duration. Defaults to quality.
relevance
integer
Optional
Itineraries to return, 1 to 50. Defaults to 25. A search has no pages.
10
string
Optional
Only these airlines, 2-letter codes, comma separated. Example: LH,AF.
example
string
Optional
Leave out these airlines, 2-letter codes, comma separated.
example
string
Optional
Price currency, a 3-letter code such as EUR or USD. Defaults to EUR.
USD
string
Optional
Language of names, such as en or de. Defaults to en.
en-US
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
data
meta
success
{
"data": {
"sort": "quality",
"cabin": "economy",
"limit": 25,
"notice": null,
"origin": "City:berlin_de",
"currency": "EUR",
"trip_type": "one_way",
"passengers": {
"adults": 1,
"infants": 0,
"children": 0
},
"destination": "City:london_gb",
"itineraries": [
{
"id": "ItineraryOneWay:eyJwcm92aWRlcnMiOiJLSVdJIiwicm91...",
"type": "one_way",
"price": {
"amount": 69,
"currency": "EUR",
"formatted": "69 \u20ac"
},
"stops": 0,
"arrival": {
"city": "London",
"airport": "Luton",
"country": "United Kingdom",
"local_time": "2026-11-19T18:05:00",
"airport_code": "LTN",
"country_code": "GB"
},
"baggage": {
"hand_bags_included": 0,
"no_checked_baggage": false,
"checked_bags_included": 0,
"personal_item_included": 1,
"checked_bag_tier_prices": [
75,
150
]
},
"carriers": [
{
"code": "U2",
"icao": "EZY",
"name": "easyJet"
}
],
"duration": 7200,
"layovers": [],
"provider": {
"code": "KIWI",
"name": "Kiwi.com",
"content_provider": {
"id": "ContentProvider:KIWI",
"name": "kiwi.com"
}
},
"segments": [
{
"type": "FLIGHT",
"arrival": {
"city": "London",
"airport": "Luton",
"country": "United Kingdom",
"local_time": "2026-11-19T18:05:00",
"airport_code": "LTN",
"country_code": "GB"
},
"carrier": {
"code": "U2",
"name": "easyJet"
},
"duration": 7200,
"departure": {
"city": "Berlin",
"airport": "Berlin Brandenburg",
"country": "Germany",
"local_time": "2026-11-19T17:05:00",
"airport_code": "BER",
"country_code": "DE"
},
"cabin_class": "ECONOMY",
"flight_number": "U22602",
"operating_carrier": {
"code": "U2",
"name": "easyJet"
}
}
],
"share_id": "eyJyIjoiVTI6MjYwMjpCRVI6MTc5NTEwNDMwMDpMVE46MTc5...",
"departure": {
"city": "Berlin",
"airport": "Berlin Brandenburg",
"country": "Germany",
"local_time": "2026-11-19T17:05:00",
"airport_code": "BER",
"country_code": "DE"
},
"price_eur": 69,
"booking_url": "https://www.kiwi.com/en/booking/?direct=true&locale=en¤cy=eur&passengers=1-0-0&token=...",
"travel_hacks": {
"hidden_city": false,
"virtual_interlining": false
}
}
],
"return_date": null,
"departure_date": "2026-11-19",
"filters_applied": [],
"total_available": 2
},
"meta": {
"billable": true,
"endpoint_family": "flight_search"
},
"success": true
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
A parameter is missing or invalid. This response is not billable.
{
"errors": {
"adults": [
"A booking has at most 9 passengers (adults, children and infants together)."
]
},
"message": "The request validation failed"
}Upstream Unavailable
Kiwi.com did not answer in time. Retry the request. This response is not billable.
{
"meta": {
"billable": false,
"retryable": true,
"endpoint_family": "flight_search"
},
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The Kiwi.com API is temporarily unavailable. Please retry."
},
"success": false
}Unexpected Upstream Answer
Kiwi.com answered in a form this API does not read. This response is not billable.
{
"meta": {
"billable": false,
"retryable": false,
"endpoint_family": "flight_search"
},
"error": {
"code": "PARSER_DRIFT",
"message": "Kiwi.com rejected the request. Check the parameters and try again."
},
"success": false
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.