Skyscanner Flights Scraper avatar

Skyscanner Flights Scraper

Pricing

from $0.55 / 1,000 flight results

Go to Apify Store
Skyscanner Flights Scraper

Skyscanner Flights Scraper

Extract 1,000 Skyscanner flight results for $0.65🔥. Collect flight prices, airlines, routes, schedules, and fare details in seconds.

Pricing

from $0.55 / 1,000 flight results

Rating

5.0

(1)

Developer

Crawlio

Crawlio

Maintained by Community

Actor stats

0

Bookmarked

54

Total users

34

Monthly active users

2 days ago

Last modified

Share

Fast, reliable, and production-ready scraper for Skyscanner. Extract real-time flight itineraries, live pricing, airline carriers, stops, baggage policies, and direct booking URLs worldwide.

Powered by Skyscanner's mobile API backend with built-in anti-bot protection (PerimeterX challenge solver) and automatic residential proxy fallback—zero proxy setup or API keys required.


Features

  • ✈️ Comprehensive Flight Search: Support for One-Way, Round-Trip, and Multi-City routes across any airport or city worldwide.
  • 🔗 Live Booking Details & Deep Links: Fetch real-time checkout links, OTA options (Booking.com, Expedia, Trip.com), and airline direct links with live prices.
  • 🧳 Baggage Filtering: Filter flights by included Cabin / Hand Baggage (cabin_bag) and Checked Baggage (checked_bag).
  • 💺 Cabin Classes: Search Economy, Business, or First class cabins.
  • 🌍 Global Localization: Customize Market (e.g. US, GB, DE), Locale (e.g. en-US, fr-FR), and Currency (e.g. USD, EUR, GBP).
  • 🛡️ Zero-Config Anti-Bot Protection: Authentic mobile TLS fingerprints with automatic residential proxy fallback if challenges occur.
  • High Performance & Clean Output: Fully structured JSON datasets ready for export to CSV, Excel, or direct API integration.

Supported Operations

OperationValueDescription
One-WayoneWaySingle flight leg between two airports or cities.
Round-TriproundTripOutbound and inbound flight with specific return dates.
Multi-CitymultiCityComplex itineraries with two or more legs.
Booking DetailsbookingDetailsReal-time prices, agent ratings, fare rules, and direct booking links for a specific itinerary ID.

Input Parameters

Global Settings

ParameterTypeDefaultDescription
operationString"oneWay"Choose oneWay, roundTrip, multiCity, or bookingDetails.
adultsInteger1Number of adult passengers (1–8).
cabinString"economy"Cabin class: "economy", "business", or "first".
cabin_bagBooleanfalseFilter flights that include cabin / carry-on baggage.
checked_bagBooleanfalseFilter flights that include checked baggage.
limitInteger20Maximum number of flight itineraries to return.
marketString"US"Market country code (ISO 2-letter, e.g. US, GB, DE, AU).
localeString"en-US"Language and locale (e.g. en-US, en-GB, es-ES, fr-FR).
currencyString"USD"Currency code (e.g. USD, EUR, GBP, CAD, AUD).

Operation: One-Way (oneWay)

ParameterTypeRequiredDescription
originStringYesOrigin airport IATA code (e.g. JFK) or city name (e.g. New York).
destStringYesDestination airport IATA code (e.g. LHR) or city name (e.g. London).
dateStringYesDeparture date in YYYY-MM-DD format (e.g. 2026-09-17).

Operation: Round-Trip (roundTrip)

ParameterTypeRequiredDescription
originStringYesOrigin airport IATA code or city name.
destStringYesDestination airport IATA code or city name.
outbound_dateStringYesDeparture date in YYYY-MM-DD format.
inbound_dateStringYesReturn date in YYYY-MM-DD format.

Operation: Multi-City (multiCity)

ParameterTypeRequiredDescription
route_requestsStringYesJSON array of route objects, each containing origin, dest, and date.

Operation: Booking Details (bookingDetails)

ParameterTypeRequiredDescription
itinerary_idStringYesThe itinerary ID extracted from flight search results.
originStringRecommendedOrigin airport IATA code (e.g. JFK, DAC). Ensures 100% accurate route matching.
destStringRecommendedDestination airport IATA code (e.g. LHR, DXB). Ensures 100% accurate route matching.
dateStringOptionalDeparture date (YYYY-MM-DD). Auto-extracted from itinerary_id if omitted.
return_dateStringOptionalReturn date (YYYY-MM-DD) if the itinerary was from a round-trip search.
tokenStringOptionalSession token from flight search results (if available).

Input Examples

