Skyscanner Flights Scraper - One-Way, Return and Multi-City avatar

Skyscanner Flights Scraper - One-Way, Return and Multi-City

Pricing

from $0.05 / 1,000 itineraries

Go to Apify Store
Skyscanner Flights Scraper - One-Way, Return and Multi-City

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

Dami's Studio

Maintained by Community

Actor 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"}, or JFK-LAX-2026-10-20. Leave the date out and it searches the day 30 days after the run.
  • Return: add "returnDate", or write JFK-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.

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

SettingWhat it does
maxStops0 for non-stop only, 1 or 2 for at most that many. Counted per leg, so on a return both directions have to pass
maxPriceDrops anything dearer, comparing the whole group's price in the search currency
maxDurationHoursThe longest a leg may take, first take-off to last landing, in hours. 7.5 works
airlinesKeeps an itinerary only if every flight in it is sold by one of these
excludeAirlinesDrops an itinerary if any flight is sold by one of these, or flown by one on another airline's behalf
departureTimeRange, arrivalTimeRangeThe outbound leg, local time: 06:00-12:00. 22:00-06:00 runs past midnight
returnDepartureTimeRange, returnArrivalTimeRangeThe same for the journey home, on return trips
sortBycheapest, fastest, earliest or best
maxItinerariesPerRouteHow 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"
}
FieldWhat it is
route, tripTypeThe 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, returnDateThe departure date, and the return date on a return trip
priceThe lowest of the offers, in currency, for everyone on the booking
pricingOptionsHow many offers Skyscanner listed for this itinerary
cheapestSellerWho sells it at that price, an airline or a travel agent
carriers, flightNumbersThe airlines selling the flights, and the flight numbers in order
departureAirport, departure, arrivalAirport, arrivalWhere 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, stopsFor 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
itineraryIdSkyscanner'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 PROBLEMS says 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 maxItinerariesPerRoute keeps 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 PROBLEMS and 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 PROBLEMS saying 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.