Search flights
This call returns a searchToken. It does not return flights. A domestic one-way usually answers in 2–5 seconds; a long-haul can take longer.
Country and currency
Send country to pick the market. Prices come back in that country’s native currency. GB returns GBP, DE returns EUR, US returns USD. Omit country and the market is the US, so prices are USD.
There is no currency field on this call. Sending one is rejected. You cannot ask for US prices in GBP, or UK prices in USD — the country decides the currency.
One-way, round trip, multi-city
Send origin, destination, and departureDate for a one-way. Add returnDate for a round trip. Send legs instead for multi-city. Mixing the two forms answers 400 TRIP_CONFLICT. A legs array of length 1 answers 400 TOO_FEW_LEGS — use the flat form.
Origin and destination are codes, not names. Look them up with Search airports and send code. A code with allAirports true (NYC, LON) covers every airport in that city. Origin and destination on a single leg must differ.
When there is nothing to page
If there are no flights, the call returns 404 NO_RESULTS and no token. Schedules are usually published under a year ahead, so a date further out is the usual cause.
Read more
What a flight search API does, and what it does not: flight search API. Moving from another provider: Kiwi Tequila API, Amadeus API vs Skyscanner API, and why there is no Google Flights API. Claude Code skill: [Ktemiaa/ktemia-flights-skill](https://github.com/Ktemiaa/ktemia-flights-skill).
Parameters
The body of the request.
IATA airport or city code, 3 or 4 letters. Required for a one-way or round trip. Do not send it together with legs. Look the code up with Search airports and send code from that response.
IATA airport or city code. Required when origin is set, and it must be different from origin. Look the code up with Search airports and send code from that response.
Outbound date, YYYY-MM-DD. Required when origin is set. Cannot be in the past. Schedules are usually published under a year ahead.
Return date, YYYY-MM-DD. Sending it makes the search a round trip. Cannot be before departureDate. Omit it for a one-way.
Multi-city trip. Send 2 to 6 legs, in travel order. Do not send origin, destination, departureDate, or returnDate in the same request. One leg is not enough — use the flat fields for a one-way.
IATA airport or city code, 3 or 4 letters. Look the code up with Search airports. Airport codes such as JFK and city codes such as NYC are both accepted.
IATA airport or city code. Must be different from origin on this same leg. Look the code up with Search airports.
Departure date for this leg, YYYY-MM-DD. Cannot be in the past, and cannot be earlier than the previous leg.
Which cabin to search. Defaults to economy.
Possible values
economyDefault. Results can include every cabin.
premiumEconomyOnly premium economy fares.
businessOnly business fares.
firstOnly first fares.
How many travellers of each fare type. Defaults to one adult. The counts added together must be at least 1 and at most 9.
Ages 18–64. Defaults to 1. Each count is 0–9, and all counts together must be at least 1 and at most 9.
Ages 65 and over. Defaults to 0.
Ages 18 and over, on a student fare. Defaults to 0.
Ages 12–17. Defaults to 0.
Ages 2–11. Defaults to 0.
Under 2, in their own seat. Defaults to 0.
Under 2, on a lap. Defaults to 0. Cannot be higher than adults + seniors + students.
How many stops to allow. Omit it to allow any number of stops.
Possible values
0Nonstop only.
1At most one stop.
2At most two stops.
IATA airline codes to keep, 2 characters each, for example ["B6", "DL"]. Send 1 to 20 codes. Every itinerary in the results uses only these airlines. Omit it to allow any airline.
Alliances to keep. Send one or more. Every itinerary in the results belongs to one of them.
Possible values
oneworldoneworld carriers only.
skyteamSkyTeam carriers only.
starAllianceStar Alliance carriers only.
Highest per-person fare to return, as a whole number in the country’s native currency. Minimum is 1. Omit it for no price cap.
How to order the results. Defaults to bestValue.
Possible values
bestValueDefault. Recommended order.
priceBy fare.
durationBy total travel time.
departureBy departure time.
arrivalBy arrival time.
Direction for sortBy. Defaults to asc.
Possible values
ascDefault. Lowest price, shortest time, or earliest time first.
descThe other direction.
ISO 3166-1 alpha-2 market. Prices come back in that country’s native currency — GB returns GBP, DE returns EUR, US returns USD. There is no separate currency field; sending currency is rejected. Omit country for US. Any other value is rejected.
Possible values
USPrices in USD.
GBPrices in GBP.
DEPrices in EUR.
FRPrices in EUR.
ESPrices in EUR.
ITPrices in EUR.
NLPrices in EUR.
BEPrices in EUR.
ATPrices in EUR.
CHPrices in CHF.
IEPrices in EUR.
PTPrices in EUR.
GRPrices in EUR.
PLPrices in PLN.
CZPrices in CZK.
ROPrices in EUR.
SEPrices in SEK.
NOPrices in NOK.
DKPrices in DKK.
FIPrices in EUR.
TRPrices in TRY.
AEPrices in AED.
SAPrices in SAR.
ILPrices in ILS.
INPrices in INR.
JPPrices in JPY.
KRPrices in KRW.
HKPrices in HKD.
TWPrices in TWD.
SGPrices in SGD.
MYPrices in MYR.
THPrices in THB.
IDPrices in IDR.
PHPrices in PHP.
VNPrices in VND.
AUPrices in AUD.
NZPrices in NZD.
CAPrices in CAD.
MXPrices in MXN.
BRPrices in BRL.
ARPrices in ARS.
CLPrices in CLP.
COPrices in COP.
PEPrices in PEN.
UYPrices in USD.
PYPrices in USD.
BOPrices in USD.
ECPrices in USD.
VEPrices in USD.
CRPrices in USD.
PAPrices in USD.
GTPrices in USD.
HNPrices in USD.
NIPrices in USD.
SVPrices in USD.
DOPrices in USD.
PRPrices in USD.
ZAPrices in ZAR.
UAPrices in UAH.
Returns
A successful response, captured live.
{
"searchToken": "eyJwIjoxLCJzIjoiNDk1NGMzNmY2ZWY1NDdiYWI4NTI3YzA3ZTBlOWNjZjMiLCJ2IjoxfQ",
"expiresIn": 3600
}