Skyscanner Flight Scraper avatar

Skyscanner Flight Scraper

Pricing

from $4.00 / 1,000 flight founds

Go to Apify Store
Skyscanner Flight Scraper

Skyscanner Flight Scraper

Scrape Skyscanner flights with prices, airlines, segments, baggage, CO2, and per-agent booking links. MCP-ready.

Pricing

from $4.00 / 1,000 flight founds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

2

Monthly active users

10 days ago

Last modified

Share

Skyscanner Flight Scraper is an Apify Actor for travel, AI, and Apify MCP workflows. It accepts either a city pair with dates or a full Skyscanner flights URL, and it returns one record per itinerary. Each record includes the searched route, trip type, cabin class, price, currency, booking agents, per-agent booking links, baggage when available, leg and segment detail, stops, duration, score, tags, CO2 fields when provided, and a scrape timestamp. The dataset is structured for apps, spreadsheets, automation, and AI agents that need flight results in a consistent schema.

This Actor is usable through Apify MCP as a structured flight-search tool. It accepts filter-based inputs or replayed Skyscanner URLs, and it returns one dataset record per itinerary so downstream tools can compare options by price, duration, stops, agents, and provenance.

Best fit and connected workflows

This Actor fits workflows that benefit from Skyscanner flight results in a stable dataset:

  • Fare comparison views that show multiple booking agents and deep links for the same itinerary.
  • Travel automation that replays a specific Skyscanner search from a saved flights URL.
  • Route monitoring pipelines that compare price, duration, score, directness, and tags across runs.
  • AI agent workflows that need a single tool call with flight itineraries and provenance.
  • Sustainability-oriented views that surface estimated CO2 when Skyscanner provides it.

If your workflow starts with a known Skyscanner search, use startUrls to replay it exactly. If your workflow starts from a city pair and dates, use the filter fields. This Actor is also usable through Apify MCP as a structured flight-search tool.

Practical scenario

A travel coordinator is planning a round trip from LAX to Tokyo for one adult in economy. They enter the origin, destination, departure date, return date, market, currency, and a results cap. The Actor returns itineraries with price, priceFormatted, agents, primaryBookingUrl, durationText, totalStops, tags, and carbonEmissions. The coordinator can compare the itinerary, review whether it is direct, and open the booking link that matches the preferred agent.

Input

Use either filter mode or a Skyscanner flights URL.

FieldTypePurpose
departureAirportstringOrigin city or IATA code in filter mode.
arrivalAirportstringDestination city or IATA code in filter mode.
departureDatestringOutbound date in YYYY-MM-DD format.
returnDatestringOptional inbound date for round trips.
startUrlsarrayFull Skyscanner flights URLs that override the filter fields for each search.
cabinClassstringeconomy, premium_economy, business, or first.
adultsintegerAdult passenger count, 1 to 9.
childrenintegerChild passenger count, 0 to 8.
infantsintegerLap infant count, 0 to 8.
marketstring2-letter market code such as US or GB.
currencystringISO 4217 currency code such as USD or EUR.
localestringBCP-47 locale tag such as en-US or de-DE.
resultSortstringsuitable, cheapest, fastest, or shortest.
maxResultsintegerHard cap on itineraries returned and billed.
proxyConfigurationobjectProxy settings, with residential proxy defaults in the input schema.

Focused example input:

{
"departureAirport": "LAX",
"arrivalAirport": "NRT",
"departureDate": "2027-06-15",
"returnDate": "2027-06-22",
"cabinClass": "economy",
"adults": 1,
"children": 0,
"infants": 0,
"market": "US",
"currency": "USD",
"locale": "en-US",
"resultSort": "suitable",
"maxResults": 25
}

Output

The Actor writes one record per itinerary to the dataset. The overview table in Apify shows From, To, Price, Cur, Stops, Duration, Agents, Tags, Book, and Scraped.

FieldTypePurpose
itineraryIdstringStable Skyscanner itinerary identifier.
searchOriginstringOrigin as supplied in the search.
searchDestinationstringDestination as supplied in the search.
tripTypestringone_way or round_trip.
cabinClassstringCabin class searched.
pricenumberTotal price across booking agents, in the requested currency.
currencystringISO 4217 currency of all prices.
priceFormattedstringHuman-readable fare value.
primaryBookingUrlstring or nullDeep link to book the selected option.
agentsarrayBooking agents offering this itinerary, ordered by price.
bookingOptionsarrayAll booking options with per-agent price, deep link, and baggage when available.
isDirectbooleanTrue if every leg is non-stop.
totalStopsintegerTotal stops summed across all legs.
durationMinutesinteger or nullTotal travel time across all legs, in minutes.
durationTextstring or nullTotal travel time, formatted text.
scorenumber or nullSkyscanner blended quality score.
tagsarraySorting buckets this itinerary belongs to.
carbonEmissionsobject or nullEstimated CO2 with delta vs a typical flight, when Skyscanner provides it.
legsarrayOne entry per direction with segment detail.
sourceProviderstringSource transport used for the itinerary.
retrievalMethodstringMachine-readable provenance for the flight-search transport.
scrapedAtstringISO 8601 timestamp for the record.

Illustrative dataset record:

