Skyscanner Flight Scraper avatar

Skyscanner Flight Scraper

Pricing

from $4.00 / 1,000 dataset items

Go to Apify Store
Skyscanner Flight Scraper

Skyscanner Flight Scraper

Scrape live Skyscanner flight prices and itineraries for any route and dates. Requires your own Scraping Browser or residential proxy (Skyscanner uses PerimeterX).

Pricing

from $4.00 / 1,000 dataset items

Rating

0.0

(0)

Developer

axly

axly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

Get live flight prices and full itineraries from Skyscanner for any route and travel dates — as clean, structured JSON. One row per itinerary, with price, stops, durations, carriers, and per-leg detail. Built on Skyscanner's own flight-search backend for accurate, up-to-date fares.

Setup (required)

Skyscanner protects fares with PerimeterX anti-bot, which rejects datacenter and shared IPs. This Actor therefore needs your own unblocker — pick one:

  • Scraping Browser / Web Unblocker (recommended) — set scrapingBrowserUrl to a remote anti-bot browser CDP endpoint (e.g. Bright Data Scraping Browser, Oxylabs Web Unblocker browser) as ws(s)://user:pass@host:port. The provider defeats PerimeterX and manages proxies for you. Most reliable.
  • Premium residential proxy — set customProxyUrl to http://user:pass@host:port (Bright Data / Oxylabs / IPRoyal, etc.).

Either field can also be supplied via the SCRAPING_BROWSER_URL / CUSTOM_PROXY_URL environment variables. A run without one of these will stop immediately with a clear message — this avoids wasted, always-blocked runs.

Who it's for

  • Travel agencies & OTAs benchmarking fares across routes and dates.
  • Fare-alert & price-comparison apps needing a reliable live price feed.
  • Analysts & researchers studying route pricing, seasonality, and carriers.
  • Affiliates & content sites enriching pages with real prices.

What you get (output fields)

FieldDescription
priceFormatted / priceRawTotal price, formatted and numeric
currencyCurrency of the price
stopsTotal stops across the trip
totalDurationMinutesTotal travel time
carriersOperating/marketing airlines
legs[]Per-leg detail: origin, destination, departure/arrival, duration, stops, carriers
bucketResult bucket (Best / Cheapest / Fastest)
origin / destinationResolved place codes
departDate / returnDateRequested dates
deepLinkUrlSkyscanner results URL
scrapedAtUTC timestamp

Use cases

  • Fare benchmarking — track prices for key routes on a schedule and store history.
  • Lead-gen for travel — surface the cheapest options to your users.
  • Market research — compare carriers, stop counts, and durations across dates.
  • Content enrichment — embed live "from $X" prices on route/destination pages.

Input

FieldTypeRequiredDescription
originstringyesCity/airport text or IATA (e.g. "New York", "JFK")
destinationstringyesCity/airport text or IATA
departDatestringyesOutbound date, YYYY-MM-DD
returnDatestringnoReturn date; omit for one-way
adultsintegernoAdult passengers (default 1)
cabinClassenumnoeconomy / premiumeconomy / business / first
sortByenumnobest / cheapest / fastest
maxItemsintegernoMax itineraries (default 100)
market / locale / currencystringnoLocalization (default US / en-US / USD)
scrapingBrowserUrlstringyes*Scraping Browser / Web Unblocker CDP URL (most reliable)
customProxyUrlstringyes*Premium residential proxy URL (alternative)

* One of scrapingBrowserUrl or customProxyUrl is required.

Example input

{
"origin": "New York",
"destination": "London",
"departDate": "2026-09-15",
"returnDate": "2026-09-22",
"adults": 1,
"cabinClass": "economy",
"sortBy": "best",
"maxItems": 50,
"scrapingBrowserUrl": "wss://user:pass@brd.superproxy.io:9222"
}

Example output row

{
"itineraryId": "13771-2607272035--30596-0-14476-2607272335|...",
"priceFormatted": "$696",
"priceRaw": 696.0,
"currency": "USD",
"stops": 0,
"totalDurationMinutes": 245,
"carriers": ["British Airways"],
"legs": [
{
"origin": "JFK",
"originName": "New York John F. Kennedy",
"destination": "LHR",
"destinationName": "London Heathrow",
"departure": "2026-09-15T18:30:00",
"arrival": "2026-09-16T06:35:00",
"durationMinutes": 425,
"stopCount": 0,
"carriers": ["British Airways"]
}
],
"deepLinkUrl": "https://www.skyscanner.com/transport/flights/nyca/lond/260915/260922/"
}

Scheduling & webhooks

Run on a schedule (e.g. daily) to build a price-history dataset, and use webhooks to push new results to your own systems or trigger fare alerts.

Use with AI assistants (MCP)

Prefer conversational access? See the companion Skyscanner MCP Server actor, which exposes flight search as tools for Claude, Cursor, and other AI agents.

Reliability & unblocker

Skyscanner is protected by PerimeterX. This actor uses a stealth browser to pass the challenge and read Skyscanner's own flight API, driven through the Scraping Browser or residential proxy you provide (see Setup). With a Scraping Browser / Web Unblocker endpoint, runs are consistent; with a raw residential proxy, the actor retries a few times to ride out PX-flagged IPs.

FAQ

How fresh is the data? Prices are fetched live at run time from Skyscanner's flight-search backend.

Can I get one-way flights? Yes — omit returnDate.

Why do I need my own unblocker? Skyscanner's PerimeterX anti-bot rejects datacenter/shared IPs. A Scraping Browser or premium residential proxy is required for consistent results; the actor stops early with a clear message if none is provided.

Is there a limit per run? Control volume with maxItems. A single route search commonly yields hundreds to thousands of itineraries.

Is scraping legal? You are responsible for complying with Skyscanner's terms and applicable laws. This tool accesses only publicly visible flight results.