Skyscanner Flight Scraper
Pricing
from $4.00 / 1,000 dataset items
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).
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
scrapingBrowserUrlto a remote anti-bot browser CDP endpoint (e.g. Bright Data Scraping Browser, Oxylabs Web Unblocker browser) asws(s)://user:pass@host:port. The provider defeats PerimeterX and manages proxies for you. Most reliable. - Premium residential proxy — set
customProxyUrltohttp://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)
| Field | Description |
|---|---|
priceFormatted / priceRaw | Total price, formatted and numeric |
currency | Currency of the price |
stops | Total stops across the trip |
totalDurationMinutes | Total travel time |
carriers | Operating/marketing airlines |
legs[] | Per-leg detail: origin, destination, departure/arrival, duration, stops, carriers |
bucket | Result bucket (Best / Cheapest / Fastest) |
origin / destination | Resolved place codes |
departDate / returnDate | Requested dates |
deepLinkUrl | Skyscanner results URL |
scrapedAt | UTC 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
| Field | Type | Required | Description |
|---|---|---|---|
origin | string | yes | City/airport text or IATA (e.g. "New York", "JFK") |
destination | string | yes | City/airport text or IATA |
departDate | string | yes | Outbound date, YYYY-MM-DD |
returnDate | string | no | Return date; omit for one-way |
adults | integer | no | Adult passengers (default 1) |
cabinClass | enum | no | economy / premiumeconomy / business / first |
sortBy | enum | no | best / cheapest / fastest |
maxItems | integer | no | Max itineraries (default 100) |
market / locale / currency | string | no | Localization (default US / en-US / USD) |
scrapingBrowserUrl | string | yes* | Scraping Browser / Web Unblocker CDP URL (most reliable) |
customProxyUrl | string | yes* | 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.