Search a Multi-City Flight Itinerary
View all Skyscanner Flights & Travel Search endpoints →Submit a multi-city travel plan in the required legs query parameter as a serialized JSON array string. Each documented leg contains originSkyId, destinationSkyId and date in YYYY-MM-DD format; resolve places with airport autocomplete and order legs chronologically. This is a GET query input, not a JSON request body. Optional adults, cabinClass and currency apply to the search. Multi-city response fields have not been independently verified, so inspect the returned structure before assuming it matches the one-way search schema or exposes session polling. Compare usable offers cautiously: a combined price alone does not establish through-ticket protection, checked-baggage transfer or connection guarantees.
API Features
Live API Demo
🔒 Sign in to try it live
Log in to call this API with your own API key. New accounts get 100 free credits — no card required.
Log in / Sign upNo active API key found. Create one in your Dashboard, then reload this page. Dashboard →
/api/project/skyscanner/flights-search-flights-multi-stops API Response (JSON)
{} curl -X GET 'https://api.opendata-api.com/api/project/skyscanner/flights-search-flights-multi-stops?key=<API_KEY>&legs=<legs>¤cy=USD'
Query Result
Use Cases
- Represent a London–Paris–New York trip as two dated legs and serialize that plan for a multi-city search.
- Compare usable multi-city offers with separate point-to-point searches without labeling a lower price as a guaranteed protected itinerary.
- Validate chronological leg dates in an itinerary builder before submitting the combined search request.
- Save a travel plan's leg definitions separately from quoted offers so the application can rerun the same multi-city criteria later.
Frequently asked questions
How do I send the legs JSON parameter for a multi-city search?
Resolve each place's skyId, construct an array with originSkyId, destinationSkyId and date for every leg, then serialize it as a string. In Python, use json.dumps and pass that string through requests params as legs. URL-encode it in the GET query, not a JSON request body, and order future dates according to the trip.
Does a combined multi-leg price guarantee baggage transfer or protected connections?
No. A combined quote does not establish a single ticket, checked-baggage transfer or connection protection. The multi-city response has not been independently verified; inspect actual offers and terms rather than assuming the one-way schema or the same session-continuation behavior.