Skyscanner Flights Scraper - One-Way, Return and Multi-City
Pricing
from $0.05 / 1,000 itineraries
Skyscanner Flights Scraper - One-Way, Return and Multi-City
Search Skyscanner for one-way, return and multi-city flights on the routes and dates you give. Keep only what fits: stops, airlines, times, journey length, price. One row per itinerary with the lowest price, who sells it, flight numbers, times and stops.
Pricing
from $0.05 / 1,000 itineraries
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Skyscanner Flights Scraper
It searches Skyscanner for the routes and dates you give, one-way, return or multi-city, and hands back one row per itinerary: the lowest price, who sells it, and the flights with their times and stops. Then it keeps only the itineraries you'd actually book, by stops, airline, time of day, journey length or price.
A run takes three to five minutes. A new Skyscanner search shows a few results straight away and fills in the full list about three minutes later, and this Actor waits for the full list, since a filter run on a ten-row preview would tell you very little. The searches in a run wait together: one takes about three minutes, twenty take about four and a half.
Input
{"routes": [{ "origin": "JFK", "destination": "LAX", "date": "2026-10-20" },{ "origin": "LHR", "destination": "BCN", "date": "2026-11-12", "returnDate": "2026-11-19" },{ "legs": [{ "origin": "LHR", "destination": "BCN", "date": "2026-11-12" },{ "origin": "BCN", "destination": "FCO", "date": "2026-11-15" },{ "origin": "FCO", "destination": "LHR", "date": "2026-11-19" }] }],"adults": 2,"childAges": [8],"maxStops": "0","sortBy": "fastest","maxItinerariesPerRoute": 20}
Routes
- One-way:
{"origin": "JFK", "destination": "LAX", "date": "2026-10-20"}, orJFK-LAX-2026-10-20. Leave the date out and it searches the day 30 days after the run. - Return: add
"returnDate", or writeJFK-LAX-2026-10-20-2026-10-27. - Multi-city: two or three legs under
"legs", in order, each with its own date. A leg is one journey from its origin to its destination, however many flights it takes. - Several departure days: add
"lastDate"to a one-way or return route and it searches every day from"date"to"lastDate", up to 7 days. Each day is a search of its own, so 20 to 23 October is four searches and four lists of itineraries, and you pay for each search and for what it brings back. On a return the return date moves along with the departure, so every trip is the same length. - Codes: three-letter airport codes (LHR, JFK), or a city code for every airport in a city (LON, NYC, PAR, TYO and twenty others).
A run makes up to 50 searches, a range counting once for each day.
Skyscanner links
Put links to Skyscanner results pages in searchUrls and each one becomes a search. The airports, dates, adults, children's ages, cabin and "direct flights only" are read from the link; the market, the currency and the filters come from the rest of the input. The link from your browser's address bar works, and so do the referral links Skyscanner documents for partners. A link for a whole month, or for more than three legs, is refused. Routes and links can go in the same run.
Passengers and cabin
adults is 1 to 8. childAges takes one age per child, 0 to 17, so [8, 1] is an eight-year-old and a baby. Under 2 counts as an infant, and each infant needs an adult. The price on every row is for the whole group, children included.
cabinClass is economy, premium_economy, business or first. market, locale and currency choose which Skyscanner to search and what to price in: US, en-US and USD by default, or UK, en-GB and GBP for the UK site.
Filters and order
| Setting | What it does |
|---|---|
maxStops | 0 for non-stop only, 1 or 2 for at most that many. Counted per leg, so on a return both directions have to pass |
maxPrice | Drops anything dearer, comparing the whole group's price in the search currency |
maxDurationHours | The longest a leg may take, first take-off to last landing, in hours. 7.5 works |
airlines | Keeps an itinerary only if every flight in it is sold by one of these |
excludeAirlines | Drops an itinerary if any flight is sold by one of these, or flown by one on another airline's behalf |
departureTimeRange, arrivalTimeRange | The outbound leg, local time: 06:00-12:00. 22:00-06:00 runs past midnight |
returnDepartureTimeRange, returnArrivalTimeRange | The same for the journey home, on return trips |
sortBy | cheapest, fastest, earliest or best |
maxItinerariesPerRoute | How many to keep from each search, counted after the filters and the order. 500 unless you change it, up to 1,000 |
Airlines go in as two-character codes (BA, U2, B6) or as names. Names match whole words, so "Delta" also finds flights run as Delta Connection, and "Air" finds Air France but not Vueling Airlines.
fastest counts the whole trip, both ways on a return. best is this Actor's own ranking, not the one on Skyscanner's site: an itinerary's price divided by the cheapest one's, plus its journey time divided by the quickest one's, lowest first. With the cheapest at $100 and the quickest at 2 hours, $120 in 2 hours scores 2.2 and $100 in 5 hours scores 3.5, so the dearer, quicker one comes first.
Filters don't make a run any shorter. Every search still waits out its three minutes; the filters only decide what comes back.
Bad input is refused before anything is searched: a code it doesn't recognise, a date in the past or more than a year away, a return before its departure, more infants than adults. The PROBLEMS record in the run's key-value store says what was wrong. A filter it can't read, such as "departureTimeRange": "mornings", stops the whole run, because every search would have used it.
Output
One row per itinerary, in the order you asked for within each search. This one is real, a San Francisco to Seattle one-way, with the flight detail shortened:
{"ok": true,"recordType": "itinerary","route": "SFO-SEA","tripType": "one-way","date": "2026-11-10","returnDate": null,"price": 138.2,"currency": "USD","pricingOptions": 8,"cheapestSeller": "Expedia","carriers": ["Alaska Airlines"],"flightNumbers": ["AS2424", "AS773"],"departureAirport": "SFO","arrivalAirport": "SEA","departure": "2026-11-10T13:29:00","arrival": "2026-11-10T19:25:00","durationMinutes": 356,"stops": 1,"legs": [{"from": "SFO", "to": "SEA", "stops": 1, "durationMinutes": 356,"flights": [{ "flightNumber": "AS2424", "carrierCode": "AS", "from": "SFO", "to": "SNA", "departure": "2026-11-10T13:29:00", "arrival": "2026-11-10T15:05:00", "operatedBy": "Horizon Air AS Alaska Airlines" },{ "flightNumber": "AS773", "carrierCode": "AS", "from": "SNA", "to": "SEA", "departure": "2026-11-10T16:30:00", "arrival": "2026-11-10T19:25:00", "operatedBy": null }]}],"itineraryId": "16216-2611101329--32593-1-16177-2611101925","market": "US","locale": "en-US","adults": 1,"childAges": [],"cabinClass": "economy","searchedAt": "2026-09-13T00:48:31.000Z"}
| Field | What it is |
|---|---|
route, tripType | The search: JFK-LAX for one-way and return, every leg for multi-city (LHR-BCN, BCN-FCO, FCO-LHR); one-way, return or multi-city |
date, returnDate | The departure date, and the return date on a return trip |
price | The lowest of the offers, in currency, for everyone on the booking |
pricingOptions | How many offers Skyscanner listed for this itinerary |
cheapestSeller | Who sells it at that price, an airline or a travel agent |
carriers, flightNumbers | The airlines selling the flights, and the flight numbers in order |
departureAirport, departure, arrivalAirport, arrival | Where and when the whole trip starts and ends, in local time with no time zone. On a return both airports are home; each leg's own are under legs |
durationMinutes, stops | For the whole trip. On a return both directions are added together |
legs[].flights[] | Each flight: number, airline and its code, who flies it when that is another airline, airports, times and minutes |
itineraryId | Skyscanner's id for this set of flights. It is built from the airports, the times, the airline and the stops, so the same flights on the same day keep the same id |
The dataset holds itineraries and nothing else. A route that was refused, came back empty, had nothing that passed the filters or couldn't be searched is listed in the PROBLEMS record in the run's key-value store, with an errorCode and the reason in plain words, and the run's status message says how many there were. The notes themselves are never charged; what a route costs is set out below. RUN_SUMMARY, next to it, has the counts for the whole run, including how many itineraries were found and how many passed the filters.
What you pay for
$0.005 for each search that finishes, plus $0.052 per 1,000 itineraries delivered, both flat on every plan. A search is one route on one departure day, so a return trip is one search and a three-day range is three.
The search fee is charged once Skyscanner's full list is in, whether your filters keep a hundred itineraries or none, because the search itself is the work. Itineraries the filters drop aren't charged. A search that is refused or can't be made costs nothing, and one that never finishes is charged only for the itineraries it delivers. If you set a maximum charge for the run, the Actor works out before it starts how many searches and itineraries that covers, and routes that would go past it are left out and listed in PROBLEMS.
What it doesn't do
- No booking links. Skyscanner's search results don't carry them. Each row names the seller, and you book with the seller or on Skyscanner.
- No nearby airports. For every airport in a city, use its city code, such as LON or NYC. A link that asks for nearby airports is searched on the airports it names, and
PROBLEMSsays so. - No flexible dates beyond a week. A range covers up to 7 departure days, and there is no whole-month search.
- Three legs at most on a multi-city trip, and the time filters only look at the first of them.
- No fare rules or baggage. You get the price and the flights, not what the fare includes.
The prices are what Skyscanner showed at the moment of the search. Fares move, and a seller's final price can be different.
Good to know
- Twenty searches in one run take about four and a half minutes, not twenty lots of three, so put your routes in one run.
- Return trips bring back far more itineraries than one-way. A London to Barcelona return found 1,160 in a test where the one-way found 165, and
maxItinerariesPerRoutekeeps the first 500 unless you change it. - With children on a search, the Actor only uses Skyscanner's prices once Skyscanner has confirmed the children and infants it priced. If it can't confirm them, the route goes in
PROBLEMSand nothing is charged for it. - Now and then a route can't be searched on a run. It is listed in
PROBLEMS, it isn't charged, and it can go in your next run. - Once in a while a search never finishes. That route then gives you what Skyscanner had at the end of the wait, usually ten itineraries before the filters, plus an entry in
PROBLEMSsaying the list may be incomplete. - The airport and city codes come from a public list taken in September 2026. A brand-new airport code may not be on it yet; if one is refused, tell us on the Issues tab. A city in a Skyscanner link that the Actor can't read is refused too, with a note to write the route with codes instead.