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

Serialized route-leg input Pass a JSON array string through legs, encoding it as a query value rather than moving it into an unsupported request body.
Per-leg departure dates Specify a future YYYY-MM-DD date for each planned originSkyId-to-destinationSkyId leg and keep the sequence coherent.
Shared multi-city traveler settings Optional adults, cabinClass and currency describe the combined search instead of duplicating these settings inside every leg.
Combined-offer interpretation Inspect the returned multi-city offers before drawing conclusions about ticket combination, baggage transfer or protected connections.

Live API Demo

GET /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>&currency=USD'
📢
Need Help?
If you encounter API issues or need other API requirements, please contact us.
Contact Us

Use Cases

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.

Related operations

Guides

View Subscription Plans →