Skyscanner Flights & Travel API
Pricing
Pay per usage
Skyscanner Flights & Travel API
Comprehensive Skyscanner scraping API with real-time flights, hotels, and car hire data. 20 endpoints.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Elis Bushaj
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract real-time flight prices, hotel listings, and car hire data from Skyscanner's internal API — the same data shown to users in the Skyscanner app, with full session-managed anti-bot handling. This is the only Skyscanner Actor on Apify that covers flights, hotels, and car hire in a single integration, priced 32% below the only request-model competitor.
20 endpoints | Pay-Per-Event pricing | Batch mode — bulk download & export
Features
- Full flight search + Google Flights — one-way, return, multi-stop, "fly everywhere", and Google Flights roundtrip/one-way with price grids; more flight data types than any Skyscanner competitor on Apify
- Only Skyscanner Actor with hotels and car hire — search destinations, compare hotel prices and reviews, find car hire options; no competitor on Apify includes these
- Price calendars with 2D return grids — find cheapest travel windows with one-way and return date-grid pricing; the 2D return calendar is missing from the leading RapidAPI competitor
- Batch mode — paste URLs/requests, run, get results in the dataset. No polling, no API client required.
- Pay only for what you use — no monthly commitment, cancel any time; pricing active from 2026-04-29
Quick Start
Option 1 — Apify Console
- Click Try for free on this listing
- In the Input tab, fill in your request (see example below)
- Click Start and wait ~30 seconds
- Open the Output tab to view results or download as JSON/CSV
Example input (London → New York, 2026-08-01):
{"requests": [{"originSkyId": "LOND","destinationSkyId": "NYCA","originEntityId": "27544008","destinationEntityId": "27537542","date": "2026-08-01","currency": "USD","market": "US"}]}
Option 2 — REST API (Standby)
curl -X GET \"https://elis--skyscanner-api.apify.actor/flights/searchAirport?query=London" \-H "Authorization: Bearer $APIFY_TOKEN"
Replace $APIFY_TOKEN with your token from Apify Console → Settings → Integrations.
Example response (trimmed):
{"status": 200,"data": {"places": [{"skyId": "LOND","entityId": "27544008","iataCode": "LON","name": "London","cityName": "London","countryName": "United Kingdom","placeType": "CITY"}]}}
Pricing & Budget Guide
Pricing model: Pay-Per-Event — charged once per URL/request processed.
| Event | Price | When it fires |
|---|---|---|
request | $0.0034 | Once per request processed in a batch run |
Budget translation — set ACTOR_MAX_TOTAL_CHARGE_USD to cap your spend:
| Budget | ~Requests | Use case |
|---|---|---|
| $0.10 | ~29 | Quick test, try all endpoint types |
| $1.00 | ~294 | Hobbyist — daily flight monitoring |
| $9.99 | ~2,938 | Pro — route research, price tracking |
| $99.99 | ~29,408 | Heavy — bulk scraping, multiple routes |
When your budget is reached, the Actor stops cleanly and saves all results collected so far. Raise ACTOR_MAX_TOTAL_CHARGE_USD and re-run to continue.
Market context: Pricing active 2026-04-29 (14-day notice period). The only direct Skyscanner competitor on Apify charges $0.0025/result-item (per-result model); our per-request model charges once per API call regardless of result count.
Endpoint Reference
GET /flights/searchAirport
Search for airports and cities by name — returns skyId and entityId needed for flight searches.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | ✅ | City or airport name (e.g. "London", "JFK") |
market | string | ❌ | Market code, default "US" |
locale | string | ❌ | Locale code, default "en-US" |
curl "https://elis--skyscanner-api.apify.actor/flights/searchAirport?query=London" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/searchFlights
Search for one-way or return flights between two airports.
| Parameter | Type | Required | Description |
|---|---|---|---|
originSkyId | string | ✅ | Origin SkyId (e.g. "LOND") |
destinationSkyId | string | ✅ | Destination SkyId (e.g. "NYCA") |
originEntityId | string | ✅ | Origin entity ID (e.g. "27544008") |
destinationEntityId | string | ✅ | Destination entity ID (e.g. "27537542") |
date | string | ✅ | Outbound date YYYY-MM-DD |
returnDate | string | ❌ | Return date for round trips |
adults | integer | ❌ | Number of adults, default 1 |
cabinClass | string | ❌ | economy, premiumeconomy, business, first |
currency | string | ❌ | Currency code, default "USD" |
market | string | ❌ | Market code, default "US" |
countryCode | string | ❌ | Country code, default "US" |
curl "https://elis--skyscanner-api.apify.actor/flights/searchFlights?originSkyId=LOND&destinationSkyId=NYCA&originEntityId=27544008&destinationEntityId=27537542&date=2026-08-01" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/searchIncomplete
Paginate a live flight search session — call after searchFlights to load additional itineraries.
| Parameter | Type | Required | Description |
|---|---|---|---|
sessionId | string | ✅ | Session ID from searchFlights response |
curl "https://elis--skyscanner-api.apify.actor/flights/searchIncomplete?sessionId=SESSION_ID" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/getFlightDetails
Retrieve full details for a specific itinerary including booking links.
| Parameter | Type | Required | Description |
|---|---|---|---|
itineraryId | string | ✅ | Itinerary ID from searchFlights |
sessionId | string | ✅ | Session ID from searchFlights |
curl "https://elis--skyscanner-api.apify.actor/flights/getFlightDetails?itineraryId=ITINERARY_ID&sessionId=SESSION_ID" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/getPriceCalendar
Get a one-way price calendar — minimum prices per departure date for a route.
| Parameter | Type | Required | Description |
|---|---|---|---|
originSkyId | string | ✅ | Origin SkyId |
destinationSkyId | string | ✅ | Destination SkyId |
fromDate | string | ✅ | Start date YYYY-MM-DD |
toDate | string | ❌ | End date YYYY-MM-DD |
cabinClass | string | ❌ | Cabin class |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/flights/getPriceCalendar?originSkyId=LOND&destinationSkyId=NYCA&fromDate=2026-08-01" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/getPriceCalendarReturn
Get a 2D return price calendar — outbound × return date grid with minimum prices. Not available in the leading competitor.
| Parameter | Type | Required | Description |
|---|---|---|---|
originSkyId | string | ✅ | Origin SkyId |
destinationSkyId | string | ✅ | Destination SkyId |
fromDate | string | ✅ | Outbound start date |
toDate | string | ❌ | Outbound end date |
returnFromDate | string | ❌ | Return start date |
returnToDate | string | ❌ | Return end date |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/flights/getPriceCalendarReturn?originSkyId=LOND&destinationSkyId=NYCA&fromDate=2026-08-01&returnFromDate=2026-08-08" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/searchFlightsMultiStops
Search for multi-stop itineraries across several legs in a single request.
| Parameter | Type | Required | Description |
|---|---|---|---|
legs | string (JSON) | ✅ | JSON array of leg objects with originSkyId, destinationSkyId, date |
adults | integer | ❌ | Number of adults |
cabinClass | string | ❌ | Cabin class |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/flights/searchFlightsMultiStops?legs=[{\"originSkyId\":\"LOND\",\"destinationSkyId\":\"NYCA\",\"date\":\"2026-08-01\"},{\"originSkyId\":\"NYCA\",\"destinationSkyId\":\"CDGB\",\"date\":\"2026-08-10\"}]" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/searchFlightEverywhere
Discover the cheapest destinations from an origin — "fly anywhere" price discovery.
| Parameter | Type | Required | Description |
|---|---|---|---|
originSkyId | string | ✅ | Origin SkyId |
originEntityId | string | ✅ | Origin entity ID |
cabinClass | string | ❌ | Cabin class |
currency | string | ❌ | Currency code |
market | string | ❌ | Market code |
curl "https://elis--skyscanner-api.apify.actor/flights/searchFlightEverywhere?originSkyId=LOND&originEntityId=27544008" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /flights/getCheapestOneway
Get the cheapest one-way fares from an origin across all destinations.
| Parameter | Type | Required | Description |
|---|---|---|---|
originSkyId | string | ✅ | Origin SkyId |
originEntityId | string | ✅ | Origin entity ID |
currency | string | ❌ | Currency code |
market | string | ❌ | Market code |
curl "https://elis--skyscanner-api.apify.actor/flights/getCheapestOneway?originSkyId=LOND&originEntityId=27544008" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/searchDestination
Search for hotel destinations by name — returns destination IDs for hotel searches.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | ✅ | Destination name (e.g. "Paris") |
locale | string | ❌ | Locale code, default "en-GB" |
curl "https://elis--skyscanner-api.apify.actor/hotels/searchDestination?query=Paris" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/searchHotels
Search for hotels at a destination with pricing and availability.
| Parameter | Type | Required | Description |
|---|---|---|---|
entityId | string | ✅ | Destination entity ID from searchDestination |
checkin | string | ✅ | Check-in date YYYY-MM-DD |
checkout | string | ✅ | Check-out date YYYY-MM-DD |
adults | integer | ❌ | Number of adults, default 1 |
rooms | integer | ❌ | Number of rooms, default 1 |
currency | string | ❌ | Currency code |
market | string | ❌ | Market code |
curl "https://elis--skyscanner-api.apify.actor/hotels/searchHotels?entityId=27539733&checkin=2026-08-01&checkout=2026-08-05" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/getHotelDetails
Get full details for a specific hotel including amenities and location.
| Parameter | Type | Required | Description |
|---|---|---|---|
hotelId | string | ✅ | Hotel ID from searchHotels |
entityId | string | ✅ | Destination entity ID |
checkin | string | ✅ | Check-in date |
checkout | string | ✅ | Check-out date |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/hotels/getHotelDetails?hotelId=HOTEL_ID&entityId=27539733&checkin=2026-08-01&checkout=2026-08-05" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/getHotelPrices
Get room prices and availability for a hotel.
| Parameter | Type | Required | Description |
|---|---|---|---|
hotelId | string | ✅ | Hotel ID |
entityId | string | ✅ | Destination entity ID |
checkin | string | ✅ | Check-in date |
checkout | string | ✅ | Check-out date |
adults | integer | ❌ | Number of adults |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/hotels/getHotelPrices?hotelId=HOTEL_ID&entityId=27539733&checkin=2026-08-01&checkout=2026-08-05" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/getHotelReviews
Retrieve guest reviews for a specific hotel.
| Parameter | Type | Required | Description |
|---|---|---|---|
hotelId | string | ✅ | Hotel ID |
entityId | string | ✅ | Destination entity ID |
locale | string | ❌ | Locale for reviews, default "en-GB" |
curl "https://elis--skyscanner-api.apify.actor/hotels/getHotelReviews?hotelId=HOTEL_ID&entityId=27539733" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/getSimilarHotels
Get a list of similar hotels near a given hotel.
| Parameter | Type | Required | Description |
|---|---|---|---|
hotelId | string | ✅ | Reference hotel ID |
entityId | string | ✅ | Destination entity ID |
checkin | string | ✅ | Check-in date |
checkout | string | ✅ | Check-out date |
curl "https://elis--skyscanner-api.apify.actor/hotels/getSimilarHotels?hotelId=HOTEL_ID&entityId=27539733&checkin=2026-08-01&checkout=2026-08-05" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /hotels/getNearbyMap
Get hotels near a specific map location (lat/lng).
| Parameter | Type | Required | Description |
|---|---|---|---|
lat | number | ✅ | Latitude |
lng | number | ✅ | Longitude |
checkin | string | ✅ | Check-in date |
checkout | string | ✅ | Check-out date |
currency | string | ❌ | Currency code |
curl "https://elis--skyscanner-api.apify.actor/hotels/getNearbyMap?lat=48.8566&lng=2.3522&checkin=2026-08-01&checkout=2026-08-05" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /cars/searchLocation
Search for car hire pickup/dropoff locations by name.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | ✅ | Location name (e.g. "Heathrow Airport") |
locale | string | ❌ | Locale code |
curl "https://elis--skyscanner-api.apify.actor/cars/searchLocation?query=Heathrow+Airport" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /cars/searchCars
Search for available car hire options between pickup and dropoff.
| Parameter | Type | Required | Description |
|---|---|---|---|
pickupEntityId | string | ✅ | Pickup location entity ID |
dropoffEntityId | string | ✅ | Dropoff location entity ID |
pickupDate | string | ✅ | Pickup date YYYY-MM-DD |
dropoffDate | string | ✅ | Dropoff date YYYY-MM-DD |
pickupTime | string | ❌ | Pickup time HH:MM, default "10:00" |
dropoffTime | string | ❌ | Dropoff time HH:MM, default "10:00" |
currency | string | ❌ | Currency code |
market | string | ❌ | Market code |
curl "https://elis--skyscanner-api.apify.actor/cars/searchCars?pickupEntityId=ENTITY_ID&dropoffEntityId=ENTITY_ID&pickupDate=2026-08-01&dropoffDate=2026-08-08" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /config/getLocale
Get locale information for a market including currency, language, and country.
| Parameter | Type | Required | Description |
|---|---|---|---|
market | string | ❌ | Market code, default "US" |
curl "https://elis--skyscanner-api.apify.actor/config/getLocale?market=US" \-H "Authorization: Bearer $APIFY_TOKEN"
GET /config/getExchangeRates
Get current exchange rates for a base currency.
| Parameter | Type | Required | Description |
|---|---|---|---|
baseCurrency | string | ✅ | Base currency code (e.g. "USD") |
curl "https://elis--skyscanner-api.apify.actor/config/getExchangeRates?baseCurrency=USD" \-H "Authorization: Bearer $APIFY_TOKEN"
FAQ
How is this different from the official Skyscanner API? Skyscanner's official Partner API requires approval and is only available to approved travel businesses. This Actor uses Skyscanner's internal web API (the same endpoints the app uses) — no approval needed, works today.
Is there a free tier? New Apify accounts receive $5 free credit. At $0.0034/request, that's approximately 1,470 free requests to evaluate the API across all endpoint types.
How does batch mode work?
Fill in the Input tab with a requests array — each entry is one API call. Click Start, wait for the run to finish, then download all results from the Output tab as JSON, CSV, or JSONL. No client library required.
What happens when I reach my budget?
The Actor stops cleanly after the current request finishes. All results collected so far are saved to the dataset. Increase ACTOR_MAX_TOTAL_CHARGE_USD and re-run to continue.
Can I automate this via API? Yes — use the Apify REST API or any Apify SDK (Node.js, Python). Runs are schedulable via Apify Console → Schedules. See Apify API docs for details.
Does this include Google Flights data?
Yes — /flights/searchFlightEverywhere and /flights/getCheapestOneway use Google Flights data for price discovery. Standard flight search endpoints use Skyscanner data.
What if a request fails due to anti-bot?
The Actor uses session-managed proxy rotation to handle Skyscanner's anti-bot. If a request fails, it is retried automatically. Persistent failures are recorded with status: "error" and the reason.