Skyscanner APIskyscanner.com ↗
Search Skyscanner flights, compare booking-agent prices, get daily/monthly price calendars, live flight status, airport lookup, and airline overviews via API.
What is the Skyscanner API?
The Skyscanner API exposes 6 endpoints covering flight search, price calendars, airport resolution, live flight tracking, and airline overviews. The search_flights endpoint returns full itineraries with per-leg segment data, carrier details, and pricing options from multiple booking agents including direct booking URLs. The get_price_calendar_daily endpoint covers roughly 12 months of daily cheapest-fare data for a route, giving programmatic access to the same price grids travelers use on Skyscanner.
curl -X GET 'https://api.parse.bot/scraper/f1fc6c1e-f28b-4354-8ec8-eed3deed11d3/search_places?query=London&locale=en-US&market=US' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for airports and cities by name. Returns place IDs (sky IDs and geo IDs) needed for other endpoints. Use this to resolve city/airport names to IDs before searching flights or prices.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query (city name, airport name, or IATA code) |
| locale | string | Locale for results |
| market | string | Market/country code |
{
"type": "object",
"fields": {
"query": "string — the search query used",
"total": "integer — number of places returned",
"locale": "string — locale used",
"market": "string — market used",
"places": "array of place objects with place_id, name, iata_code, city_id, city_name, country_id, country_name, geo_id, geo_container_id, location, display_name"
},
"sample": {
"data": {
"query": "London",
"total": 10,
"locale": "en-US",
"market": "US",
"places": [
{
"name": "London",
"geo_id": "27544008",
"city_id": "LOND",
"location": "51.5041174139,-0.0943465343",
"place_id": "LOND",
"city_name": "London",
"iata_code": "LON",
"country_id": "UK",
"country_name": "United Kingdom",
"display_name": "London|England|United Kingdom",
"geo_container_id": "27544008"
}
]
},
"status": "success"
}
}About the Skyscanner API
Place and Airport Resolution
Before calling any flight or price endpoint you typically need Skyscanner-specific IDs. search_places accepts a query string (city name, airport name, or IATA code) and returns an array of place objects, each carrying a place_id, iata_code, city_id, geo_id, and geo_container_id. The place_id (sky ID, e.g. NYCA) feeds into search_flights and the price calendar endpoints; the geo_id is specifically required by get_price_calendar_monthly.
Flight Search and Price Calendars
search_flights accepts a required origin, destination (city or airport name), and date in YYYY-MM-DD format. Optional parameters include adults, cabin_class (ECONOMY, PREMIUM_ECONOMY, BUSINESS, or FIRST), currency, market, and max_polls. Each result in the flights array includes an id, price, formatted_price, score, tags, a legs array with segment-level detail, and a pricing_options array listing individual booking agents with their own prices and URLs. The filter_stats object summarises total_results, duration bounds, and stop_prices.
get_price_calendar_daily returns an array of {day, group, price} records spanning approximately 12 months, where group maps to a price_groups tier label (e.g. "cheap", "average"). get_price_calendar_monthly uses origin_id and destination_id geo IDs and returns monthly_prices objects carrying year, month, price, and price_category. Both calendars accept currency and market parameters.
Flight Status and Airline Overviews
get_flight_status takes a single flight_number string (e.g. EK203) and returns up to three days of departure records. Each record in the flights array includes date, status, departure_airport_code, arrival_airport_code, and corresponding airport names. The response also surfaces a secondary_flight_number (ICAO designator) when available.
get_airline_overview accepts a 2-character IATA code or full airline name and returns a stats object with display strings for best_deal_price, cheapest_month, destinations_count, most_popular_airport, and flights_per_week. It also provides a deals array of origin/destination pairs with price and formatted_price, a faqs array of plain-text question-answer pairs from the airline page, and an other_airlines cross-link list.
The Skyscanner API is a managed, monitored endpoint for skyscanner.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when skyscanner.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official skyscanner.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a fare-alert service by polling
get_price_calendar_dailyand notifying users when a route's price drops below a threshold. - Populate a trip-planning UI with monthly cheapest prices using
get_price_calendar_monthlywithdirect_onlyandtrip_typefilters. - Aggregate multi-agent booking prices from
search_flightspricing_options to surface the cheapest booking URL for a given itinerary. - Resolve user-typed airport or city names to sky IDs and geo IDs with
search_placesbefore passing them to downstream endpoints. - Display live departure status for a known flight number using
get_flight_status, showing route, date, and current status per departure. - Render an airline profile page with deal prices, top destinations, and key stats pulled from
get_airline_overviewby IATA code. - Analyse cabin-class price differences on a route by running
search_flightsmultiple times with differentcabin_classvalues.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Skyscanner have an official public developer API?+
What does `search_flights` return beyond a price, and how do you filter results?+
search_flights returns a flights array where each object includes a score, tags, fare_policy, is_self_transfer flag, a legs array (segment-level carrier and timing detail), and a pricing_options array listing individual booking agents with separate prices and booking URLs. Filtering is done client-side using the filter_stats object, which provides breakdowns by airport, carrier, and stop count. There is no server-side filter parameter on this endpoint.How fresh is the flight status data from `get_flight_status`?+
Does the API cover hotel or car-hire search from Skyscanner?+
Can I retrieve seat maps or baggage allowance details for a flight?+
search_flights response includes itinerary-level fare policy and per-agent pricing but does not expose seat maps, baggage rules, or fare-condition text. You can fork this API on Parse and revise it to add an endpoint targeting that detail.