Skyscanner Flight Scraper
Pricing
from $4.00 / 1,000 flight founds
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
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
2
Monthly active users
10 days ago
Last modified
Categories
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.
| Field | Type | Purpose |
|---|---|---|
departureAirport | string | Origin city or IATA code in filter mode. |
arrivalAirport | string | Destination city or IATA code in filter mode. |
departureDate | string | Outbound date in YYYY-MM-DD format. |
returnDate | string | Optional inbound date for round trips. |
startUrls | array | Full Skyscanner flights URLs that override the filter fields for each search. |
cabinClass | string | economy, premium_economy, business, or first. |
adults | integer | Adult passenger count, 1 to 9. |
children | integer | Child passenger count, 0 to 8. |
infants | integer | Lap infant count, 0 to 8. |
market | string | 2-letter market code such as US or GB. |
currency | string | ISO 4217 currency code such as USD or EUR. |
locale | string | BCP-47 locale tag such as en-US or de-DE. |
resultSort | string | suitable, cheapest, fastest, or shortest. |
maxResults | integer | Hard cap on itineraries returned and billed. |
proxyConfiguration | object | Proxy 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.
| Field | Type | Purpose |
|---|---|---|
itineraryId | string | Stable Skyscanner itinerary identifier. |
searchOrigin | string | Origin as supplied in the search. |
searchDestination | string | Destination as supplied in the search. |
tripType | string | one_way or round_trip. |
cabinClass | string | Cabin class searched. |
price | number | Total price across booking agents, in the requested currency. |
currency | string | ISO 4217 currency of all prices. |
priceFormatted | string | Human-readable fare value. |
primaryBookingUrl | string or null | Deep link to book the selected option. |
agents | array | Booking agents offering this itinerary, ordered by price. |
bookingOptions | array | All booking options with per-agent price, deep link, and baggage when available. |
isDirect | boolean | True if every leg is non-stop. |
totalStops | integer | Total stops summed across all legs. |
durationMinutes | integer or null | Total travel time across all legs, in minutes. |
durationText | string or null | Total travel time, formatted text. |
score | number or null | Skyscanner blended quality score. |
tags | array | Sorting buckets this itinerary belongs to. |
carbonEmissions | object or null | Estimated CO2 with delta vs a typical flight, when Skyscanner provides it. |
legs | array | One entry per direction with segment detail. |
sourceProvider | string | Source transport used for the itinerary. |
retrievalMethod | string | Machine-readable provenance for the flight-search transport. |
scrapedAt | string | ISO 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.