{
"operation": "oneWay",
"oneWay": {
"origin": "JFK",
"dest": "LHR",
"date": "2026-09-17"
},
"adults": 1,
"cabin": "economy",
"cabin_bag": true,
"limit": 20,
"market": "US",
"currency": "USD"
}
{
"operation": "roundTrip",
"roundTrip": {
"origin": "LHR",
"dest": "DXB",
"outbound_date": "2026-10-15",
"inbound_date": "2026-10-25"
},
"adults": 2,
"cabin": "business",
"checked_bag": true,
"limit": 20,
"currency": "GBP"
}
{
"operation": "multiCity",
"multiCity": {
"route_requests": "[{"origin": "JFK", "dest": "LHR", "date": "2026-09-17"}, {"origin": "LHR", "dest": "CDG", "date": "2026-09-24"}]"
},
"adults": 1,
"currency": "USD"
}

4. Booking Details (Live Prices & Booking URLs)

Retrieve real-time booking options, OTA prices, direct carrier checkout links, and fare policies:

{
"operation": "bookingDetails",
"bookingDetails": {
"itinerary_id": "10901-2609171455--32213-1-11182-2609180855",
"origin": "DAC",
"dest": "DXB",
"date": "2026-09-17"
},
"currency": "USD"
}

💡 Tip: Providing origin, dest, and date alongside itinerary_id guarantees that Skyscanner's Sonar engine matches the route geometry and resolves all available booking agents and deep links.


Output Examples

Flight Search Output (oneWay, roundTrip, multiCity)

Each flight itinerary in the dataset contains comprehensive pricing, carrier, and segment details:

{
"bucket": "Best",
"price_raw": 343.0,
"price": "$343",
"carriers": [
"Emirates",
"Flydubai"
],
"tags": [
"Cheapest",
"Shortest"
],
"score": 0.94,
"id": "10901-2609171455--32213-1-11182-2609180855",
"token": "AQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyA=",
"inputCorrected": false,
"legs": [
{
"from": "DAC",
"to": "DXB",
"dep": "2026-09-17T14:55:00",
"arr": "2026-09-18T08:55:00",
"dur_min": 660,
"stops": 1,
"segments": [
{
"flight": "EK 585",
"from": "DAC",
"to": "DXB",
"dep": "2026-09-17T14:55:00",
"arr": "2026-09-18T08:55:00",
"dur_min": 660
}
]
}
]
}

Booking Details Output (bookingDetails)

When retrieving booking details, each item in the dataset represents a specific booking provider / OTA option with direct checkout links:

{
"id": "opt_booking_com_01",
"agent_id": "b_com",
"agent_name": "Booking.com",
"is_carrier": false,
"agent_rating": 4.5,
"agent_reviews": 12480,
"price": 343.0,
"currency": "USD",
"booking_url": "https://www.skyscanner.net/transport_deeplink/4.0/US/en-US/USD/b_com/...",
"fare_class": "Economy Standard",
"cabin_baggage": "Included (1 piece)",
"checked_baggage": "Included (20 kg)",
"changeable": true,
"refundable": false,
"update_status": "CONFIRMED"
}

Programmatic Integration

You can easily trigger this Actor using Apify's API clients or cURL.

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"operation": "oneWay",
"oneWay": {
"origin": "JFK",
"dest": "LHR",
"date": "2026-09-17"
},
"adults": 1,
"cabin": "economy",
"limit": 20,
"currency": "USD"
}
run = client.actor("skyscanner-flights-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('price')} - {', '.join(item.get('carriers', []))}")

Node.js / JavaScript (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: 'YOUR_APIFY_TOKEN',
});
const runInput = {
operation: 'bookingDetails',
bookingDetails: {
itinerary_id: '10901-2609171455--32213-1-11182-2609180855',
origin: 'DAC',
dest: 'DXB',
date: '2026-09-17'
},
currency: 'USD'
};
const run = await client.actor('skyscanner-flights-scraper').call(runInput);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(opt => {
console.log(`${opt.agent_name}: $${opt.price} -> ${opt.booking_url}`);
});

cURL

curl --request POST \
--url "https://api.apify.com/v2/acts/skyscanner-flights-scraper/runs?token=YOUR_APIFY_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"operation": "oneWay",
"oneWay": {
"origin": "JFK",
"dest": "LHR",
"date": "2026-09-17"
},
"currency": "USD"
}'

Frequently Asked Questions (FAQ)

1. Do I need to provide proxies?

No. The Actor includes automatic residential proxy fallback and authentic mobile TLS fingerprints out of the box. No external proxy configuration is required.

2. Can I use city names instead of airport IATA codes?

Yes. The Actor automatically resolves city names (e.g. London, New York, Paris) to corresponding Skyscanner hub codes (LHR, JFK, CDG). For maximum precision, 3-letter IATA codes are recommended.

Skyscanner's live booking resolver (Sonar) validates the flight itinerary against route legs. Supplying origin and dest ensures the route geometry matches the itinerary and unlocks live pricing options from all airlines and travel agents.

4. How fresh is the pricing data?

All searches are performed in real-time against live Skyscanner mobile endpoints. Flight prices and availability are current as of the second the Actor executes.


This scraper extracts publicly available pricing and flight schedules. Please review Skyscanner's terms of service and ensure compliance with local regulations (such as GDPR for personal data).