{
"itineraryId": "13542-2606151030--32171-1-12712-2606161400",
"searchOrigin": "LAX",
"searchDestination": "NRT",
"tripType": "round_trip",
"cabinClass": "economy",
"price": 742.18,
"currency": "USD",
"priceFormatted": "742.18",
"primaryBookingUrl": "https://www.skyscanner.net/transport/flights/...",
"agents": ["Trip.com", "Expedia"],
"bookingOptions": [
{
"agent": "Trip.com",
"price": 742.18,
"deepLink": "https://...",
"baggage": {
"checked": 1,
"cabin": 1
}
}
],
"isDirect": false,
"totalStops": 1,
"durationMinutes": 760,
"durationText": "12h 40m",
"score": 9.12,
"tags": ["suitable", "cheapest"],
"carbonEmissions": {
"grams": 412000,
"vsTypicalPercent": -12,
"isEco": true
},
"legs": [
{
"direction": "outbound",
"origin": "LAX",
"destination": "NRT",
"departure": "2027-06-15T10:30:00",
"arrival": "2027-06-16T14:00:00",
"durationMinutes": 760,
"durationText": "12h 40m",
"stops": 1,
"carriers": ["Japan Airlines"],
"segments": [
{
"from": "LAX",
"to": "SFO",
"carrier": "Japan Airlines",
"flightNumber": "JL12"
}
]
}
],
"sourceProvider": "Skyscanner",
"retrievalMethod": "skyscanner-search",
"scrapedAt": "2027-01-01T12:00:00.000Z"
}

How it works

The Actor accepts either search filters or a Skyscanner flights URL. In filter mode, it resolves the origin and destination through Skyscanner autosuggest and uses the supplied departure date, optional return date, cabin class, passenger mix, market, currency, and locale. In URL mode, it reads the route and dates from each supplied flights URL and uses those values for the search. Results are normalized into one itinerary record per flight, including booking agents, booking links, baggage details when available, leg data, and optional CO2 fields. The Actor runs on the Apify platform with residential proxy defaults in the input schema, and it is usable through Apify MCP.

Pricing

This Actor uses Pay per event pricing plus Apify platform usage. The live Pricing tab on the Actor page is the source of truth for current billing details.

Billing events in this contract:

  • Actor Start: charged when the Actor starts running, based on memory allocation.
  • Flight found: charged once per delivered itinerary that includes route, price, agents, segments, baggage, and CO2 data.

For example, if a execution delivers one hundred flights, the billing includes one start event and one hundred Flight found events. Use maxResults to cap the number of delivered itineraries and keep the run size aligned with your workflow.

Use with AI agents (MCP)

This Actor is usable through Apify MCP as a tool for flight-search retrieval. The tool returns structured Skyscanner itineraries that an AI agent can read, compare, and pass into downstream booking or analysis steps.

Tool description: Search Skyscanner flight itineraries and return structured records with price, agents, booking links, legs, tags, and scrape metadata.

Actor identity: khadinakbar/skyscanner-flight-scraper

Find round-trip economy itineraries from LAX to NRT for one adult, return the options with the lowest price and shortest duration, and include booking links and baggage details if available.

When used through MCP, the response preserves dataset fields such as price, agents, primaryBookingUrl, bookingOptions, legs, tags, and scrapedAt. The primaryBookingUrl points to the selected booking option, while bookingOptions lists the available agent choices in price order. Use maxResults to bound the number of delivered itineraries. Each delivered flight is charged as a Flight found event, and Apify platform usage still applies through the Actor run.

API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor("khadinakbar/skyscanner-flight-scraper").call({
departureAirport: "LAX",
arrivalAirport: "NRT",
departureDate: "2027-06-15",
returnDate: "2027-06-22",
cabinClass: "economy",
adults: 1,
currency: "USD",
maxResults: 10,
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
console.log(dataset.items);

Best results and outcome guidance

Use airport codes when you want the most precise origin and destination resolution. Use startUrls when you want to replay a specific Skyscanner search from the browser. Set market to the buyer's country when regional pricing and agent availability matter. Keep currency aligned with the reporting currency you want in the dataset. Select resultSort: "cheapest" for fare-first review, resultSort: "fastest" or resultSort: "shortest" for time-first review, and resultSort: "suitable" for the blended default ordering. Lower maxResults when you want a smaller delivered dataset and tighter cost control.

Focused standalone workflow

This Actor is designed as a focused standalone workflow.

Design note

I found that the dataset contract includes both primaryBookingUrl and bookingOptions, which makes it straightforward to keep one book-now link alongside the full agent list in the same record.

FAQ

Can I use a full Skyscanner flights URL instead of route fields?

Yes. startUrls accepts Skyscanner flights URLs and uses the route and dates from each URL for that search.

How are one-way and round-trip searches represented?

The tripType field is one_way or round_trip, and round-trip records include both outbound and inbound legs.

What does primaryBookingUrl point to?

It is the deep link to the selected booking option for the itinerary.

How do I compare multiple booking agents for the same itinerary?

Use agents for the agent list and bookingOptions for per-agent price, deep link, and baggage when available.

Which fields are useful for route filtering in downstream tools?

searchOrigin, searchDestination, tripType, cabinClass, tags, totalStops, and durationText are useful for filtering and ranking.

Responsible use

Use this Actor for legitimate travel research, comparison, planning, and automation workflows. Respect Skyscanner and booking-site terms, applicable laws, and the rights of third parties. Review the returned booking links and fare details before taking action, since agent availability and prices can change after the scrape time.