# Table of Contents
- [Introduction | API Developer Documentation](#introduction-api-developer-documentation)
- [Getting Started | API Developer Documentation](#getting-started-api-developer-documentation)
- [Shallow Link Generator | API Developer Documentation](#shallow-link-generator-api-developer-documentation)
- [Flights Indicative Prices API | API Developer Documentation](#flights-indicative-prices-api-api-developer-documentation)
- [Flights Live Prices API | API Developer Documentation](#flights-live-prices-api-api-developer-documentation)
- [Car Hire Indicative Prices API | API Developer Documentation](#car-hire-indicative-prices-api-api-developer-documentation)
- [Autosuggest API | API Developer Documentation](#autosuggest-api-api-developer-documentation)
- [Affiliates Link API | API Developer Documentation](#affiliates-link-api-api-developer-documentation)
- [Geo API | API Developer Documentation](#geo-api-api-developer-documentation)
- [Car Hire Live Prices API | API Developer Documentation](#car-hire-live-prices-api-api-developer-documentation)
- [Car Hire Agents API | API Developer Documentation](#car-hire-agents-api-api-developer-documentation)
- [Culture API | API Developer Documentation](#culture-api-api-developer-documentation)
- [Carriers API | API Developer Documentation](#carriers-api-api-developer-documentation)
- [Frequently Asked Questions | API Developer Documentation](#frequently-asked-questions-api-developer-documentation)
- [Baggage and Additional Attributes | API Developer Documentation](#baggage-and-additional-attributes-api-developer-documentation)
- [Changelog | API Developer Documentation](#changelog-api-developer-documentation)
- [Fare Upsells | API Developer Documentation](#fare-upsells-api-developer-documentation)
- [Authentication | API Developer Documentation](#authentication-api-developer-documentation)
- [Requests and responses | API Developer Documentation](#requests-and-responses-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Culture information | API Developer Documentation](#culture-information-api-developer-documentation)
- [Localisation | API Developer Documentation](#localisation-api-developer-documentation)
- [Query leg | API Developer Documentation](#query-leg-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [IATA codes and Entity IDs | API Developer Documentation](#iata-codes-and-entity-ids-api-developer-documentation)
- [Car Hire | API Developer Documentation](#car-hire-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Rate limits | API Developer Documentation](#rate-limits-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Create and poll | API Developer Documentation](#create-and-poll-api-developer-documentation)
- [Hotels | API Developer Documentation](#hotels-api-developer-documentation)
- [Refresh Prices | API Developer Documentation](#refresh-prices-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Flights emissions data | API Developer Documentation](#flights-emissions-data-api-developer-documentation)
- [Flights | API Developer Documentation](#flights-api-developer-documentation)
- [Quick Start Guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Tracking | API Developer Documentation](#tracking-api-developer-documentation)
- [Query object | API Developer Documentation](#query-object-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [What is Impact? | API Developer Documentation](#what-is-impact-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [IATA codes and Entity IDs | API Developer Documentation](#iata-codes-and-entity-ids-api-developer-documentation)
- [What can you build with the API? | API Developer Documentation](#what-can-you-build-with-the-api-api-developer-documentation)
- [Enums | API Developer Documentation](#enums-api-developer-documentation)
- [Usage Guidelines | API Developer Documentation](#usage-guidelines-api-developer-documentation)
- [Tracking | API Developer Documentation](#tracking-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Dates | API Developer Documentation](#dates-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Examples | API Developer Documentation](#examples-api-developer-documentation)
- [B2B Pricing Accuracy | API Developer Documentation](#b2b-pricing-accuracy-api-developer-documentation)
- [Impact Links - Quick Start Guide | API Developer Documentation](#impact-links-quick-start-guide-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Car Hire Parameters | API Developer Documentation](#car-hire-parameters-api-developer-documentation)
- [Booking Types | API Developer Documentation](#booking-types-api-developer-documentation)
- [Verticals and Page Types | API Developer Documentation](#verticals-and-page-types-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Hotels Parameters | API Developer Documentation](#hotels-parameters-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Currencies | API Developer Documentation](#currencies-api-developer-documentation)
- [Locales | API Developer Documentation](#locales-api-developer-documentation)
- [Nearest culture | API Developer Documentation](#nearest-culture-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Mash-ups | API Developer Documentation](#mash-ups-api-developer-documentation)
- [OTA Virtual Interlines | API Developer Documentation](#ota-virtual-interlines-api-developer-documentation)
- [Quick start guide | API Developer Documentation](#quick-start-guide-api-developer-documentation)
- [Overview | API Developer Documentation](#overview-api-developer-documentation)
- [Markets | API Developer Documentation](#markets-api-developer-documentation)
- [Multi-City | API Developer Documentation](#multi-city-api-developer-documentation)
- [Query leg | API Developer Documentation](#query-leg-api-developer-documentation)
- [Query object | API Developer Documentation](#query-object-api-developer-documentation)
- [Flights Parameters | API Developer Documentation](#flights-parameters-api-developer-documentation)
---
# Introduction | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
info
If you have any questions, you’ll be able to find more information and answers to questions in our [FAQs](https://skyscannerpartnersupport.zendesk.com/hc/en-us/categories/4524560891549-Affiliate-Flights-API)
or reach out to our Skyscanner Partner Support team.
### About our Travel APIs[](#about-our-travel-apis "Direct link to About our Travel APIs")
Our Travel APIs are provided to connect partners like yourself to all the data you need to build an innovative website or app using our Skyscanner travel content. We’ve made it easier than ever to develop your website using flexible price search options so you can build exciting tools that will expand your travel search options for your users.
#### Advantages of using our Travel APIs:[](#advantages-of-using-our-travel-apis "Direct link to Advantages of using our Travel APIs:")
* Combine our Travel APIs with your existing travel offering to help customers find the best deals anywhere in the world
* Global content and coverage supporting over 52 markets and 30 languages, and giving you access to over 1,300 supply partners
* Easy set up and flexible integration of travel search
* Support Network – a dedicated account manager, engineering support and a developer hub with all the resources needed to integrate
* A partner portal to manage your revenue and commissions
* Complete solution with data, content and legal requirements all taken care of so you can focus on growing your business
### What can you find in this documentation?[](#what-can-you-find-in-this-documentation "Direct link to What can you find in this documentation?")
This documentation is created to support our partners with the integration of Skyscanner’s Travel APIs. You will find tutorials and documentation about our products.
Our API services[](#our-api-services "Direct link to Our API services")
-------------------------------------------------------------------------
* * *
### Flights Live Prices API[](#flights-live-prices-api "Direct link to Flights Live Prices API")
With our Flights Live Prices API, you can search flight live prices from Skyscanner.
[View the Flights Live Prices API reference](/docs/category/flights-live-prices-api)
* * *
### Flights Indicative Prices API[](#flights-indicative-prices-api "Direct link to Flights Indicative Prices API")
With our Flights Indicative Prices API, you can search flight indicative prices from Skyscanner.
[View the Flights Indicative Prices API reference](/docs/category/flights-indicative-prices-api)
* * *
### Car Hire Live Prices API[](#car-hire-live-prices-api "Direct link to Car Hire Live Prices API")
With our Car Hire Live Prices API, you can search car hire live prices from Skyscanner.
[View the Flights Live Prices API reference](/docs/category/car-hire-live-prices-api)
* * *
### Car Hire Indicative Prices API[](#car-hire-indicative-prices-api "Direct link to Car Hire Indicative Prices API")
With our Car Hire Indicative Prices API, you can search car hire indicative prices from Skyscanner.
[View the Flights Live Prices API reference](/docs/category/car-hire-indicative-prices-api)
* * *
### Car Hire Agents API[](#car-hire-agents-api "Direct link to Car Hire Agents API")
With our Car Hire Agents API, you can retrieve information about valid car hire agents providing quotes to Skyscanner.
[View the Flights Live Prices API reference](/docs/category/car-hire-agents-api)
* * *
### Culture API[](#culture-api "Direct link to Culture API")
All of our Travel API responses are localized by market, locale (language), and currency, so these three parameters must be added to every request. You can use the Culture API to get all the markets, locales and currencies we support in Skyscanner.
This API was previously called the `Reference API` in the previous version.
[View the Culture API reference](/docs/category/culture-api)
* * *
### Geo API[](#geo-api "Direct link to Geo API")
The Geo API returns a full catalogue of supported locations (airports, cities, countries and continents) in the specified locale. Supported locations are locations where travelers can search flights to and from.
[View the Geo API reference](/docs/category/geo-api)
* * *
* [About our Travel APIs](#about-our-travel-apis)
* [What can you find in this documentation?](#what-can-you-find-in-this-documentation)
* [Our API services](#our-api-services)
* [Flights Live Prices API](#flights-live-prices-api)
* [Flights Indicative Prices API](#flights-indicative-prices-api)
* [Car Hire Live Prices API](#car-hire-live-prices-api)
* [Car Hire Indicative Prices API](#car-hire-indicative-prices-api)
* [Car Hire Agents API](#car-hire-agents-api)
* [Culture API](#culture-api)
* [Geo API](#geo-api)
---
# Getting Started | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Authentication\
------------------\
\
For all of the Skyscanner API we use API keys to allow access to the APIs so that we know who is requesting the data.](/docs/getting-started/authentication)
[📄️ Requests and responses\
--------------------------\
\
The Travel APIs request and response bodies use JSON format.](/docs/getting-started/requests-and-responses)
[📄️ Culture information\
-----------------------\
\
When calling our API you will need to provide queries with localisation parameters. The following parameters must be added to every request: market, locale and currency.](/docs/getting-started/culture-service)
[📄️ Rate limits\
---------------\
\
We use rate limiting to protect our service's from strain on web servers, malicious attacks and caps on API calls per app.](/docs/getting-started/rate-limits)
[📄️ IATA codes and Entity IDs\
-----------------------------\
\
For places and locations, our Travel APIs use iata, or entityId. You can choose which type you wish to use, as the location object will accept either of these identifiers.](/docs/getting-started/iata-and-entity-ids)
[📄️ Create and poll\
-------------------\
\
We're using examples of Flights vertical but the concept is similar to other verticals such as Car hire](/docs/getting-started/create-and-poll)
[📄️ Flights emissions data\
--------------------------\
\
Introduction](/docs/getting-started/flights-emissions-data)
[📄️ What is Impact?\
-------------------\
\
Impact is a third party tool we use for tracking our partner's redirects so that we can calculate payments to partners. See Impact's Website for more details.](/docs/getting-started/impact)
[📄️ Enums\
---------\
\
Below is a list of all the enums in use by the API.](/docs/getting-started/enums)
[📄️ Usage Guidelines\
--------------------\
\
Skyscanner's market leading suite of search APIs provide globalised content and localised coverage to over 250 partners around the world. By using our API, you agree to adhere to our UX, design and usage guidelines as outlined below and which form the Technical Requirements. Failure to comply with these requirements could result in your API access being revoked.](/docs/getting-started/usage-guidelines)
---
# Shallow Link Generator | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The Shallow Link endpoint generates Skyscanner shallow links (links that redirect travellers to Skyscanner flight search pages).
For example, if a request to the shallow link endpoint is made with an origin of `LON` and destination of `BER`, travellers who click on the link will be redirected to the following Skyscanner flight search page:

These shallow links allow travellers to continue their flight search on Skyscanner.
Usage
=====
The `GET` endpoint can be accessed with the following URL: `https://partners.api.skyscanner.net/refer/flights/live/dayview`
The URL needs to be populated with several required query params (see below for full list).
When a successful request is made, the endpoint returns a `307` response to the caller which redirects them to the correct destination flight search page.
If a request fails due to missing or invalid params, the endpoint returns a `307` response with `skyscanner.net` as the destination URL.
Quick Start
===========
Below are example requests to the endpoint
One Way Search[](#one-way-search "Direct link to One Way Search")
-------------------------------------------------------------------
Example request to generate a shallow link page for a one way search from London to Berlin
https://partners.api.skyscanner.net/refer/flights/live/dayview?origin=lon&destination=ber&departuredate=2024-12-12&userlanguage=en&usercountry=uk&associateid=aaa-bbb-ccc
Return Search[](#return-search "Direct link to Return Search")
----------------------------------------------------------------
Example request to generate a shallow link page for a return journey search from London to Berlin
https://partners.api.skyscanner.net/refer/flights/live/dayview?origin=lon&destination=ber&departuredate=2024-12-01&returndate=2024-12-12&userlanguage=en&usercountry=uk&associateid=aaa-bbb-ccc
Return Search With Carriers Filter[](#return-search-with-carriers-filter "Direct link to Return Search With Carriers Filter")
-------------------------------------------------------------------------------------------------------------------------------
Example request for London to Singapore with only Singapore Airlines and Qatar Airlines included in result.
https://partners.api.skyscanner.net/refer/flights/live/dayview?origin=lon&destination=sin&departuredate=2024-12-01&returndate=2024-12-12&userlanguage=en&usercountry=uk&associateid=12345Test&carriers=SQ,QR
Query Params
============
Below are lists of supported query params
Required Params[](#required-params "Direct link to Required Params")
----------------------------------------------------------------------
These params are required. If they are not provided, the shallow link generation will fail and users will be redirected to `skyscanner.net`
| Param Name | Description |
| --- | --- |
| `departuredate` | Date of depatrure in the format: `yyyy-mm-dd`. If only `departuredate` specified, search will be for a one-way journey. |
| `origin` or `origins` | IATA city code of starting point for search i.e.: `LON`. `origins` can be specified as a comma separated string, however, we will only take the first IATA code in the string |
| `destination` or `destinations` | IATA city code of end point for search i.e.: `LON`. `destinations` can be specified as a comma separated string, however, we will only take the first IATA code in the string |
| `usercountry` | ISO country code of user country i.e.: `uk`. Determines currency and locale of search result page. |
| `userlanguage` | ISO language code for user i.e.: `en`. Determines language of search result page |
| `associateid` | Skyscanner associate ID |
For `origin` and `destination`, we support the plural version of the query param (`origins` and `destinations`). However, we do not support searching for multiple cities. The shallow link will contain the first place specified in `origins` or `destinations`.
Optional Params[](#optional-params "Direct link to Optional Params")
----------------------------------------------------------------------
| Param Name | Description |
| --- | --- |
| `returndate` | Date of return in the format: `yyyy-mm-dd`. If specified, search will be for return flights. |
| `carriers` | Comma separated list of IATA carrier codes. If specified, search will only contain results for specified carriers. I.e.: `SQ,QR` |
| `nonstop` | `true` or `false` value that determines if search results only contain non-stop (direct) itineraries |
| `cabin` | Cabin class for travel. i.e.: `economy`, `premiumeconomy`, `business`, `first` |
| `utm_source` | UTM param used for tracking |
| `utm_medium` | UTM param used for tracking |
| `utm_term` | UTM param used for tracking |
| `utm_content` | UTM param used for tracking |
Invalid or Missing Query Params
===============================
If the endpoint is passed invalid query params, or not all required query params are provided, the endpoint will redirect users to `skyscanner.net` instead of the desired shallow link page or throwing an error.
* [One Way Search](#one-way-search)
* [Return Search](#return-search)
* [Return Search With Carriers Filter](#return-search-with-carriers-filter)
* [Required Params](#required-params)
* [Optional Params](#optional-params)
---
# Flights Indicative Prices API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/flights-indicative-prices/overview)
[📄️ Query leg\
-------------\
\
One way or return](/docs/flights-indicative-prices/queryLeg)
[📄️ Query object\
----------------\
\
The query object is used when querying the endpoint for data on your search criteria.](/docs/flights-indicative-prices/query-object)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/flights-indicative-prices/quick-start)
[📄️ What can you build with the API?\
------------------------------------\
\
The Flights Indicative Prices API allows for more flexibility than the Flights Live Prices API. You](/docs/flights-indicative-prices/use-cases)
---
# Flights Live Prices API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/flights-live-prices/overview)
[📄️ Tracking\
------------\
\
How is traffic tracked?](/docs/flights-live-prices/tracking)
[📄️ Booking Types\
-----------------\
\
Transfer Types](/docs/flights-live-prices/booking-types)
[📄️ Mash-ups\
------------\
\
What are Mash-ups?](/docs/flights-live-prices/mash-ups)
[📄️ OTA Virtual Interlines\
--------------------------\
\
What are OTA Virtual Interlines?](/docs/flights-live-prices/ota-virtual-interlines)
[📄️ Multi-City\
--------------\
\
Multi-City is a feature supported in Flights Live Prices API. It allows users to search flights worldwide using multiple stops in their query by adding extra legs with stopovers in several different cities.](/docs/flights-live-prices/multiCity)
[📄️ Query object\
----------------\
\
The query object is used when querying the endpoint for data on your search criteria.](/docs/flights-live-prices/query-object)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/flights-live-prices/quick-start)
[📄️ Refresh Prices\
------------------\
\
A request for refresh prices will return the most up-to-date prices for the selected itinerary. Some of the prices returned in the previous requests might be cached and slightly older. By creating a refresh prices session you'll receive the most up-to-date price which we can get from our partners.](/docs/flights-live-prices/refresh-prices)
[📄️ B2B Pricing Accuracy\
------------------------\
\
This following section is meant to provide an overview of why pricing inaccuracies occur in the industry, why it is difficult to completely eradicate them, what Skyscanner is doing to improve them, and what actions you, as a Partner, can take to flag and avoid inaccuracies.](/docs/flights-live-prices/b2b-pricing-accuracy)
---
# Car Hire Indicative Prices API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/carhire-indicative-prices/overview)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/carhire-indicative-prices/quick-start)
---
# Autosuggest API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/autosuggest/overview)
[📄️ Flights\
-----------\
\
Endpoint](/docs/autosuggest/flights)
[📄️ Car Hire\
------------\
\
Endpoint](/docs/autosuggest/car-hire)
[📄️ Hotels\
----------\
\
Endpoint](/docs/autosuggest/hotels)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/autosuggest/quick-start)
---
# Affiliates Link API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Quick Start Guide\
---------------------\
\
A guide on how to to generate referral links and embed those on a website.](/docs/referrals/quick-start-guide)
[📄️ Overview\
------------\
\
Introduction](/docs/referrals/overview)
[📄️ Localisation\
----------------\
\
If you have specific localisation requirements, you can use the parameters locale, market or currency to set specific values for your referral links.](/docs/referrals/localisation)
[📄️ Tracking\
------------\
\
How is traffic tracked?](/docs/referrals/tracking)
[📄️ IATA codes and Entity IDs\
-----------------------------\
\
An overview of what IATA codes and Entity IDs are](/docs/referrals/iata-codes-and-entity-ids)
[📄️ Verticals and Page Types\
----------------------------\
\
The verticals and page types that we support for travellers to redirect to](/docs/referrals/verticals-and-page-types)
[📄️ Dates\
---------\
\
Details about how dates work](/docs/referrals/dates)
[📄️ Examples\
------------\
\
Referral link examples](/docs/referrals/examples)
[📄️ Flights Parameters\
----------------------\
\
Parameters that are supported for the Flights vertical](/docs/referrals/flights-parameters)
[📄️ Car Hire Parameters\
-----------------------\
\
Parameters that are supported for the Car Hire vertical](/docs/referrals/cars-parameters)
[📄️ Hotels Parameters\
---------------------\
\
Parameters that are supported for the Hotels vertical](/docs/referrals/hotels-parameters)
[📄️ Impact Links - Quick Start Guide\
------------------------------------\
\
A guide on how to to generate a link and embed it on a website.](/docs/referrals/impact-quick-start-guide)
---
# Geo API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/geo/overview)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/geo/quick-start)
---
# Car Hire Live Prices API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/carhire-live-prices/overview)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/carhire-live-prices/quick-start)
---
# Car Hire Agents API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/carhire-agents/overview)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/carhire-agents/quick-start)
---
# Culture API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/culture/overview)
[📄️ Markets\
-----------\
\
Endpoint](/docs/culture/markets)
[📄️ Locales\
-----------\
\
Endpoint](/docs/culture/locales)
[📄️ Currencies\
--------------\
\
Endpoint](/docs/culture/currencies)
[📄️ Nearest culture\
-------------------\
\
Endpoint](/docs/culture/nearest-culture)
[📄️ Quick start guide\
---------------------\
\
Introduction](/docs/culture/quick-start)
---
# Carriers API | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
[📄️ Overview\
------------\
\
Introduction](/docs/carriers/overview)
---
# Frequently Asked Questions | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Flights API General[](#flights-api-general "Direct link to Flights API General")
----------------------------------------------------------------------------------
> ### I'm getting a rate limit error while calling the API. What could be the reason?
Most integrations come with a default rate limit sufficient to build a full integration. They can be found [here](getting-started/rate-limits)
. If you are getting rate limited, please contact your account managers with examples of instances where you’re encountering rate limits, and we can work with you to further optimise your integration.
* * *
> ### Does Skyscanner's API Support CORS (Cross-origin resource sharing)?
For security reasons, we do not support CORS (Cross-origin resource sharing).
* * *
> ### Can I use Skyscanner's Flights API without providing booking deeplinks in my solution?
Unfortunately, we can only offer you our API if the searches result in end user bookings. We only have permission to distribute our supply partners (airline and online travel agents) pricing data for the purpose of generating bookings for them. If you require the prices only, please get in touch with our
[Data Products team](https://www.partners.skyscanner.net/contact/data)
. Alternatively, we would suggest using a GDS (Global Distribution System) instead.
* * *
> ### Where can I find a list of IATA codes for all of the available airlines?
You can access the list of airlines via our [carriers service](carriers/overview)
. Alternatively, you can find the list of all IATA & ICAO airlines codes on the official IATA website:
* [IATA code search](http://www.iata.org/publications/Pages/code-search.aspx)
* [IATA airline list](https://www.iata.org/about/members/Pages/airline-list.aspx?All=true)
* * *
> ### Can I get a list of carriers/online travel agents via the API?
Yes, the API does support retrieving a list of carriers. You can find more information in the [carriers API documentation](carriers/overview)
.
* * *
> ### Can we be provided with all of the airline logos?
We don't provide a catalog of company airlines logos. If you are using Flights Live Prices, each response will contain the logos for the airlines present in the results.
* * *
> ### Can I get a code sample?
We currently do not provide specific code samples, we offer [comprehensive API documentation](getting-started/create-and-poll)
to help you get started. You can find detailed information about how to use our APIs, including parameters, responses, and usage examples. If you have any specific questions or need further assistance, feel free to reach out your account manager.
Flights Live Prices[](#flights-live-prices "Direct link to Flights Live Prices")
----------------------------------------------------------------------------------
> ### For flights, I see cases when the price shown in the booking link does not match the price on the booking agent/online travel agent landing page.
Prices are provided by our booking agent/online travel agent partners and are subject to change without notice. We know how important it is for our partners and travellers to see accurate prices, and are always striving to improve price accuracy. If you notice any inaccurate prices on your end, we’d ask for you to raise it with your account manager.
If you notice any inaccurate prices on your end, we’d ask for you to raise it with your account manager.
We’d require you to provide as much information as possible:
* Logs, video recording or screenshots of the inaccurate prices you are seeing
* Time and Date the Price Inaccuracy was identified
* Market that search was performed in
* Any other contextual information including the request you are sending to our API
This will allow our internal teams to investigate into the issues you’ve identified.
* * *
> ### For flights, I see cases where certain booking agents/online travel agents do not appear in search results.
Itineraries are provided by our booking agent/online travel agent partners and are subject to change/removal without notice. The real-time nature of the Flights Live Prices API means itineraries are unlikely to remain consistent for long periods of time. If you notice consistent issues with our booking agents/online travel agents, please contact your account manager who can pass this on to the relevant team to resolve.
* * *
> ### I'm using the Flights Live Prices API and not seeing timezone offsets displayed anywhere. What is the best practice to display flight times and flight duration property?
All dates and times returned by the Flights Live Prices API are local to the airport. This is a standard practice in the industry and avoids issues related to time zones. We strongly recommend that you avoid calculating durations yourself.
* * *
> ### How do I know when to stop polling the pricing session?
You should stop polling when the Status in the response returns 'RESULT\_STATUS\_COMPLETE'.
* * *
> ### Can I search for one specific flight?
Unfortunately, we are not able to provide searches for just one specific flight.
* * *
> ### Can I change the search details within a single pricing session?
No, if you need to change your search criteria, you'll need to create a new session.
* * *
> ### I see cases where the response contains some unpriced itineraries, is this expected?
Yes, unpriced itineraries can be returned by the API. By default, we try not to send those via our API but sometimes you might observe those to some less popular itineraries or due to some error coming from our data supply partners. Still, most of the time following the deeplink will give you the price of the itinerary. Still if you feel that what you are seeing is wrong or misleading please contact your account manager who can pass the issue onto the relevant team.
Flights Indicative Prices[](#flights-indicative-prices "Direct link to Flights Indicative Prices")
----------------------------------------------------------------------------------------------------
> ### Why does the Indicative Prices API not match that of the live pricing?
Our Indicative Prices Service captures all live pricing searches made by every user on the Skyscanner website or from a supply partner. This service allows us to bypass the demanding nature of flight searches to enable early intent use cases where you need the results instantly, such as quickly assessing how much budget would be needed to go to a City or Country or how much cheaper is it to fly to a destination on one day rather than another.
While the Indicative Pricing Service gives a good indication of the price due to the dynamic nature of flight pricing even recently stored prices can be inaccurate.
The Indicative Pricing Service tries to ensure prices are readily available for each route and date that travellers want to book or compare and will store prices for up to a few days if we think they are still accurate and useful to travellers. For some unpopular routes and dates, there can be circumstances where we might not have results as a traveller search has not been generated or we have removed a price as Skyscanner does not believe it is accurate.
info
Didn't find what you were looking for? Visit our [Partnership FAQs](https://skyscannerpartnersupport.zendesk.com/hc/en-us/categories/4524560891549-Affiliate-Flights-API%22%3EGeneral)
for more information, or submit a request for personalised technical support [here](https://skyscannerpartnersupport.zendesk.com/hc/en-us/requests/new)
.
* [Flights API General](#flights-api-general)
* [Flights Live Prices](#flights-live-prices)
* [Flights Indicative Prices](#flights-indicative-prices)
---
# Baggage and Additional Attributes | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
info
This feature is only accessible by selected partners on an approval basis. Please do not circulate this externally.
Baggage attributes are set of fields available in [Flights Live Prices API](/api/flights-live-pricing)
and [Refresh Prices](/docs/flights-live-prices/refresh-prices)
endpoint. The fields provide details about the cost of additional cabin and checked baggage for a specific flight.
Information on additional attributes is provided, including:
| Additional Attribute Name | Description |
| --- | --- |
| `Advance Change` | Indicates whether you can request changes before flight departure. |
| `Cancellation` | Indicates whether you can request a cancellation. |
| `Seat Pre-Reservation` | Indicates if seat selection is available in advance. |
| `Upgrade eligibility` | Indicates whether you can request an upgraded cabin selection. |
This feature is not enabled by default. If you want to onboard onto it, please reach out to your Account Manager for more information.
Constraints[](#constraints "Direct link to Constraints")
----------------------------------------------------------
This feature is not available in all markets, and we do not have data for all flight supply partners due to limited coverage. Please reach out to your Account Manager for more information.
Attributes Structure[](#attributes-structure "Direct link to Attributes Structure")
-------------------------------------------------------------------------------------
info
Leg-based breakdown is not yet implemented.
All attribute fields are available as either `PricingOptionFare` or `FareDetails` objects depending on the level they are presented at in the API response body. Currently the attributes are supported as both **pricing-option-based** (`PricingOptionFare`) and **leg-based** (`FareDetails`). The goal of offering these two breakdown levels is to provide greater flexibility in how baggage and fare details are displayed, allowing you to better tailor your UI to meet the needs of your users.
* **leg-based** breakdown: Each leg of a journey will have its own specific attribute details. This is useful when you need to display unique baggage policies or allowances for each individual leg of a multi-leg itinerary.
* **pricing-option-based** breakdown: The attributes data at this level represents the most restrictive option across all legs of the specific itinerary. For example, if one leg includes a free cabin baggage allowance while another requires a fee, the per-itinerary baggage information will indicate that cabin baggage is available for a fee. This simplifies the display by showing the most limiting rule, which applies to the entire itinerary.
We expect that only around 5% of itineraries will have differing baggage attributes at the leg-level compared to their overall pricing-option-level data. This is based on a sample data we collected internally and the correct number might differ slightly.
Supported fields for Baggage[](#supported-fields-for-baggage "Direct link to Supported fields for Baggage")
-------------------------------------------------------------------------------------------------------------
The baggage-attributes-related fields are:
| Field name | Description |
| --- | --- |
| `Assessment` | Whether the specific attribute is included for free in the flight ticket, available for a fee, not available or data is unknown. |
| `Pieces` | Amount of pieces of luggage included. |
| `Fee` | The cost of a bag in the currency of the request. |
| `Weight` | Maximum weight of a bag. It can be `lbs` or `kg` and that will depend on the market. For example `lbs` is used for US market. |
Please refer to the [API Reference](api/flights-live-pricing#tag/FlightsService/operation/FlightsService_CreateSearch)
for breakdown of all API fields.
Supported fields for other flights attributes[](#supported-fields-for-other-flights-attributes "Direct link to Supported fields for other flights attributes")
----------------------------------------------------------------------------------------------------------------------------------------------------------------
For **AdvanceChange**, **Cancellation**, **SeatPreReservation** and **AdvanceChange** there is only one attribute available:
| Field name | Description |
| --- | --- |
| `Assessment` | whether the specific attribute is included for free in the flight ticket, available for a fee, not available or data is unknown. |
Please refer to the [API Reference](api/flights-live-pricing#tag/FlightsService/operation/FlightsService_CreateSearch)
for breakdown of all API fields.
Example API usage[](#example-api-usage "Direct link to Example API usage")
----------------------------------------------------------------------------
An example is this flight from `JFK` to `DEL`.
### Example Request[](#example-request "Direct link to Example Request")
tip
Please consider all of the below:
* Make sure additional attributes are enabled by speaking to your Account Manager
* Make sure to set the `includeBaggageData` flag to `true`. This flag enables the retrieval of **ALL** additional attributes in the response.
* Make sure to set the `market` to a market where the additional attributes are enabled such as `US`.
* Currency of the baggage pricing is specified in the request object, similar to flights prices.
#### Request URL[](#request-url "Direct link to Request URL")
https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create
#### Request Body[](#request-body "Direct link to Request Body")
{ "query": { "currency": "USD", "market": "US", "locale": "en-US", "queryLegs": [ { "originPlaceId": { "iata": "JFK" }, "destinationPlaceId": { "iata": "DEL" }, "date": { "year": 2024, "month": 12, "day": 25 } } ], "cabinClass": "CABIN_CLASS_ECONOMY", "adults": 1, "includeBaggageData": true }}
### Example Response[](#example-response "Direct link to Example Response")
tip
* All responses in the `US` market will return `lbs` instead of `kg` for baggage weight.
* The leg details field is **NOT** implemented yet hence it is empty.
Example baggage response inside the itinerary object from above query
{ "pricingOptionFare": { "cabinBaggage": { "assessment": "ASSESSMENT_INCLUDED", "pieces": 1, "fee": { "amount": "", "unit": "PRICE_UNIT_MICRO" }, "weight": "15lb" }, "checkedBaggage": { "assessment": "ASSESSMENT_INCLUDED", "pieces": 2, "fee": { "amount": "", "unit": "PRICE_UNIT_MICRO" }, "weight": "50lb" }, "legDetails": {} }}
### Example responses breakdown (visual)[](#example-responses-breakdown-visual "Direct link to Example responses breakdown (visual)")
Here are the visual explanations of how each field correlates to Skyscanner's UI
#### Example 1: Baggage included for the entire trip[](#example-1-baggage-included-for-the-entire-trip "Direct link to Example 1: Baggage included for the entire trip")

#### Example 2: Baggage for a fee for the entire trip[](#example-2-baggage-for-a-fee-for-the-entire-trip "Direct link to Example 2: Baggage for a fee for the entire trip")

#### Example 3: Baggage not included for the entire trip[](#example-3-baggage-not-included-for-the-entire-trip "Direct link to Example 3: Baggage not included for the entire trip")

#### Example 4: Only checked baggage included for the entire trip[](#example-4-only-checked-baggage-included-for-the-entire-trip "Direct link to Example 4: Only checked baggage included for the entire trip")

* [Constraints](#constraints)
* [Attributes Structure](#attributes-structure)
* [Supported fields for Baggage](#supported-fields-for-baggage)
* [Supported fields for other flights attributes](#supported-fields-for-other-flights-attributes)
* [Example API usage](#example-api-usage)
* [Example Request](#example-request)
* [Example Response](#example-response)
* [Example responses breakdown (visual)](#example-responses-breakdown-visual)
---
# Changelog | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
2025-03-10[](#2025-03-10 "Direct link to 2025-03-10")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation "Direct link to memo-documentation")
* Add rate limits for Car Hire APIs
2025-02-25[](#2025-02-25 "Direct link to 2025-02-25")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-1 "Direct link to memo-documentation-1")
* Remove `beta` disclaimers for Car Hire APIs
2025-02-21[](#2025-02-21 "Direct link to 2025-02-21")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-2 "Direct link to memo-documentation-2")
* Fixed the Flights Autosuggest highlighting documentation
2025-02-17[](#2025-02-17 "Direct link to 2025-02-17")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-3 "Direct link to memo-documentation-3")
* Change the definition of a child to be 18+ age instead of 16+
2024-12-20[](#2024-12-20 "Direct link to 2024-12-20")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-4 "Direct link to memo-documentation-4")
* Removed response mapping page out of migration guide for Live prices API.
* Removed response mapping pages out of migration guide for Indicative prices API.
* Added new fields to Response fields table in the Flights Live Pricing API Overview page
2024-12-16[](#2024-12-16 "Direct link to 2024-12-16")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-5 "Direct link to memo-documentation-5")
* Update wording in the Localisation section to accurately reflect how culture parameter logic works and how culture is ultimately determined for affiliate links.
2024-12-06[](#2024-12-06 "Direct link to 2024-12-06")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-6 "Direct link to memo-documentation-6")
* Add User Ip as an optional field in Car Hire Live Prices API optional fields table
* Add a new section to explain the purpose of the User Ip filed in Car Hire Live Prices API
2024-11-07[](#2024-11-07 "Direct link to 2024-11-07")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-7 "Direct link to memo-documentation-7")
* Removed legacy unlisted pages
2024-11-06[](#2024-11-06 "Direct link to 2024-11-06")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-8 "Direct link to memo-documentation-8")
* Removed outdated "new" labels from pages where features are now well-established
2024-10-30[](#2024-10-30 "Direct link to 2024-10-30")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-9 "Direct link to memo-documentation-9")
* Improve "How to get a API key" paragraph wording
2024-09-10[](#2024-09-10 "Direct link to 2024-09-10")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-10 "Direct link to memo-documentation-10")
* Set default time to 10am for Car Hire Live Pricing API instead of midnight when hour, minute or second not specified
2024-08-29[](#2024-08-29 "Direct link to 2024-08-29")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-11 "Direct link to memo-documentation-11")
* Add pricing accuracy page to Flights Live Prices documentation
2024-08-21[](#2024-08-21 "Direct link to 2024-08-21")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-12 "Direct link to memo-documentation-12")
* Add more specific information about pick up and drop off variables in Car Hire Live Pricing API
2024-08-09[](#2024-08-09 "Direct link to 2024-08-09")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix "Direct link to bug-bug-fix")
* Update [query object page](/docs/flights-live-prices/query-object)
to have correct description for excluded carrier ids.
#### 📝 Documentation[](#memo-documentation-13 "Direct link to memo-documentation-13")
* Introduces [Frequently Asked Questions](/docs/faqs)
!
2024-07-30[](#2024-07-30 "Direct link to 2024-07-30")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-1 "Direct link to bug-bug-fix-1")
* Re-order tabs in Flights Live Prices API to make
2024-07-10[](#2024-07-10 "Direct link to 2024-07-10")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-14 "Direct link to memo-documentation-14")
* Remove v1 to v3 migration overview for Geo API
* Remove v1 to v3 migration overview for Culture API
* Moved Autosuggest Flights query object to main Flights [page](/docs/autosuggest/flights)
.
#### 🐛 Bug Fix[](#bug-bug-fix-2 "Direct link to bug-bug-fix-2")
* Removed a link from one of the changelog entries to a non-existing page
2024-07-05[](#2024-07-05 "Direct link to 2024-07-05")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-15 "Direct link to memo-documentation-15")
* Update Impact Link Information [here](/docs/referrals/impact-quick-start-guide)
#### 🐛 Bug Fix[](#bug-bug-fix-3 "Direct link to bug-bug-fix-3")
* Fix change log entries dates [here](/docs/change-log)
2024-07-04[](#2024-07-04 "Direct link to 2024-07-04")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-16 "Direct link to memo-documentation-16")
* Rename Referrals API references to Affiliates Link API [here](/docs/referrals/quick-start-guide)
#### 🐛 Bug Fix[](#bug-bug-fix-4 "Direct link to bug-bug-fix-4")
* Change Request & alert banner from `danger` to `info` [here](/docs/getting-started/requests-and-responses)
2024-06-27[](#2024-06-27 "Direct link to 2024-06-27")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-17 "Direct link to memo-documentation-17")
* Moved [query object](/docs/flights-live-prices/query-object)
and response mapping pages out of migration guide for Live prices API.
* Moved [query object](/docs/flights-indicative-prices/query-object)
and response mapping pages out of migration guide for Indicative prices API.
* Moved query object page out of migration guide for Autosuggest API.
2024-06-24[](#2024-06-24 "Direct link to 2024-06-24")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-18 "Direct link to memo-documentation-18")
* Updated documentation to reflect empty `legDetails` field for baggage searches for Flights Live Prices API.
2024-06-21[](#2024-06-21 "Direct link to 2024-06-21")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-19 "Direct link to memo-documentation-19")
* Added Car Hire Live Prices API category [here](/docs/category/car-hire-live-prices-api)
.
* Added Car Hire Indicative Prices API category [here](/docs/category/car-hire-indicative-prices-api)
.
* Added Car Hire Agents API category [here](/docs/category/car-hire-live-prices-api)
.
* Added Car Hire Live Prices API developer documentation [here](https://developers.skyscanner.net/api/carhire-live-pricing/)
.
* Added Car Hire Indicative Prices API developer documentation [here](https://developers.skyscanner.net/api/carhire-indicative)
.
* Added Car Hire Agents API developer documentation [here](https://developers.skyscanner.net/api/carhire-agents)
.
* Re-worded some paragraphs in various pages to be vertical agnostic. Previously they would just mention Flights
* Added links in the footer for car hire categories
2024-02-05[](#2024-02-05 "Direct link to 2024-02-05")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-5 "Direct link to bug-bug-fix-5")
* Expired session tokens in flights poll searches now return a `400 Bad Request` in the response
* Added notes on 400 response for expired session token [here](/docs/flights-live-prices/overview#poll-1)
.
#### 📝 Documentation[](#memo-documentation-20 "Direct link to memo-documentation-20")
* Removed outdated banner from emissions data page [here](/docs/getting-started/flights-emissions-data)
.
2024-01-09[](#2024-01-09 "Direct link to 2024-01-09")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-21 "Direct link to memo-documentation-21")
* Updated emissions data [here](/docs/getting-started/flights-emissions-data)
.
2023-11-21[](#2023-11-21 "Direct link to 2023-11-21")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature "Direct link to new-new-feature")
* Flights Indicative Prices API supports multi-month queries!
2023-09-07[](#2023-09-07 "Direct link to 2023-09-07")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-6 "Direct link to bug-bug-fix-6")
* Removed unsupported locales in the `/culture/locales` endpoint. The removed locales are:
* `az-AZ`
* `en-GG`
* `et-EE`
* `hr-HR`
* `lt-LT`
* `lv-LV`
* `sk-SK`
* `zh-HK`
* `zh-SG`
2023-08-28[](#2023-08-28 "Direct link to 2023-08-28")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-22 "Direct link to memo-documentation-22")
* Added clearer guidance for implement booking options and the types of bookings [here](/docs/flights-live-prices/booking-types)
.
* Added information about OTA Virtual Interlines [here](/docs/flights-live-prices/ota-virtual-interlines)
.
* Updated information about Mash-ups [here](/docs/flights-live-prices/mash-ups)
.
2023-08-23[](#2023-08-23 "Direct link to 2023-08-23")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-23 "Direct link to memo-documentation-23")
* Introduces guidance for Flights Emissions data implementations. More information can be found [here](/docs/getting-started/flights-emissions-data)
.
2023-08-14[](#2023-08-14 "Direct link to 2023-08-14")
-------------------------------------------------------
#### 📝 Flights Live Prices Tracking changes[](#memo-flights-live-prices-tracking-changes "Direct link to memo-flights-live-prices-tracking-changes")
* Updated to no longer use Impact Gateway links
2023-07-26[](#2023-07-26 "Direct link to 2023-07-26")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-24 "Direct link to memo-documentation-24")
* Made it more clear that the `dateRange` must be contained within a single calendar month when searching the Flights Indicative Prices API to anywhere. More information can be found [here](/docs/flights-indicative-prices/use-cases#query-requirements-1)
.
2023-07-24[](#2023-07-24 "Direct link to 2023-07-24")
-------------------------------------------------------
#### 📝 Documentation[](#memo-documentation-25 "Direct link to memo-documentation-25")
* Made it more clear that the `day` field will be ignored when specifying a `dateRange` in the Flights Indicative Prices API. More information can be found [here](/docs/flights-indicative-prices/queryLeg#sample-date-types)
.
2023-07-19[](#2023-07-19 "Direct link to 2023-07-19")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-7 "Direct link to bug-bug-fix-7")
* Removed references to Anywhere by city route aggregations in the Flights Indicative Prices API. More information can be found [here](/docs/flights-indicative-prices/use-cases#quickly-find-the-route-sub-category-you-need)
.
2023-06-30[](#2023-06-30 "Direct link to 2023-06-30")
-------------------------------------------------------
#### 📝 New Carrier Fields[](#memo-new-carrier-fields "Direct link to memo-new-carrier-fields")
* New carrier fields ('displayCode' and 'icao') added to the carriers, live and indicative pricing responses. More information can be found [here](/docs/carriers/overview)
and in the API reference.
2023-06-26[](#2023-06-26 "Direct link to 2023-06-26")
-------------------------------------------------------
#### 📝 Rating Breakdown[](#memo-rating-breakdown "Direct link to memo-rating-breakdown")
* Agents `ratingBreakdown` has been decommissioned and will be returning `0` rating. You would have found this value in `content -> results -> agents -> ratingBreakdown`.
2023-06-01[](#2023-06-01 "Direct link to 2023-06-01")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-8 "Direct link to bug-bug-fix-8")
* Removed unreleased locales in the `/culture/locales` endpoint: `ca-ES` (Catalan) and `he-IL` (Hebrew)
2023-02-14[](#2023-02-14 "Direct link to 2023-02-14")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-9 "Direct link to bug-bug-fix-9")
* Fix for reversed coordinates being returned from the Geo API: We have address this bug to ensure latitude and longitude are returned as expected.
2022-12-22[](#2022-12-22 "Direct link to 2022-12-22")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature-1 "Direct link to new-new-feature-1")
* New [Refresh Prices endpoints](/docs/flights-live-prices/refresh-prices)
under `/flights/live`
* Returns the most up-to-date prices for the selected itinerary.
2022-12-06[](#2022-12-06 "Direct link to 2022-12-06")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature-2 "Direct link to new-new-feature-2")
* Added filtering in the Geo API to remove airports that Skyscanner does not support booking flights from (i.e.: military or rural airports).
2022-12-05[](#2022-12-05 "Direct link to 2022-12-05")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature-3 "Direct link to new-new-feature-3")
* New [Carriers endpoint](/docs/flights-live-prices/overview)
under `/flights/live`
* Returns up-to-date IATA codes for all active carriers
2022-10-06[](#2022-10-06 "Direct link to 2022-10-06")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature-4 "Direct link to new-new-feature-4")
* Support for Multi City in the [Flights Live Prices API](/docs/flights-live-prices/overview)
.
* Flights Live Prices API now supports multi city search. This means searches can have now up to 6 query legs.
2022-09-01[](#2022-09-01 "Direct link to 2022-09-01")
-------------------------------------------------------
#### 🆕 New feature[](#new-new-feature-5 "Direct link to new-new-feature-5")
* New nearest culture endpoint in the Culture API
* We added a new endpoint in the Culture API that returns the culture information (market, locale and currency) based on an IP address. More information [here](/docs/culture/overview#nearestculture)
.
2022-08-22[](#2022-08-22 "Direct link to 2022-08-22")
-------------------------------------------------------
#### 🐛 Bug Fix[](#bug-bug-fix-10 "Direct link to bug-bug-fix-10")
* `Flights Live Prices API` and `Flights Indicative Prices`
* **Price Amount:** Updated price amount from `double` to `int64`.
#### 📝 Documentation[](#memo-documentation-26 "Direct link to memo-documentation-26")
* `Flights Live Prices API` and `Flights Indicative Prices`
* **API Reference:** Updated the price amount field in API Reference section.
* * *
* [2025-03-10](#2025-03-10)
* [2025-02-25](#2025-02-25)
* [2025-02-21](#2025-02-21)
* [2025-02-17](#2025-02-17)
* [2024-12-20](#2024-12-20)
* [2024-12-16](#2024-12-16)
* [2024-12-06](#2024-12-06)
* [2024-11-07](#2024-11-07)
* [2024-11-06](#2024-11-06)
* [2024-10-30](#2024-10-30)
* [2024-09-10](#2024-09-10)
* [2024-08-29](#2024-08-29)
* [2024-08-21](#2024-08-21)
* [2024-08-09](#2024-08-09)
* [2024-07-30](#2024-07-30)
* [2024-07-10](#2024-07-10)
* [2024-07-05](#2024-07-05)
* [2024-07-04](#2024-07-04)
* [2024-06-27](#2024-06-27)
* [2024-06-24](#2024-06-24)
* [2024-06-21](#2024-06-21)
* [2024-02-05](#2024-02-05)
* [2024-01-09](#2024-01-09)
* [2023-11-21](#2023-11-21)
* [2023-09-07](#2023-09-07)
* [2023-08-28](#2023-08-28)
* [2023-08-23](#2023-08-23)
* [2023-08-14](#2023-08-14)
* [2023-07-26](#2023-07-26)
* [2023-07-24](#2023-07-24)
* [2023-07-19](#2023-07-19)
* [2023-06-30](#2023-06-30)
* [2023-06-26](#2023-06-26)
* [2023-06-01](#2023-06-01)
* [2023-02-14](#2023-02-14)
* [2022-12-22](#2022-12-22)
* [2022-12-06](#2022-12-06)
* [2022-12-05](#2022-12-05)
* [2022-10-06](#2022-10-06)
* [2022-09-01](#2022-09-01)
* [2022-08-22](#2022-08-22)
---
# Fare Upsells | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
info
This feature is only accessible by selected partners on an approval basis. Please do not circulate this externally.
Fare upsells is a feature in [Flights Live Prices API](/api/flights-live-pricing)
. It enables the API to return multiple pricing options for a given agent, unlike the default behaviour where only the cheapest pricing option is returned per agent. Each pricing option contains a base price and information about additional attributes. This feature allows you to present multiple fare options to users, enabling them to compare choices and make a more informed selection before redirecting.
This feature is not enabled by default. If you want to onboard onto it, please reach out to your Account Manager for more information.
Constraints[](#constraints "Direct link to Constraints")
----------------------------------------------------------
This feature is not available in all markets, and we do not have data for all flight supply partners due to limited coverage. Please reach out to your Account Manager for more information.
Fare Upsell Structure[](#fare-upsell-structure "Direct link to Fare Upsell Structure")
----------------------------------------------------------------------------------------
Each upsell-enabled pricing option contains those additional fields:
| Field name | Description |
| --- | --- |
| `Price` | The base price of the specific pricing option. |
| `Baggage and other Additional Attributes` | Additional information including prices for any additional flight attributes such as baggage or cancellation that is specific to that pricing option. Learn more about Baggage and Additional Attributes fields in our [documentation](/docs/baggage-and-additional-attributes)
. |
| `Brand names` | Each value in the `brandNames` array is the brand name provided by the agent itself and associates itself with a specific segment in the itinerary. This is why the field is an array instead of a string. The brand names are **not** localised. In some edgecases you can expect the brand names to not be populated - in those cases you should consider using some fallback values if they're meant to be surfaced to users. Example values are `ECONOMY CLASSIC`, `ECONOMY STANDARD`, `ECONOMY FLEX`, etc. |
Available Fare Upsell Attributes[](#available-fare-upsell-attributes "Direct link to Available Fare Upsell Attributes")
-------------------------------------------------------------------------------------------------------------------------
Each pricing option includes a base price along with various attributes, such as baggage, cancellation policies, and more.
If you want to know more about the fare upsell attribute fields please consult [Baggage and Additional Attributes](/docs/baggage-and-additional-attributes)
.
Example API usage[](#example-api-usage "Direct link to Example API usage")
----------------------------------------------------------------------------
An example is this flight from `LHR` to `JFK`.
### Example Request[](#example-request "Direct link to Example Request")
tip
Please consider all of the below:
* Make sure both fare upsells and additional attributes are enabled by reching out to your Account Manager
* Make sure to set the `includeBaggageData` flag to `true`. This flag enables the retrieval of **ALL** additional attributes in the response.
* Make sure to set the `market` to a market where the additional attributes are enabled.
* Currency of each upsell option is specified in the request object, similar to flights prices.
#### Request URL[](#request-url "Direct link to Request URL")
https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create
#### Request Body[](#request-body "Direct link to Request Body")
{ "query": { "currency": "USD", "market": "US", "locale": "en-US", "queryLegs": [ { "originPlaceId": { "iata": "LHR" }, "destinationPlaceId": { "iata": "JFK" }, "date": { "year": 2025, "month": 5, "day": 2 } } ], "cabinClass": "CABIN_CLASS_ECONOMY", "adults": 1, "includeBaggageData": true }}
### Example Response[](#example-response "Direct link to Example Response")
tip
* All responses in the `US` market will return `lbs` instead of `kg` for baggage weight.
Example response
{ "pricingOptions": [ { "price": { "amount": "1234560", "unit": "PRICE_UNIT_MILLI" }, "agentIds": ["skys"], "pricingOptionFare": { "cabinBaggage": { "assessment": "ASSESSMENT_INCLUDED", "pieces": 1, "fee": { "amount": "", "unit": "PRICE_UNIT_MICRO" }, "weight": "50lb" }, "checkedBaggage": { "assessment": "ASSESSMENT_FEE", "pieces": 0, "fee": { "amount": "77730000", "unit": "PRICE_UNIT_MICRO" }, "weight": "50lb" }, "brandNames": ["BASIC ECONOMY"], "advanceChange": { "assessment": "ASSESSMENT_UNKNOWN" }, "cancellation": { "assessment": "ASSESSMENT_UNAVAILABLE" }, "seatPreReservation": { "assessment": "ASSESSMENT_UNKNOWN" }, "upgradeEligibility": { "assessment": "ASSESSMENT_UNKNOWN" } } }, { "price": { "amount": "2234560", "unit": "PRICE_UNIT_MILLI" }, "agentIds": ["skys"], "pricingOptionFare": { "cabinBaggage": { "assessment": "ASSESSMENT_INCLUDED", "pieces": 1, "fee": { "amount": "", "unit": "PRICE_UNIT_MICRO" }, "weight": "50lb" }, "checkedBaggage": { "assessment": "ASSESSMENT_INCLUDED", "pieces": 1, "fee": { "amount": "", "unit": "PRICE_UNIT_MICRO" }, "weight": "50lb" }, "brandNames": ["STANDARD ECONOMY"], "advanceChange": { "assessment": "ASSESSMENT_UNKNOWN" }, "cancellation": { "assessment": "ASSESSMENT_UNAVAILABLE" }, "seatPreReservation": { "assessment": "ASSESSMENT_UNKNOWN" }, "upgradeEligibility": { "assessment": "ASSESSMENT_UNKNOWN" } } } ]}
### Example responses breakdown (visual)[](#example-responses-breakdown-visual "Direct link to Example responses breakdown (visual)")
Here are the visual explanations of how each field correlates to an iteration of Skyscanner UI

* [Constraints](#constraints)
* [Fare Upsell Structure](#fare-upsell-structure)
* [Available Fare Upsell Attributes](#available-fare-upsell-attributes)
* [Example API usage](#example-api-usage)
* [Example Request](#example-request)
* [Example Response](#example-response)
* [Example responses breakdown (visual)](#example-responses-breakdown-visual)
---
# Authentication | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
For all of the Skyscanner API we use API keys to allow access to the APIs so that we know who is requesting the data.
How to get a API key[](#how-to-get-a-api-key "Direct link to How to get a API key")
-------------------------------------------------------------------------------------
To access the Skyscanner APIs, you're required to submit an application with our Partnerships team for reviewal and our team will reach out to you if your application is successful. Please ensure you provide sufficient information in your application.
[Request Skyscanner API key](https://www.partners.skyscanner.net/contact/general)
.
How to use the API key[](#how-to-use-the-api-key "Direct link to How to use the API key")
-------------------------------------------------------------------------------------------
You must include the API key in all API requests to the server as a request header `x-api-key`.
warning
Make sure that you are accessing the APIs through **HTTPS** to keep your API key safe.
**Be careful when sharing API keys.** Do not publish them in public code repositories or add them to client-side API calls.
Sample of passing the API key:
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create' \--header 'x-api-key: ADD-YOUR-API-KEY-HERE' \--data-raw '...'
* [How to get a API key](#how-to-get-a-api-key)
* [How to use the API key](#how-to-use-the-api-key)
---
# Requests and responses | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The Travel APIs request and response bodies use `JSON` format.
info
Skyscanner is not responsible for any incorrect implementation of the API and its features. If you have any questions around best practices and guidance, please reach out to your Account Manager for more information.
Requests[](#requests "Direct link to Requests")
-------------------------------------------------
The APIs use URL params or a query object which will be sent via a `POST` request. The query object allows you to define the search like currency, market, language, dates, one way, etc. This object changes based on the specific endpoint so please refer to the documentation of the query object for each endpoint you are using.
{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", ... }}
The query object has some common params such as `market`, `locale` and `currency`, this data can also be received from the Culture API which you will learn about in the next section. [See Culture information](/docs/getting-started/culture-service)
Responses[](#responses "Direct link to Responses")
----------------------------------------------------
The response that is returned is different depending on the endpoint but the `status` is used across all endpoints. This param lets you know the status of the results received if its complete or its partial data of a search.
{ "status": ...}
### Status[](#status "Direct link to Status")
| Status | Description |
| --- | --- |
| `RESULT_STATUS_INCOMPLETE` | The search has not been yet completed. Used for search's that can take time, there will be a `/poll` endpoint to check on the search status and get the extra data. |
| `RESULT_STATUS_COMPLETE` | All data have been retrieved. |
| `RESULT_STATUS_FAILED` | An error has occurred while retrieving data. |
* [Requests](#requests)
* [Responses](#responses)
* [Status](#status)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Indicative Prices API returns a list of the cheapest prices seen last by our travellers for a given search criteria.
tip
You can see examples of the endpoints with this postman collection: [](https://god.gw.postman.com/run-collection/18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910?action=collection%2Ffork&collection-url=entityId%3D18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
How it's used in Skyscanner[](#how-its-used-in-skyscanner "Direct link to How it's used in Skyscanner")
---------------------------------------------------------------------------------------------------------
The Flights Indicative API powers our exploratory searches that give travelers an overview of prices by location or date. This is useful for low intent searches, for example when a traveler doesn't know the destination or the travel dates exactly. The prices shown are cached and can be up to 4 days old, therefore they may differ from live prices.
We use the Flights Indicative API in multiple ways in Skyscanner. Check out the [What can you build with the API](/docs/flights-indicative-prices/use-cases)
section for more details on our use cases and on how to replicate the queries that we use.
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
The `/search` endpoint takes a search query containing an origin, destination and date. It then returns a list of indicative prices for the given query.
Concepts[](#concepts "Direct link to Concepts")
-------------------------------------------------
### Indicative prices[](#indicative-prices "Direct link to Indicative prices")
An indicative price is the cheapest price seen last for a given route and date. These prices are not retrieved in real time (as opposed to live prices) and are instead cached values. Indicative prices values should be used as rough estimates of the cheapest cost to fly to a destination.
Though not as accurate as live prices, indicative prices are much faster to retrieve and useful when performing complex queries, like comparing the prices for an entire month or for multiple destinations. If exact prices or a bookable itineraries are needed, please use the live pricing API.
### Lowest seen price[](#lowest-seen-price "Direct link to Lowest seen price")
This lowest price returned is for 1 adult economy traveler. Both direct and indirect flight prices are included in the response.
### How indicative prices are generated[](#how-indicative-prices-are-generated "Direct link to How indicative prices are generated")
The API retrieves data from a cache that is populated based on the lowest prices seen for a given route and date. Each price is cached for up to 4 days. Each time a traveler searches for a route on a given date, the lowest price for that itinerary is checked against what is stored in the cache. If the newest price is lower than the last seen value, the cache is updated.
Request[](#request "Direct link to Request")
----------------------------------------------
#### Required fields[](#required-fields "Direct link to Required fields")
Requests to the `/search` endpoint need to contain the following:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g.: `UK` |
| `locale` | Language to be used for the search. E.g.: `en-GB` |
| `currency` | Currency that the search result prices are returned in. E.g.: `GBP` |
| `queryLegs` | Contains search request information such as: origin, destination and trip dates. [See Query leg guide for more details](/docs/flights-indicative-prices/queryLeg/)
. |
#### Optional fields[](#optional-fields "Direct link to Optional fields")
The following are optional parameters to change the format of the response:
| Field name | Description |
| --- | --- |
| `DateTimeGroupingType` | Allows specifying how the response will be grouped. See the [Flights Indicative API reference](/api/flights-indicative)
for possible options. |
Response[](#response "Direct link to Response")
-------------------------------------------------
The response contains the following fields:
| Date type | Description |
| --- | --- |
| `quotes` | Shows the lowest prices for a given search criteria. See details for fields in the [Flights Indicative API reference](/api/flights-indicative) |
| `carriers` | List of `carriers` referenced in `quotes`, indexed by `carrierId`. |
| `places` | List of `places` referenced in `quotes`, indexed by `entityId`. |
* [Introduction](#introduction)
* [How it's used in Skyscanner](#how-its-used-in-skyscanner)
* [Endpoint](#endpoint)
* [Concepts](#concepts)
* [Indicative prices](#indicative-prices)
* [Lowest seen price](#lowest-seen-price)
* [How indicative prices are generated](#how-indicative-prices-are-generated)
* [Request](#request)
* [`/search`](#search)
* [Response](#response)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Car Hire Indicative Prices API returns a list pre-computed estimated price for rentals of different car categories in a given location on a given time.
The API takes a location for a given period of time and returns a list of quotes with indicative pricing information.
The API is meant to be used to provide accurate car hire indicative pricing information to enrich SEO pages or any other product that does not require highly accurate pricing data.
How we use it at Skyscanner[](#how-we-use-it-at-skyscanner "Direct link to How we use it at Skyscanner")
----------------------------------------------------------------------------------------------------------
The Car Hire Indicative API currently powers our SEO inspirational content that give travelers an overview of quote prices by location or date. The prices shown are cached, therefore they may differ from live prices.

Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
This API has 1 endpoint - `/search`.
POST https://partners.api.skyscanner.net/apiservices/v1/carhire/indicative/search
`/search` endpoint takes a search query containing an origin, destination and date. It then returns a list of indicative prices for the given query.
Concepts[](#concepts "Direct link to Concepts")
-------------------------------------------------
### Indicative prices[](#indicative-prices "Direct link to Indicative prices")
An indicative price is a daily quote price for a given location and date. These prices are not retrieved in real time (as opposed to live prices) and are instead cached values. Indicative prices values should be used as rough estimates of quote prices for a given destination and date.
Though not as accurate as live prices, indicative prices are much faster to retrieve and useful when performing complex queries, like comparing the prices for an entire month or for multiple locations. If exact prices or a bookable itineraries are needed, please use the live pricing API.
### How indicative prices are generated[](#how-indicative-prices-are-generated "Direct link to How indicative prices are generated")
The API retrieves data from a file that is updated daily, reflecting the past seven days of car hire quote searches on Skyscanner. Each time a traveler searches for car hire on Skyscanner, all the quotes are recorded. A script then determines the lowest price each day to create the data file used by the API.
Request[](#request "Direct link to Request")
----------------------------------------------
### `/search`[](#search-1 "Direct link to search-1")
#### Required fields[](#required-fields "Direct link to Required fields")
Requests to the `/search` endpoint need to contain the following:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g.: `UK` |
| `locale` | Language to be used for the search. E.g.: `en-GB` |
| `currency` | Currency that the search result prices are returned in. E.g.: `GBP` |
| `pickUpDropOffLocation` | Pick-up and drop-off location. See [car hire indicative prices API documentation](/api/carhire-indicative)
for format |
#### Optional fields[](#optional-fields "Direct link to Optional fields")
Below are additional optional fields to modify the outcome of the request:
| Field name | Description |
| --- | --- |
| `dateTimeGroupingType` | Allows specification on how the response will be grouped. See the [car hire indicative API reference](/api/carhire-indicative)
for possible options |
Response `/search`[](#response-search "Direct link to response-search")
-------------------------------------------------------------------------
### Fields[](#fields "Direct link to Fields")
| Field name | Description |
| --- | --- |
| `quotes` | Indicative quotes for the criteria specified in the request. |
| `vendors` | Contains information about the vendors referenced in `quotes`. Vendors are actual car companies that rent cars. Note that vendors can also be both an agent and a vendor at the same time. |
* [Introduction](#introduction)
* [How we use it at Skyscanner](#how-we-use-it-at-skyscanner)
* [Endpoints](#endpoints)
* [`/search`](#search)
* [Concepts](#concepts)
* [Indicative prices](#indicative-prices)
* [How indicative prices are generated](#how-indicative-prices-are-generated)
* [Request](#request)
* [`/search`](#search-1)
* [Response `/search`](#response-search)
* [Fields](#fields)
---
# Culture information | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
When calling our API you will need to provide queries with localisation parameters. The following parameters must be added to every request: `market`, `locale` and `currency`.
We provide a Culture API to get all the markets, locales and currencies we support. [See Culture API Documentation](/docs/category/culture-api)
**Sample of these parameters:**
| title | description | sample |
| --- | --- | --- |
| `market` | Market where search is coming from. | `UK` |
| `locale` | Language to be used for the search. | `en-GB` |
| `currency` | Currency that the search result prices are returned in | `GBP` |
With the Culture API we provide a endpoint so that you can gather these details to provide to your travelers.
### `/markets`[](#markets "Direct link to markets")
You can use the `/markets` endpoint to retrieve the market countries that we support.
Most suppliers (airlines, travel agents, and car hire dealers) set their fares based on the market (or country of purchase). It is therefore necessary to specify the market country in every query.
The names of the markets returned are localized based on a locale passed as a parameter.
### `/locales`[](#locales "Direct link to locales")
You can use the `/locales` endpoint to retrieve the locales that we support to translate your content.
The names of the locales returned are in the native language associated with the locale.
### `/currencies`[](#currencies "Direct link to currencies")
You can use the `/currencies` endpoint to retrieve the currencies that we support and information about how we format them in Skyscanner.
tip
If you want to know more about the culture service. [See culture API Documentation](/docs/category/culture-api)
* [`/markets`](#markets)
* [`/locales`](#locales)
* [`/currencies`](#currencies)
---
# Localisation | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
If you have specific localisation requirements, you can use the parameters `locale`, `market` or `currency` to set specific values for your referral links.
tip
**Skyscanner Recommendation**: We strongly encourage you to provide the localisation parameters (`locale`, `market`, `currency`) to set specific values for your referral links. This allows you to control the language, market, and currency to optimise your users’ experience on the Skyscanner domain.
**Market-Specific Product Mix**: Setting the localisation parameters is important because Skyscanner’s offering differs from market to market, depending on our Supply Partners’ offerings—the mix of suppliers and even pricing can differ from one market to another. To create the best experience, we encourage you to match the Skyscanner market that you will send the customer to via the Referral Link with your customer’s home market. This will give you the best chance to show them the most accurate and comprehensive product offering (e.g., if your customer is from Spain, redirecting them to the Spanish Skyscanner market will be the best course of action).
**No Localisation Parameters**: Please note that in the absence of the localisation parameters, the default UK settings will be applied to the Skyscanner landing page, where the settings of `en-GB` for locale and the `UK` market will be applied. As a result, the returned URLs will direct the traveller to a page configured with these settings.
### Example[](#example "Direct link to Example")
GET https://skyscanner.net/g/referrals/v1/flights/day-view/?market=UK&locale=en-GB¤cy=GBP&mediaPartnerId=2850210
info
If you want to have a look at our supported locales, market and currencies, please visit our [Skyscanner](https://www.skyscanner.net/)
page and navigate to the globe icon on the right-hand side (see photo below).

* [Example](#example)
---
# Query leg | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
One way or return[](#one-way-or-return "Direct link to One way or return")
----------------------------------------------------------------------------
To search for one way flights, a `queryLeg` list with only 1 leg can be specified. If return prices are required, specify a `queryLeg` list with 2 legs.
Date types[](#date-types "Direct link to Date types")
-------------------------------------------------------
Each `queryLeg` **must only have one date type** such as: `dateRange` or `fixedDate` or `anytime`.
A summary of the date types and their functions:
| Date type | Description |
| --- | --- |
| `dateRange` | A range of dates to search for flights for. Will search for prices from the first to last date of each month |
| `fixedDate` | A specific date to search for flights for. |
| `anytime` | Will return best quotes for a given route. |
See the [Flights Indicative API reference](/api/flights-indicative)
for more details.
### Sample date types[](#sample-date-types "Direct link to Sample date types")
{ "queryLegs": [ { ... "anytime":true ... } ]}
Or
{ "queryLeg": [ { ... "fixedDate": { "year": 2024, "month": 7, "day": 1 } ... } ]}
Or
{ "queryLeg": [ { ... "dateRange": { "startDate":{ "month": 7, "year": 2024 }, "endDate":{ "month": 8, "year": 2024 } } ... } ]}
caution
The `day` field is ignored when specifying a `dateRange` - the API will search for prices from the first to last day of the given months regardless of this value.
Origin and destination place types[](#origin-and-destination-place-types "Direct link to Origin and destination place types")
-------------------------------------------------------------------------------------------------------------------------------
The Flights Indicative Prices API accepts `IATA` and `entityId` place types at the following levels:
* airports
* cities
* nation or territories
Continent type places are not valid. (E.g. `205351567` - North America).
Airports and cities can be either `IATA` and `entityId`. (E.g `LHR` - London Heathrow, `LON` - London)
Nations or territories do not have `IATA` codes and therefore need to be inputted as `entityId`.
Data for `IATA` and `entityId` can be found in the [Geo API reference](/docs/category/geo-api)
.
### Sample date types[](#sample-date-types-1 "Direct link to Sample date types")
{ "queryLegs": [ { ... "originPlace": { "queryPlace":{ // EntityId for the United States "entityId": "29475087" } } ... } ]}
{ "queryLegs": [ { ... "destinationPlace": { "queryPlace":{ // IATA code for London Heathrow Airport "iata": "LHR" } } ... } ]}
* [One way or return](#one-way-or-return)
* [Date types](#date-types)
* [Sample date types](#sample-date-types)
* [Origin and destination place types](#origin-and-destination-place-types)
* [Sample date types](#sample-date-types-1)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Car Hire Indicative API returns the estimated prices for given travel dates and location per day.
Sample requests and responses[](#sample-requests-and-responses "Direct link to Sample requests and responses")
----------------------------------------------------------------------------------------------------------------
### `/create`[](#create "Direct link to create")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v1/carhire/indicative/search' --header 'x-api-key: your-api-key' --data '{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", "pickUpDate": {"year": 2024, "month": 8, "day": 1}, "dropOffDate": {"year": 2024, "month": 8, "day": 31}, "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_WEEK", "pickUpDropOffLocationEntityId": "27548283"} }'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see car hire indicative prices API documentation](/api/carhire-indicative)
* [Introduction](#introduction)
* [Sample requests and responses](#sample-requests-and-responses)
* [`/create`](#create)
* [API documentation](#api-documentation)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Geo API returns a list of localised geographical locations in the requested format.
Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
### `/flights`[](#flights "Direct link to flights")
GET https://partners.api.skyscanner.net/apiservices/v3/geo/hierarchy/flights/{locale}
The `/flights` endpoint takes a `locale` and returns a list of geographical locations in a language determined by the given `locale`.
### `/flights/nearest`[](#flightsnearest "Direct link to flightsnearest")
POST https://partners.api.skyscanner.net/apiservices/v3/geo/hierarchy/flights/nearest
Returns a list of geographical locations in a language determined by the given `locale` starting from the nearest airport. Results are based on a locator which is either an `ipAddress` or set of `coordinates`.
Concepts[](#concepts "Direct link to Concepts")
-------------------------------------------------
### Hierarchy[](#hierarchy "Direct link to Hierarchy")
Geographical locations have the concept of hierarchy. Each location has a parent of a larger hierarchy. I.e.: a place `type` of `airport` can have a parent of `city` and `city` can have a parent of `country`
[See the Geo API reference for a full list of possible location types.](/api/geo/#tag/GeoService/operation/GeoService_GetFlightsHierarchy)
Request[](#request "Direct link to Request")
----------------------------------------------
### `/flights`[](#flights-1 "Direct link to flights-1")
To specify which locale (language) the response is returned in, a `locale` can be passed into the endpoint following the format above.
| Path variable | Description |
| --- | --- |
| `locale` | The locale to return results in, e.g.: `en-GB` |
### `/flights/nearest`[](#flightsnearest-1 "Direct link to flightsnearest-1")
The `/flights/nearest` takes a json request with the fields below to return a map of the geographical hierarchy starting from the nearest airport from the `locator` specified. The results will be returned in the `locale` specified.
| Field name | Description |
| --- | --- |
| `locale` | The locale to return results in, e.g.: `en-GB` |
| `locator` | Object that takes either `coordinates` or and an `ipAddress` to return the nearest airport and geographical hierarchy from that locator |
Response[](#response "Direct link to Response")
-------------------------------------------------
The response contains a `places` field that has a list of geographical locations indexed by `entityId`.
Each `place` contains the following fields:
| Field name | Description |
| --- | --- |
| `entityId` | A unique identifier for a location |
| `name` | The localised name of the location |
| `parentId` | Refers to the `entityId` of the location's parent |
| `type` | The type of location. [See the Geo API reference for a full list of possible location types.](/api/geo/#tag/GeoService/operation/GeoService_GetFlightsHierarchy/) |
| `iata` | The IATA code of the location |
| `coordinates` | Coordinates of the location |
* [Introduction](#introduction)
* [Endpoints](#endpoints)
* [`/flights`](#flights)
* [`/flights/nearest`](#flightsnearest)
* [Concepts](#concepts)
* [Hierarchy](#hierarchy)
* [Request](#request)
* [`/flights`](#flights-1)
* [`/flights/nearest`](#flightsnearest-1)
* [Response](#response)
---
# IATA codes and Entity IDs | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
For places and locations, our Travel APIs use `iata`, or `entityId`. You can choose which type you wish to use, as the location object will accept either of these identifiers.
Here are some examples, with IATA code and Entity ID being used:
{ "query": { ... "queryLegs": [ { "originPlaceId": { "iata": "EDI" // The IATA code for "Edinburgh Airport" }, "destinationPlaceId": { "entityId": "27544008" // The Entity ID for the geographical city "London" }, } ] ... }}
tip
We recommend using Entity IDs, which are unique and thus help resolve ambiguous cases, such as when a city and one of its airports share the same code.
IATA codes[](#iata-codes "Direct link to IATA codes")
-------------------------------------------------------
IATA codes are used by the International Air Transport Association (IATA) to identify airports, airlines, and other entities in the aviation industry. These codes are primarily employed for ticketing, scheduling, and other administrative purposes.
Airport IATA codes are the most common type and consist of three letters. They are used to identify airports and metropolitan areas globally. For example, `LAX` is the IATA code for Los Angeles International Airport in the United States.
Airline codes are generally two letters long and serve to identify individual airlines. For example, `BA` is the IATA code for British Airways.
IATA codes are widely recognized and employed across the aviation industry, providing a standardized way to identify and reference various entities, thereby streamlining operations and improving efficiency.
For a full list of available IATA codes, please visit this [page](https://www.iata.org/en/publications/directories/code-search/)
.
Entity IDs[](#entity-ids "Direct link to Entity IDs")
-------------------------------------------------------
Entity IDs are Skyscanner's internal codes used to identify all the geographical entities we support. These IDs are unique to Skyscanner and do not have meaning outside of the Travel APIs. Unlike IATA codes, Entity IDs are guaranteed to be unique, making them preferable for avoiding ambiguous searches, such as when an airport and city share the same IATA code.
How do you get an IATA code or Entity ID?[](#how-do-you-get-an-iata-code-or-entity-id "Direct link to How do you get an IATA code or Entity ID?")
---------------------------------------------------------------------------------------------------------------------------------------------------
We provide a Geo API where you can find all the IATA codes and Entity IDs. For more information, see [Geo API Documentation](/docs/category/geo-api)
.
We also offer an Autosuggest API that returns both IATA codes and Entity IDs. For more details, see [Autosuggest API Documentation](/docs/autosuggest/overview)
.
ICAO codes[](#icao-codes "Direct link to ICAO codes")
-------------------------------------------------------
While IATA codes are commonly used by airlines and travel agents for commercial operations, ICAO codes are the "official" identifiers employed by the aviation industry. They provide a more comprehensive method for identifying airports and airlines.
ICAO codes consist of three characters for airlines and four for airports. For example, London Heathrow Airport, with IATA code `LHR`, has the ICAO code `EGLL`. Similarly, British Airways, with IATA code `BA`, has the ICAO code `BAW`.
Some of our Travel APIs return ICAO codes, as well as IATA and Entity IDs, in their response. However, our Travel APIs only accept IATA or Entity IDs when specifying locations in API requests.
* [IATA codes](#iata-codes)
* [Entity IDs](#entity-ids)
* [How do you get an IATA code or Entity ID?](#how-do-you-get-an-iata-code-or-entity-id)
* [ICAO codes](#icao-codes)
---
# Car Hire | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
POST https://partners.api.skyscanner.net/apiservices/v3/autosuggest/carhire
Request[](#request "Direct link to Request")
----------------------------------------------
Requests to `autosuggest/carhire` contain the following:
| Field name | Description |
| --- | --- |
| `query` | Object containing parameters for car hire autosuggest search. |
The `query` object contains the following fields:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. e.g. `UK`. |
| `locale` | Language to be used for the search (ISO locale) e.g. `en-GB`. |
| `searchTerm` | The string to get autosuggest results for. If left blank, the most popular car hires will be returned. e.g. `Pari` |
Response[](#response "Direct link to Response")
-------------------------------------------------
The `/carhire` endpoint returns a `places` list containing objects with the following fields:
| Field name | Description |
| --- | --- |
| `hierarchy` | Shows hierarchy of places related to this entity. E.g. City of Edinburgh. |
| `location` | Coordinates of the entity. Expressed as a comma seperated latitude/longitude pair e.g. 55.9497, -3.3635. |
| `name` | Name of the place e.g. London. |
| `highlight` | Indicates emphasis on characters which match the searchTerm. |
| `entityId` | A unique ID for the place. It's an internal ID and it doesn't have any meaning outside of our APIs. |
| `type` | Type of place. e.g. PLACE\_TYPE\_AIRPORT, PLACE\_TYPE\_CITY, PLACE\_TYPE\_DISTRICT etc |
Entity Types[](#entity-types "Direct link to Entity Types")
-------------------------------------------------------------
Here are the full list of possible values for `type` in the response:
| Type |
| --- |
| PLACE\_TYPE\_TRAIN\_STATION |
| PLACE\_TYPE\_DISTRICT |
| PLACE\_TYPE\_AIRPORT |
| PLACE\_TYPE\_CITY |
Autosuggest API reference[](#autosuggest-api-reference "Direct link to Autosuggest API reference")
----------------------------------------------------------------------------------------------------
See the [Autosuggest API reference](/api/autosuggest)
for more details.
* [Endpoint](#endpoint)
* [Request](#request)
* [Response](#response)
* [Entity Types](#entity-types)
* [Autosuggest API reference](#autosuggest-api-reference)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Autosuggest API returns a list of places that match a specified `searchTerm`.
tip
You can see examples of the nearest geo endpoints with this postman collection: [](https://god.gw.postman.com/run-collection/18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910?action=collection%2Ffork&collection-url=entityId%3D18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
tip
You can see examples of the flights autosuggest endpoints with this postman collection: [](https://god.gw.postman.com/run-collection/18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910?action=collection%2Ffork&collection-url=entityId%3D18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
How Its Used At Skyscanner[](#how-its-used-at-skyscanner "Direct link to How Its Used At Skyscanner")
-------------------------------------------------------------------------------------------------------
We use the Autosuggest API to suggest a list of places to a user based on their input.
For example: in our flight search, we pass the user's partially complete `searchTerm` to the Autosuggest API to get a list of places that the user might be searching for.
We also use the data returned from Autosuggest to perform word highlighting on the results, and to populate the parameters for the flight search.

Concepts
========
The Autosuggest api returns results of places (i.e. `PLACE_TYPE_CITY`, `PLACE_TYPE_AIRPORT`, `PLACE_TYPE_COUNTRY` for flights) based on a `searchTerm`.
The API will return the closest match to the `searchTerm`, which will contain the necessary details to make a call to our [Flights Live Prices API](/docs/flights-live-prices/overview)
or [Flights Indicative API](/docs/flights-indicative-prices/overview)

Highlighting (Flights)[](#highlighting-flights "Direct link to Highlighting (Flights)")
-----------------------------------------------------------------------------------------
The `highlighting` field specifies which parts of a text can be emphasized as matching the `searchTerm`. It contains an array of arrays of index ranges, each indicating a subsection of the hierarchy value to be highlighted. The indices follow a zero-based numbering system, where the first character of hierarchy is at index `0`.
Since the raw hierarchy value is typically not displayed to users, custom logic is often required to apply highlighting correctly in a user-facing context.
### Example (Skyscanner Implementation)[](#example-skyscanner-implementation "Direct link to Example (Skyscanner Implementation)")
// ...{ "name": "London Heathrow", "hierarchy": "London Heathrow (LHR), London|England|United Kingdom", "type": "PLACE_TYPE_AIRPORT", "highlighting": [ [0, 10], [23, 29] ]}
Given:
* The `seachTerm` - **"London Hea"**
* The returned `hierarchy` value - **"London Heathrow (LHR), London|England|United Kingdom"**
* And the highlighting ranges: **\[0, 10\]** and **\[23, 29\]**
Then:
* The substrings to highlight are:
* **London Hea** (indices 0–10)
* **London** (indices 23–29)
However, since Skyscanner does not display the hierarchy value to the user, custom logic ensures that only the relevant visible parts are highlighted. In this case, the final highlighted output shown to users is: "`London Hea`throw (LHR)"

Highlighting (Carhire and Hotels)[](#highlighting-carhire-and-hotels "Direct link to Highlighting (Carhire and Hotels)")
--------------------------------------------------------------------------------------------------------------------------
For Carhire and Hotels, the highlighting comes in the form of a html emphasis tag.
For example, for the search term `madri`
{ "highlight": { "hierarchy": "Province of Madrid|Community of Madrid|Spain", "name": "Madrid" }}
Score (Hotels)[](#score-hotels "Direct link to Score (Hotels)")
-----------------------------------------------------------------
The score is used to indicate which place is the most relevant (input + popularity etc) given the `searchTerm`.
Results are ranked by the highest score.
Flights Live Prices Use Case[](#flights-live-prices-use-case "Direct link to Flights Live Prices Use Case")
-------------------------------------------------------------------------------------------------------------
We will assume the user is searching in the flights vertical, and we want to feed the results into Flights Live Prices.
Since the Flights Live Prices only accepts `PLACE_TYPE_CITY` and `PLACE_TYPE_AIRPORT`, we will filter these in our request.
We will make a call to the AutoSuggest API on each character inputted, and assume the user has typed in `London` and hit enter.
The request to the Autosuggest API would look something like this:
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/autosuggest/flights' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query":{ "market": "UK", "locale": "en-GB", "searchTerm": "London", "includedEntityTypes": [ "PLACE_TYPE_CITY", "PLACE_TYPE_AIRPORT"] }} '
In the response we see the closest matching types:
{ "places": [ { "entityId": "27544008", "iataCode": "LON", "parentId": "27544008", "name": "London", "countryId": "UK", "countryName": "United Kingdom", "cityName": "London", "location": "51.5041174139,-0.0943465343", "hierarchy": "London|England|United Kingdom", "type": "PLACE_TYPE_CITY", "highlighting": [[0, 6]] } // ... other places ]}
We can choose to now take the `entityId` or the `iataCode` to feed that into Flights Live Prices. In this example, we will use the `entityId` of London, `27544008`.
This will be placed under the `origin_place_id` or `destination_place_id` of the Flights Live Prices request.
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", "query_legs": [ { "origin_place_id": { "entityId": "27544008" }, "destination_place_id": { "iata": "EDI" }, "date": { "year": 2022, "month": 12, "day": 22 } } ], "adults": 1, "children_ages": [], "cabin_class": "CABIN_CLASS_ECONOMY", "excluded_agents_ids": [], "excluded_carriers_ids": [], "included_agents_ids": [], "included_carriers_ids": [] }}'
Flights Indicative Prices Use Case[](#flights-indicative-prices-use-case "Direct link to Flights Indicative Prices Use Case")
-------------------------------------------------------------------------------------------------------------------------------
Since flights indicative allows for `PLACE_TYPE_CITY`, `PLACE_TYPE_AIRPORT`, `PLACE_TYPE_COUNTRY`, we do not need to filter the entity types.
We will make a call to the Autosuggest API to fetch places matching the `searchTerm` `"United States"`.
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/autosuggest/flights' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query":{ "market": "UK", "locale": "en-GB", "searchTerm": "United States" }} '
Taking the first result, we will use the `entityId` of the first result (`29475437`) and feed that into the Flights Indicative API
{ "places": [ { "entityId": "29475437", "iataCode": "US", "parentId": "29475437", "name": "United States", "countryId": "US", "countryName": "United States", "cityName": "", "location": "45.7566336986,-112.6892486287", "hierarchy": "United States", "type": "PLACE_TYPE_COUNTRY", "highlighting": [[0, 13]] } // ... other places ]}
The Flights Indicative request to search from the United States to LAX (Los Angeles International Airport) over 2 months would look like this:
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/indicative/search' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query":{ "currency":"USD", "locale":"en-US", "market":"UK", "queryLegs":[ { "destinationPlace":{ "queryPlace":{ "entityId": "29475437" } }, "originPlace":{ "queryPlace":{ "iata": "LAX" } }, "dateRange":{ "startDate":{ "year":2024, "month":6 }, "endDate":{ "year":2024, "month":7 } } } ], "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_MONTH" }}'
* [Introduction](#introduction)
* [How Its Used At Skyscanner](#how-its-used-at-skyscanner)
* [Highlighting (Flights)](#highlighting-flights)
* [Example (Skyscanner Implementation)](#example-skyscanner-implementation)
* [Highlighting (Carhire and Hotels)](#highlighting-carhire-and-hotels)
* [Score (Hotels)](#score-hotels)
* [Flights Live Prices Use Case](#flights-live-prices-use-case)
* [Flights Indicative Prices Use Case](#flights-indicative-prices-use-case)
---
# Rate limits | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
We use rate limiting to protect our service's from strain on web servers, malicious attacks and caps on API calls per app.
We have rate limiting on our APIs per API key which limits how many calls you can make within a given time period. The rate limit is custom to each API Key and will be set based on your needs with your account manager.
We have 3 different types of rate limiting **per second**, **per minute** and **per hour**.
If you start to get rate limited you will receive `429` response statuses instead of `200`.
### If you start getting rate limited[](#if-you-start-getting-rate-limited "Direct link to If you start getting rate limited")
* If you are getting rate limits contact your account manager as they can upgrade your rate limits or suggest a solution to why you are getting rate limited.
### Standard Limits[](#standard-limits "Direct link to Standard Limits")
Here you can find the standard rate limits for our services.
info
The values below are the default rate limits applied to our services but there may be some exceptions based on partner agreements.
* Flights Live Prices API
* Create Search - **100/min**
* Poll Search - **500/min**
* Flights Indicative Prices API - **500/min**
* Car Hire Live Prices API
* Create Search - **15/min**
* Poll Search - **60/min**
* Car Hire Indicative Prices API - **60/min**
* Car Hire Agents Prices API - **60/min**
* Culture API - **500/min**
* Geo API - **500/min**
* [If you start getting rate limited](#if-you-start-getting-rate-limited)
* [Standard Limits](#standard-limits)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The Affiliates Link API is used to provide partner redirects to Skyscanner pages based on provided request parameters.
It can redirect to different pages within Skyscanner based on the provided `pagetype` parameter. For the full list of page types and examples see the sections below.
info
The Affiliates Link API is a newly developed service that replaced the legacy Referrals API. It is designed to provide the ability to enhance our functionality and feature set. Please note that existing integrations will remain unaffected
#### API endpoint[](#api-endpoint "Direct link to API endpoint")
The API is accessible at **[https://skyscanner.net/g/referrals/v1](https://skyscanner.net/g/referrals/v1)
**
There is one main endpoint with the following URL structure:
https://skyscanner.net/g/referrals/v1/{vertical}/{pagetype}?mediaPartnerId={yourmediapartnerID}
The endpoint serves only GET requests and responds with HTTP status 301 redirecting to the desired Skyscanner page.
For the different possible values of the parameters check the tables below. As for the tracking query parameters, please check the following section.
#### Tracking[](#tracking "Direct link to Tracking")
We use [Impact](https://impact.com/)
to track the redirects and associate them with the referral source. You will need to include Impact tracking parameters as query parameters in your requests. Please check the [Tracking](/docs/referrals/tracking)
page for more details on the tracking parameters. Beware that the redirects will not be correctly tracked without configuring these parameters.
#### Try it out in Postman[](#try-it-out-in-postman "Direct link to Try it out in Postman")
[](https://god.gw.postman.com/run-collection/18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7?action=collection%2Ffork&collection-url=entityId%3D18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
caution
If you receive a `403` response code when testing with Postman, your request may have been `blocked` due to security reasons. As an alternative, you can open and validate your link(s) in your web browser instead.

If there's really a need to send requests in Postman, please contact your account manager, or email . We'll provide you with an access token, which when added to the request, will prevent it from getting blocked.
The access token must be set as HTTP header `x-px-access-token`.
###### REQUEST PARAMETERS[](#request-parameters "Direct link to REQUEST PARAMETERS")
| Parameter | Required | Description |
| --- | --- | --- |
| `vertical` | REQUIRED | The vertical you want to redirect to. Allowed values: flights, cars |
| `pagetype` | REQUIRED | Page type supported by each vertical. E.g. for flights -> day-view, browse-view... take a look at the next table |
###### PAGE TYPES[](#page-types "Direct link to PAGE TYPES")
| Vertical | Pagetypes |
| --- | --- |
| flights | home, day-view, calendar-month-view, browse-view, multicity, cheap-flights-to, flights-airline |
| cars | home, day-view |
| hotels | home-view, day-view, hotel-details |
You can read more about the verticals and page types we support in the dedicated [Verticals & Page Types](/docs/referrals/verticals-and-page-types)
page.
---
# Create and poll | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
tip
We're using examples of Flights vertical but the concept is similar to other verticals such as Car hire
In the Skyscanner searches we use a concept of `create` and `poll` within our endpoints. This is due to the amount of data that we need to gather for a full search. The latency for getting travel information from our supplier APIs can vary. To minimise the time to the first result, we provide partial results until all the supplier information was loaded. To enable this partial results, you will need to create a search session and then keep polling it until all the results loaded.
Here is a Flight search and you can see the search has gathered the data but as more partners prices comes in the first result updates with the cheaper flight.

tip
As seen in the above example, sometimes we get the best prices from the slower partners, so its always best to wait for all the results to come back.
### `/create`[](#create "Direct link to create")
With the search create endpoint this is where you start off the search. We will return data with this request of data we have at the time, so will have the first few flights that have come through already.
These requests will also let you know of the status of the search to tell you if it is still in progress

### `/poll`[](#poll "Direct link to poll")
With the search poll endpoint you can get the status of the search. It will tell you the status of the search and the action you should preform from the Like replace or data not modified.

* [`/create`](#create)
* [`/poll`](#poll)
---
# Hotels | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
POST https://partners.api.skyscanner.net/apiservices/v3/autosuggest/hotels
Request[](#request "Direct link to Request")
----------------------------------------------
Requests to `autosuggest/hotels` contain the following:
| Field name | Description |
| --- | --- |
| `query` | Object containing parameters for hotels autosuggest search. |
| `limit` (Optional) | Limits number of entities returned in response. Take a min value of 1 and max of 50. |
The `query` object contains the following fields:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g. `UK`. |
| `locale` | Language to be used for the search(ISO locale) e.g. `en-GB`. |
| `searchTerm` | The string to get autosuggest results for. If left blank, the most popular hotels will be returned. E.g.`Pari`. |
| `includedEntityTypes`(Optional) | Can be used to filter type of places returned. See below for full list of supported entity types. |
Response[](#response "Direct link to Response")
-------------------------------------------------
Responses from the `autosuggest/hotels` are returned as a list of `places`. Each `places` item will contain the following fields:
| Field name | Description |
| --- | --- |
| `hierarchy` | Shows hierarchy of places related to this entity. E.g. City of Edinburgh. |
| `location` | Coordinates of the entity. Expressed as a latitude/longitude pair. E.g. 55.9497, -3.3635 |
| `score` | Relevance score of entry based on character input. |
| `name` | Name of the place e.g. London |
| `highlight` | Indicates emphasis on characters which match the searchTerm |
| `entityId` | A unique ID for the place. It's an internal ID and it doesn't have any meaning outside of our APIs. |
| `type` | Type of place. See section below for possible values for PLACE\_TYPE. E.g. PLACE\_TYPE\_AIRPORT, PLACE\_TYPE\_CITY, PLACE\_TYPE\_DISTRICT etc |
| `pois` | A list of points of interest near the given entity. |
Entity Types[](#entity-types "Direct link to Entity Types")
-------------------------------------------------------------
Below are the possible entity types. They can be used to filter the response by being passed in the `includedEntityTypes` field in the request. They are also used in the `type` field in the response.
| Type |
| --- |
| PLACE\_TYPE\_COUNTRY |
| PLACE\_TYPE\_AIRPORT |
| PLACE\_TYPE\_CITY |
| PLACE\_TYPE\_HOTEL |
| PLACE\_TYPE\_DISTRICT |
| PLACE\_TYPE\_ISLAND |
| PLACE\_TYPE\_FIRST\_LEVEL\_NATION\_ADMINISTRATIVE\_DIVISION |
| PLACE\_TYPE\_SECOND\_LEVEL\_NATION\_ADMINISTRATIVE\_DIVISION |
| PLACE\_TYPE\_SEA\_COAST |
| PLACE\_TYPE\_MOUNTAIN\_RANGE |
| PLACE\_TYPE\_SEA |
Autosuggest API reference[](#autosuggest-api-reference "Direct link to Autosuggest API reference")
----------------------------------------------------------------------------------------------------
See the [Autosuggest API reference](/api/autosuggest)
for more details.
* [Endpoint](#endpoint)
* [Request](#request)
* [Response](#response)
* [Entity Types](#entity-types)
* [Autosuggest API reference](#autosuggest-api-reference)
---
# Refresh Prices | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
A request for refresh prices will return the most up-to-date prices for the selected itinerary. Some of the prices returned in the previous requests might be cached and slightly older. By creating a refresh prices session you'll receive the most up-to-date price which we can get from our partners.
Sample requests[](#sample-requests "Direct link to Sample requests")
----------------------------------------------------------------------
### `/itineraryrefresh/create`[](#itineraryrefreshcreate "Direct link to itineraryrefreshcreate")
In the response from the [`/create`](/docs/flights-live-prices/quick-start#create)
retrieve the `sessionToken` and paste it in the `/itineraryrefresh/create` URI replacing the `SESSION_TOKEN` placeholder below. Also replace the `ITINERARY_ID` placeholder with the itinerary id requested for price refresh:
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/itineraryrefresh/create/SESSION_TOKEN-cells1' --header 'x-api-key: your-api-key' --data ' { "itinerary_id": "ITINERARY_ID"}'
### `/itineraryrefresh/poll`[](#itineraryrefreshpoll "Direct link to itineraryrefreshpoll")
In the response from the `/itineraryrefresh/create` retrieve the `refreshToken` and paste it in the `/itineraryrefresh/poll` URI replacing the `REFRESH_SESSION_TOKEN` placeholder as below:
curl --location --request GET 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/itineraryrefresh/poll/REFRESH_SESSION_TOKEN' --header 'x-api-key: your-api-key'
Performance[](#performance "Direct link to Performance")
----------------------------------------------------------
When it comes to the performance metrics related to itinerary refresh, it's important to consider the time it takes for the search to be completed, which can vary depending on the age of the session (the amount of time since the original live prices search).
#### Within 10 minutes[](#within-10-minutes "Direct link to Within 10 minutes")
Refresh requests within 10 minutes of the initial search are likely to complete immediately. This is because we cache prices, with a TTL of 10 minutes to ensure price accuracy.
#### Between 10 minutes and 1 hour[](#between-10-minutes-and-1-hour "Direct link to Between 10 minutes and 1 hour")
If the refresh request is made between 10 minutes and 1 hour after the initial search, there may be an increase in the time it takes the refresh to complete. This is because fresh quotes and prices may need to be fetched from our supply partners, which takes some additional time compared to returning cached data. Note that even though performance may be affected, it enables us to return more accurate prices.
#### More than 1 hour[](#more-than-1-hour "Direct link to More than 1 hour")
If the refresh request is made more than 1 hour after the initial search, there is a further increase in the time it takes the refresh to complete. In such cases, a new full search is required to generate fresh itineraries and quotes. This process is similar to performing a new flight search from scratch, which takes longer to obtain updated results.
Overall, our API provides efficient itinerary refresh capabilities with varying performance based on the time elapsed since the initial search. The API's performance is optimized for quick updates within the first hour, while longer durations may result in increased time for the refresh to complete, as fresh data is retrieved.
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see flights live prices API documentation](/api/flights-live-pricing)
.
* [Sample requests](#sample-requests)
* [`/itineraryrefresh/create`](#itineraryrefreshcreate)
* [`/itineraryrefresh/poll`](#itineraryrefreshpoll)
* [Performance](#performance)
* [API documentation](#api-documentation)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Autosuggest API returns a list of places that match a specified `searchTerm`.
Sample requests[](#sample-requests "Direct link to Sample requests")
----------------------------------------------------------------------
### `/flights`[](#flights "Direct link to flights")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/autosuggest/flights' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query":{ "market": "UK", "locale": "en-GB", "searchTerm": "London", "includedEntityTypes": [ "PLACE_TYPE_CITY", "PLACE_TYPE_COUNTRY", "PLACE_TYPE_AIRPORT"] }, "limit": 20, "isDestination": true}'
### `/hotels`[](#hotels "Direct link to hotels")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/autosuggest/hotels' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query": { "market": "UK", "locale": "en-GB", "searchTerm": "madri", "includedEntityTypes": [ "PLACE_TYPE_COUNTRY", "PLACE_TYPE_CITY", "PLACE_TYPE_HOTEL", "PLACE_TYPE_DISTRICT", "PLACE_TYPE_ISLAND", "PLACE_TYPE_FIRST_LEVEL_NATION_ADMINISTRATIVE_DIVISION", "PLACE_TYPE_SECOND_LEVEL_NATION_ADMINISTRATIVE_DIVISION", "PLACE_TYPE_SEA_COAST", "PLACE_TYPE_MOUNTAIN_RANGE", "PLACE_TYPE_SEA" ] }}'
### `/carhire`[](#carhire "Direct link to carhire")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/autosuggest/carhire' \--header 'x-api-key: your-api-key' \--header 'Content-Type: application/json' \--data-raw '{ "query": { "market": "UK", "locale": "en-GB", "searchTerm": "edi" }}'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please refer to the [Autosuggest API documentation](/api/autosuggest)
* [Introduction](#introduction)
* [Sample requests](#sample-requests)
* [`/flights`](#flights)
* [`/hotels`](#hotels)
* [`/carhire`](#carhire)
* [API documentation](#api-documentation)
---
# Flights emissions data | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
At Skyscanner, we believe it is an important part of our role as a traveller-facing platform to provide the information that travellers need to be able to make more sustainable travel choices. A key part of this is aviation emissions information, which we also provide to you, our partners, through the B2B API.
This emissions data is provided through the [Travel Impact Model (TIM)](https://travelimpactmodel.org/)
, and sourced and distributed by one or more Coalition Partners of [Travalyst](https://travalyst.org/work/aviation-industry/)
, a non-profit organisation working with its Coalition Partners to bring about the systemic changes required to enable more sustainable travel, starting with creating open-source frameworks for the industry. TIM is the first for aviation, and with it we hope to help make carbon emissions reporting more standardised and transparent throughout the industry. You can learn more about this data and about the work in aviation [here](https://travalyst.org/work/aviation-industry/)
.
The model takes into account factors like the origin and destination of the flight, the aircraft type, and the cabin class and seat configuration to calculate a per-passenger lifecycle emissions figure. Those figures are then compared against a typical flight for that route. A “typical” flight is a median, calculated as the middle value amongst possible emissions per route, which considers all available dates and flights. You can find out more about the methodology and general principles of the model for lifecycle emissions reporting [here](https://github.com/google/travel-impact-model/)
.
This model will continue to be developed and updated regularly, and progress can be followed via the above links. Some of this progress will include work to align with industry bodies, such as IATA and EASA.
Flights emissions data[](#flights-emissions-data-1 "Direct link to Flights emissions data")
---------------------------------------------------------------------------------------------
Flight Lifecycle Emissions data (`sustainabilityData`) is now available through the API!
Flight lifecycle emissions are calculated as CO2e per passenger and compared to a “typical” flight on that route. A lower emissions flight is one that is at least 6% lower than a typical flight on that route, and will show as `isEcoContender`, with the delta % shown as `ecoContenderDelta`.
Because the emissions provided represent well-to-wake emissions, it is most accurate to use “CO2e” to refer to them. CO2e is short for CO2 equivalent, and is a measure used to compare the emissions from [Kyoto Gases](https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Glossary:Kyoto_basket#:~:text=The%20Kyoto%20basket%20encompasses%20the,sulphur%20hexafluoride%20(SF6))
(GHG) on the basis of their global-warming potential (GWP), by converting amounts of other gases to the equivalent amount of carbon dioxide with the same global warming potential ([source](https://ec.europa.eu/eurostat/statistics-explained/index.php?title=Glossary:Carbon_dioxide_equivalent)
). When referring to emissions calculations, it is also advised to use “lifecycle emissions” as well-to-wake emissions are CO2e emissions, as they include more greenhouse gases than just CO2.
You are free to use this data under the [Creative Commons Attribution-ShareAlike CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
open source license. This requires that you give credit to its source in a reasonable way that is visible to users on your platform. This could be as simple as a reference to Travalyst and a link on an information page (like what we’ve done at Skyscanner [here](https://www.skyscanner.net/environment)
).
Emissions data is accessible through an opt-in parameter `includeSustainabilityData` that can be sent when creating a search session.
Best Practices[](#best-practices "Direct link to Best Practices")
-------------------------------------------------------------------
When implementing flight emissions into your front-end, we ask that you not copy our UI like-for-like as we regularly update it in line with our own learnings and traveller needs, which are often unique to Skyscanner. With that said, we are happy to offer guidance on best practice based on our experience.
As general principles, we recommend being:
* **Transparent**: Make things clear and factual for travellers
* **Representative**: Ensure that any necessary context is provided and that the bigger picture story (e.g. that flights have a long way to go before they are truly “sustainable”) is not hidden
* **Verifiable**: Everything said should be substantiated by the data
* **Helpful**: Information about sustainability should be presented in a way that helps travellers to understand it without confusing them or misleading them
| Category | Suggestion | Example |
| --- | --- | --- |
| Content/Design | Make it clear that you are comparing flights to flights, and not to any other modes of transport | Instead of “this is a lower emissions transport option,” say “this flight has lower emissions than a typical flight on this route” |
| Content/Design | Where appropriate, be transparent with travellers about the reality of sustainable travel | It may be helpful to acknowledge that overall, flying is still a carbon-intensive transport option and that in some cases, a train might be a lower carbon option |
| Content/Design | Provide opportunities for a traveller to learn more about emissions in order to build trust in the data | You could provide a tool tip with more information and/or link to an internal page with more detail and a link to [Travalyst](https://travalyst.org/aviation/) |
| Content/Design | Ensure that your design does not use any imagery that could be falsely imply that a flight is more sustainable than it is in reality | We’d recommend including the colour “green” only as a highlighting colour, if at all, and imagery like leaves very sparingly, as using these images in abundance could be interpreted as greenwashing (flights are not “green”!) |
| Language | Use transparent and factual language | Don’t say “This is a green flight”; instead you could say, “This flight emits x% less carbon than a typical flight on this route” |
| Language | Use comparative (rather than superlative or absolute) language | Instead of “this is a low emission flight”, say “this is a lower emission flight,” since the absolute is rarely true (for this example, no flight is a low emissions flight) |
| Language | When referencing this data, use the most accurate possible terms to refer to each piece | Instead of saying “emissions label,” you can simply say “flight emissions information” - a “label” implies subjectivity and could have regulatory implications.
Likewise, we recommend referring to the reference emissions as “typical” emissions, e.g. “This flight has X% lower emissions than a typical flight on this route.” |
| Regulatory | Ensure your product complies with the latest legislation in any jurisdictions in which you operate | The UK’s Green Claims Code is one robust example of outlining expectations for speaking about sustainability of a product or service |
| Regulatory | Only make claims that can be substantiated by data | Do not say that a flight is “eco-friendly” or “sustainable” as none of these are actually evidentially true given current technology for commercial aircraft |
* [Introduction](#introduction)
* [Flights emissions data](#flights-emissions-data-1)
* [Best Practices](#best-practices)
---
# Flights | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
POST https://partners.api.skyscanner.net/apiservices/v3/autosuggest/flights
Request[](#request "Direct link to Request")
----------------------------------------------
Requests to `autosuggest/flights` contain the following:
| Field name | Description |
| --- | --- |
| `query` | Object containing parameters for flights autosuggest search. |
| `isDestination` (Optional) | Alters ranking logic of entities. Defaults to `false` if not sent. |
| `limit` (Optional) | Limits number of entities returned in response. Take a min value of 1 and max of 50. |
The `query` object contains the following fields:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g. `UK`. |
| `locale` | Language to be used for the search. E.g. `en-GB`. |
| `searchTerm` | The string to get autosuggest results for. If left blank, the most popular flights will be returned. |
| `includedEntityTypes`(Optional) | Can be used to filter type of places returned. See below for full list of supported entity types. |
Here is a sample of a query object:
{ "query": { "market": "UK", "locale": "en-GB", "searchTerm": "united", "includedEntityTypes": [ "PLACE_TYPE_AIRPORT", "PLACE_TYPE_CITY", "PLACE_TYPE_COUNTRY" ] }, "limit": 10, "isDestination": true}
Response[](#response "Direct link to Response")
-------------------------------------------------
Responses from the `autosuggest/flights` are returned as a list of `places`. Each `places` item will contain the following fields:
| Field name | Description |
| --- | --- |
| `entityId` | A unique ID for the place. It's an internal ID and it doesn't have any meaning outside of our APIs. |
| `iataCode` | The IATA code of the entity. E.g. `LHR` |
| `parentId` | Parent entity Id for this entity. |
| `name` | Name of the entity. E.g `London Heathrow` |
| `countryId` | Country code for where the entity is located. E.g. London will have a countryId of `GB`. |
| `countryName` | Name of country entity is located in. E.g. `United Kingdom` |
| `cityName` | Name of the city the entity is located in. E.g. `London` |
| `location` | Coordinates of the entity. Expressed as a latitude/longitude pair. E.g. `51.471389,-0.452778` |
| `hierarchy` | Shows hierarchy of places related to this entity. E.g. `London Heathrow (LHR), London\|England\|United Kingdom` |
| `highlighting` | Two dimensional list displaying keywords in entity to be highlighted. E.g. `[[7,15]]` |
| `type` | Type of place. See section below for possible values for PLACE\_TYPE. |
| `airportInformation` | Object containing information about nearest airport to entity. See section below for more detailed information |
Entity Types[](#entity-types "Direct link to Entity Types")
-------------------------------------------------------------
Below are the possible entity types. They can be used to filter the response by being passed in the `includedEntityTypes` field in the request. They are also used in the `type` field in the response.
| Type |
| --- |
| PLACE\_TYPE\_COUNTRY |
| PLACE\_TYPE\_AIRPORT |
| PLACE\_TYPE\_CITY |
Airport Information[](#airport-information "Direct link to Airport Information")
----------------------------------------------------------------------------------
Results where the entity type is `PLACE_TYPE_CITY` will have information about the nearest airport. It is an object with the following information:
| Field name | Description |
| --- | --- |
| `iataCode` | The IATA code of the airport. |
| `entityId` | The entityId of the airport. |
| `parentId` | Parent entity Id of the airport. |
| `countryId` | Country code that airport is located in. |
| `cityId` | City code that airport is located in. |
| `location` | Coordinates of the airport. Expressed as a latitude/longitude pair. E.g. `13.735556,-60.952222` |
| `distance` | Object with the distance from the entity. E.g. `{"value": 3.8603525,"unitCode": "mile"}` |
Autosuggest API reference[](#autosuggest-api-reference "Direct link to Autosuggest API reference")
----------------------------------------------------------------------------------------------------
See the [Autosuggest API reference](/api/autosuggest)
for more details.
* [Endpoint](#endpoint)
* [Request](#request)
* [Response](#response)
* [Entity Types](#entity-types)
* [Airport Information](#airport-information)
* [Autosuggest API reference](#autosuggest-api-reference)
---
# Quick Start Guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Generating referral links in bulk is a quick and easy process that can help you monetize the traffic you send to Skyscanner. If you are not familiar with the procedure of creating referral links, this is a quick start guide to create referral links in bulk using our Affiliates Link API in a simple and easy way.
There is one main endpoint with the following URL structure:
https://skyscanner.net/g/referrals/v1/{vertical}/{pagetype}?mediaPartnerId={yourmediapartnerID}
So this is the initial structure that you want to modify in order to get your referral link ready.
#### Step 1: Determine the vertical and page type[](#step-1-determine-the-vertical-and-page-type "Direct link to Step 1: Determine the vertical and page type")
Looking at the URL structure above, the first step is fairly simple, you just need to determine the `vertical` and `pagetype` you would like your audience to redirect to.
We currently support three verticals, and we have a number of supported page types for each vertical. For more details and information on the verticals and page types we support, please visit our dedicated [Verticals and Page Types](/docs/referrals/verticals-and-page-types)
page.
###### PAGES TYPES PER VERTICAL[](#pages-types-per-vertical "Direct link to PAGES TYPES PER VERTICAL")
| Vertical | Pagetypes |
| --- | --- |
| flights | home, day-view, calendar-month-view, browse-view, multicity, cheap-flights-to, flights-airline |
| cars | home, day-view |
| hotels | home-view, day-view, hotel-details |
#### Step 2: What params are you using?[](#step-2-what-params-are-you-using "Direct link to Step 2: What params are you using?")
Once you've determined the `vertical` and `pagetype`, you need to think of the parameter(s) you would like to include and are relevant to the link you are trying to generate.
The parameters depend on the vertical you chose in the previous step, so please refer to the one of the following pages to get an overview of the parameters we support for each vertical: [Flights](/docs/referrals/flights-parameters)
, [Cars](/docs/referrals/cars-parameters)
or [Hotels](/docs/referrals/hotels-parameters)
.
#### Step 3: Add tracking to your link[](#step-3-add-tracking-to-your-link "Direct link to Step 3: Add tracking to your link")
As you should already know, we partner with [impact.com](https://impact.com/)
to track all traffic coming from the links you have generated to Skyscanner, and to pay you a share of commission for the traffic you're sending to our supply partners. Please look at the following table for supported tracking params, or look for more details in our [Tracking](/docs/referrals/tracking)
page.
###### TRACKING PARAMETERS[](#tracking-parameters "Direct link to TRACKING PARAMETERS")
| Parameter | Required | Description |
| --- | --- | --- |
| `mediaPartnerId` | REQUIRED | Your Impact partner ID as found at Impact.com. |
| `utm_term` | OPTIONAL | Additional alphanumeric tracking parameter you can add to your text links for additional tracking. This will be reported on [impact.com](https://impact.com/)
as Sub Id 2. |
#### Step 4: Validate the link(s) using Postman[](#step-4-validate-the-links-using-postman "Direct link to Step 4: Validate the link(s) using Postman")
Have you ever used Postman before? No worries if you have not, you just need to download [Postman](https://www.postman.com/downloads/)
and paste your links so you can test and validate easily. If you want to get more familiar before you try it out with a custom link, you can access our Skyscanner collection (see below) and you can check out some examples for each vertical, by adding your `mediaPartnerID` and clicking `Send`.
##### Check our Postman collection[](#check-our-postman-collection "Direct link to Check our Postman collection")
[](https://god.gw.postman.com/run-collection/18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7?action=collection%2Ffork&collection-url=entityId%3D18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
info
When testing with Postman, you should expect to receive a `200` response code. That means that you've successfully redirected to the desired page.

caution
If you receive a `403` response code when testing with Postman, your request may have been `blocked` due to security reasons. As an alternative, you can open and validate your link(s) in your web browser instead.

If there's really a need to send requests in Postman, please contact your account manager, or email . We'll provide you with an access token, which when added to the request, will prevent it from getting blocked.
The access token must be set as HTTP header `x-px-access-token`.
#### Step 5: Start using the referral link[](#step-5-start-using-the-referral-link "Direct link to Step 5: Start using the referral link")
Once you have your referral link(s) ready, you just need to copy and paste on the desired location. The link(s) should be ready to be used, it will redirect to the specified page and the traffic you bring to us will be attributed to your [impact.com](https://impact.com/)
account.
---
# Tracking | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
How is traffic tracked?[](#how-is-traffic-tracked "Direct link to How is traffic tracked?")
---------------------------------------------------------------------------------------------
We partner with [Impact](https://impact.com/)
to track all traffic coming from the links you have generated to Skyscanner, and to pay you a share of commission for the traffic you're sending to our supply partners.
info
You should have been setup on Impact when onboarding to the Skyscanner Affiliate Program, and your Impact Ids will have been validated by us.
caution
If you already have your tracking integration using the legacy `associateid` parameter, we will still support this and map the legacy parameter to the Impact parameters automatically. However, we discourage using it for new referral links, as it will become fully deprecated eventually.
###### Tracking Parameters[](#tracking-parameters "Direct link to Tracking Parameters")
| Parameter | Required | Description |
| --- | --- | --- |
| `mediaPartnerId` | REQUIRED | Your Impact partner ID as found at Impact.com. |
| `adId` | OPTIONAL | This is an Impact ID used to identify your ad type. If none is provided, `1477112` will be used. This will be reported on Impact as `Other Referral`. |
| `utm_term` | OPTIONAL | Additional alphanumeric tracking parameter you can add to your text links for additional tracking. This will be reported on Impact as Sub Id 2. |
caution
**Do not** include PII data (like customer emails) in your tracking parameters. If you are a cashback or subnetwork partner, please get in touch with your account manager.
* [How is traffic tracked?](#how-is-traffic-tracked)
---
# Query object | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The query object is used when querying the endpoint for data on your search criteria.
You can also find a guide on what queries we support and how to construct them in the [What can you build with the API?](/docs/flights-indicative-prices/use-cases)
section.
### Layout[](#layout "Direct link to Layout")
query object├── currency├── market├── locale├── queryLegs│ ├── originPlace│ │ │ queryPlace│ │ ├── ├── iata│ │ └── └── entityId│ ├── destinationPlace│ │ │ queryPlace│ │ ├── ├── iata│ │ └── └── entityId│ └── date└─── dateTimeGroupingType
### Description[](#description "Direct link to Description")
| Parameter | Description | Example |
| --- | --- | --- |
| market | The market/country your user is in | UK |
| locale | The locale you want the results in (ISO locale) | en-GB |
| currency | The currency you want the prices in | GBP |
| queryLegs | The legs queried for inbound and outbound place and date. Its an array that can have 1 or two entries. Having two entries means the query will search for return flights | [Query Leg](/docs/flights-indicative-prices/query-object#query-leg) |
| dateTimeGroupingType | The way the quotes are grouped by in terms of dates. | [Date Time Grouping Types](/docs/flights-indicative-prices/query-object#date-time-grouping-types) |
### Query leg[](#query-leg "Direct link to Query leg")
| Parameter | Description | Example |
| --- | --- | --- |
| originPlace | The origin place. It needs to contain either an IATA or an entity ID. | [Place](/docs/flights-indicative-prices/query-object#place) |
| destinationPlace | The destination place. It needs to contain either an IATA or an entity ID. | [Place](/docs/flights-indicative-prices/query-object#place) |
| dateRange, fixedDate, anytime | The date of flight. It can be a range of dates, a fixed date or anytime | [Date](/docs/flights-indicative-prices/query-object#date) |
### Place[](#place "Direct link to Place")
The place value can be either `queryPlace` or `anywhere`.
Here is an example of all the possible values:
| queryPlace - IATA | queryPlace - entity ID | anywhere |
| --- | --- | --- |
| { "queryPlace": { "iata": "EDI" }} | { "queryPlace": { "entityId": "27544008" }} | { "anywhere": true} |
#### QueryPlace[](#queryplace "Direct link to QueryPlace")
| Parameter | Description | Example |
| --- | --- | --- |
| iata | The IATA code of and origin or destination city or airport | LHR |
| entityId | The internal Skyscanner ID for an origin or destination location | 95565050 |
info
The supported place types for the requests are cities and airports. Not all supported place types have IATA codes, so you can use entity IDs for them.
#### What are entity IDs?[](#what-are-entity-ids "Direct link to What are entity IDs?")
Entity IDs are internal Skyscanner unique identifiers for places. We use them because not all places we support for our searches have industry-standard identifiers like IATA or ICAO.
You can use the Autosuggest API v1 to get entity IDs for places.
You can look up places with the Autosuggest API by:
1. SKY codes (old internal Skyscanner IDs)
2. IP addresses
3. The coordinates of the place (we will return the nearest place)
4. The name of the place (partial names are also supported)
For full details on the Autosuggest API v1 check out the [full documentation](https://skyscanner.github.io/slate/#places)
.
### Date[](#date "Direct link to Date")
The date can be either `dateRange`, `fixedDate`, or `anytime`.
All the dates must be in the future. Requests with dates in the past will fail.
Here are examples of all the possible values:
| dateRange | fixedDate | anytime |
| --- | --- | --- |
| { "dateRange": { "startDate": { "year": 2024, "month": 8 }, "endDate": { "year": 2024, "month": 8 } }} | { "fixedDate": { "year": 2024, "month": 8, "day": 11 }} | { "anytime": "true"} |
The date ranges are considered from the first day of the `startDate` month to the last day of the `endDate` month.
### Date Time Grouping Types[](#date-time-grouping-types "Direct link to Date Time Grouping Types")
The following types are only working when searching in date ranges and **not for fixed dates**.
* When searching in date ranges one of the following date time grouping types is required, otherwise only two quotes will be returned.
* For `anytime` date search, the grouping type `DATE_TIME_GROUPING_TYPE_BY_MONTH` is required, otherwise only two quotes will be returned.
#### DATE\_TIME\_GROUPING\_TYPE\_BY\_DATE[](#date_time_grouping_type_by_date "Direct link to DATE_TIME_GROUPING_TYPE_BY_DATE")
Grouping by date is used to get each combination of quotes from the start of the month with each other day of the month. It only works for single month date ranges (e.g. for October 2024).
Show request example
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_DATE", "query_legs": [ { "destinationPlace": { "query_place": { "iata": "EDI" } }, "originPlace": { "query_place": { "iata": "LHR" } }, "dateRange": { "startDate": { "year": 2024, "month": 12 }, "endDate": { "year": 2024, "month": 12 } } } ] }}
#### DATE\_TIME\_GROUPING\_TYPE\_BY\_MONTH[](#date_time_grouping_type_by_month "Direct link to DATE_TIME_GROUPING_TYPE_BY_MONTH")
Grouping by month is used to get each combination of quotes from different months, and would be the cheapest of each month. It only works when the date range is bigger than a whole month.
Show request example
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_MONTH", "query_legs": [ { "destinationPlace": { "query_place": { "iata": "EDI" } }, "originPlace": { "query_place": { "iata": "LHR" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 12 } } } ] }}
* [Layout](#layout)
* [Description](#description)
* [Query leg](#query-leg)
* [Place](#place)
* [Date](#date)
* [Date Time Grouping Types](#date-time-grouping-types)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Geo API returns a full catalogue of supported locations (airports, cities, islands, countries and continents) in the specified locale. Supported locations are locations where travelers can search flights to and from.
Sample request[](#sample-request "Direct link to Sample request")
-------------------------------------------------------------------
### `/hierarchy/flights`[](#hierarchyflights "Direct link to hierarchyflights")
curl --request GET 'https://partners.api.skyscanner.net/apiservices/v3/geo/hierarchy/flights/en-GB' --header 'x-api-key: your-api-key'
### `/hierarchy/flights/nearest`[](#hierarchyflightsnearest "Direct link to hierarchyflightsnearest")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/geo/hierarchy/flights/nearest' --header 'x-api-key:your-api-key' --data '{"locator":{"coordinates":{"latitude":51.5072, "longitude":0.1276}},"locale":"en-GB"}'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see Geo API reference](/api/geo)
* [Introduction](#introduction)
* [Sample request](#sample-request)
* [`/hierarchy/flights`](#hierarchyflights)
* [`/hierarchy/flights/nearest`](#hierarchyflightsnearest)
* [API documentation](#api-documentation)
---
# What is Impact? | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Impact is a third party tool we use for tracking our partner's redirects so that we can calculate payments to partners. [See Impact's Website](https://impact.com/)
for more details.
Deep links[](#deep-links "Direct link to Deep links")
-------------------------------------------------------
The deep links that are returned will flow through Impact which redirects to Skyscanner URLs.
**Sample of API deep link**
"deepLink": "https://skyscanner.pxf.io/c/ImpactMediaPartnerId2/ImpactAdId2/ImpactCampaignId2...",
You do not need to do anything but use these deep links to direct customers and it will track all the conversions for you.
* [Deep links](#deep-links)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Flights Indicative API returns the best (lowsest) prices for a given travel date and route for 1 adult economy traveller.
Sample request[](#sample-request "Direct link to Sample request")
-------------------------------------------------------------------
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/indicative/search' --header 'x-api-key: your-api-key' --data '{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", "queryLegs": [{ "originPlace": { "queryPlace": { "iata": "LHR" } }, "destinationPlace": { "queryPlace": { "iata": "LAX" } }, "anytime": true }] } }'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see Flights Indicative prices API reference](/api/flights-indicative)
* [Introduction](#introduction)
* [Sample request](#sample-request)
* [API documentation](#api-documentation)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Car hire Live Prices API is built on top of Skyscanner's car hire search stack and gives the current best prices of car hire quotes for a given search request. The quotes are retrieved in real time from our supply partners each time a search request is received.
Sample requests and responses[](#sample-requests-and-responses "Direct link to Sample requests and responses")
----------------------------------------------------------------------------------------------------------------
### `/create`[](#create "Direct link to create")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v1/carhire/live/search/create' --header 'x-api-key: your-api-key' --data ' {"query": {"market": "UK","locale": "en-GB","currency": "GBP","pickUpLocation": {"entityId": "27544008"},"pickUpDate": {"year": 2024,"month": 12, "day": 21,"hour": 16,"minute": 30},"dropOffDate": {"year": 2024,"month": 12, "day": 26,"hour": 12,"minute": 30},"includedAgentIds": ["vipd", "sixt"], "driverAge": 38}}'
### `/poll`[](#poll "Direct link to poll")
In the response from the `createSearch` retrieve the `sessionToken` and paste it in the `pollSearch` URI replacing the `SESSION_TOKEN` placeholder as below:
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v1/carhire/live/search/poll/SESSION_TOKEN' --header 'x-api-key: your-api-key'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see car hire live prices API documentation](/api/carhire-live-pricing)
* [Introduction](#introduction)
* [Sample requests and responses](#sample-requests-and-responses)
* [`/create`](#create)
* [`/poll`](#poll)
* [API documentation](#api-documentation)
---
# IATA codes and Entity IDs | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
This page gives an overview of what IATA codes and Entity IDs represent, as well as their values and how can we find them.
### IATA codes[](#iata-codes "Direct link to IATA codes")
IATA codes are three-letter codes used by the International Air Transport Association (IATA) to identify airports, airlines, and other entities in the aviation industry. These codes are used primarily for ticketing, scheduling, and other administrative purposes.
Airport codes are the most common type of IATA code. They consist of three letters, with the first two letters representing the country and the third letter representing the airport. For example, `LAX` is the IATA code for Los Angeles International Airport in the United States.
Other types of IATA codes include aircraft type codes, which are used to identify different types of aircraft, and city codes, which are used to identify cities and other geographic locations.
IATA codes are widely used in the aviation industry and are recognized by airlines, airports, and other entities around the world. They provide a standardized way of identifying and referencing different entities in the industry, which helps to streamline operations and improve efficiency.
For a full list of available IATA codes, please visit this [page](https://www.iata.org/en/publications/directories/code-search/)
.
### Entity IDs[](#entity-ids "Direct link to Entity IDs")
Entity IDs are Skyscanner internal codes for all the geographical entities we support. Their usage is strictly limited within the Skyscanner APIs and services. Unlike IATA codes, entity IDs are guaranteed to be unique, so we recommend using them to prevent potential ambiguous searches (e.g. an airport and a city share the same IATA code).
Please speak to your account manager if you require a list of supported entity IDs.
* [IATA codes](#iata-codes)
* [Entity IDs](#entity-ids)
---
# What can you build with the API? | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The Flights Indicative Prices API allows for more flexibility than the Flights Live Prices API. You can access the quotes based on the aggregation categories we support.
We support two aggregation categories: date aggregations and route aggregations. Each of them have some sub-categories.
Date aggregations[](#date-aggregations "Direct link to Date aggregations")
----------------------------------------------------------------------------
Date aggregations are used to allow the comparison of prices when the traveller doesn't know or is flexible on which dates they want to travel in.
### Per date (at the day level)[](#per-date-at-the-day-level "Direct link to Per date (at the day level)")
We use this aggregation for allowing our travellers to compare the prices of a route over a whole month. We surface the data on a calendar.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/flights/ber/bcn/?adults=1&adultsv2=1&cabinclass=economy&children=0&childrenv2=&inboundaltsenabled=false&iym=2410&originentityid=27547053&outboundaltsenabled=false&oym=2410&preferdirects=false&ref=home&rtn=1&selectedoday=01&selectediday=01)
.
#### Query Requirements[](#query-requirements "Direct link to Query Requirements")
📦 The `dateTimeGroupingType` **must** be set to `DATE_TIME_GROUPING_TYPE_BY_DATE`.
📆 Each query leg **must** have a `dateRange` with the same date used in both `startDate` and `endDate`. You can only request this data one full month at a time.
📌 The `origin` -> `destination` combinations supported are:
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | ✅ | ✅ | ❌ | ❌ |
| `City` | ✅ | ✅ | ❌ | ❌ |
| `Country` | ❌ | ❌ | ❌ | ❌ |
#### Using the response[](#using-the-response "Direct link to Using the response")
You will generally get 2 quotes for each day of the month specified in the date range - one for direct flights and one for indirect flights.
You can use the `content.groupingOptions.byDate` groupings to represent the quotes on a calendar. You will have one group per date.
#### Example queries[](#example-queries "Direct link to Example queries")
London to Paris - One way flights
💡 Make sure your dates are in the future when doing your own requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_DATE", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "destinationPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, // The end date and start date should always be the same. This would give you quotes for // November 2024. "date_range": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } } ] }}
London to Paris - Return flights
💡 Make sure your dates are in the future when doing your own requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_DATE", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "destinationPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, // The end date and start date should always be the same in a leg. However, you can have a // different month for the return leg. This would give you flights with the outbound date in // November 2024 and inbound date in December 2024. "date_range": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } }, { "originPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, "destinationPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "date_range": { "startDate": { "year": 2024, "month": 12 }, "endDate": { "year": 2024, "month": 12 } } } ] }}
### Per month[](#per-month "Direct link to Per month")
We use this aggregation for allowing our travellers find the cheapest months to fly on a specific route. We surface the data as a bar chart.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/flights-to/pari/cheap-flights-to-paris.html)
.
#### Query Requirements[](#query-requirements-1 "Direct link to Query Requirements")
📦 The `dateTimeGroupingType` **must** be set to `DATE_TIME_GROUPING_TYPE_BY_MONTH`.
📌 The `origin` -> `destination` combinations supported are:
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | ✅ | ✅ | ✅ | ❌ |
| `City` | ✅ | ✅ | ✅ | ❌ |
| `Country` | ✅ | ✅ | ✅ | ❌ |
#### Using the response[](#using-the-response-1 "Direct link to Using the response")
You can use the `content.groupingOptions.byDate` groupings to represent the quotes on a chart. You will have one group for each month.
#### Example queries[](#example-queries-1 "Direct link to Example queries")
London to Paris - Return flights
💡 Make sure your dates are in the future when doing your own requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "dateTimeGroupingType": "DATE_TIME_GROUPING_TYPE_BY_MONTH", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "destinationPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, "date_range": { "startDate": { "year": 2024, "month": 3 }, "endDate": { "year": 2024, "month": 7 } } }, { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27539733" } }, "destinationPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27544008" } }, "date_range": { "startDate": { "year": 2024, "month": 3 }, "endDate": { "year": 2024, "month": 7 } } } ] }}
Route aggregations[](#route-aggregations "Direct link to Route aggregations")
-------------------------------------------------------------------------------
Route aggregations are used to allow the comparison of prices when the traveller doesn't know or is flexible on the destination they want to travel to, or even the origin they want to travel from.
### Quickly find the route sub-category you need[](#quickly-find-the-route-sub-category-you-need "Direct link to Quickly find the route sub-category you need")
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | Dates only | Dates only | [Destination city](#per-destination-city) | [Destination country](#per-destination-country) |
| `City` | Dates only | Dates only | [Destination city](#per-destination-city) | [Destination country](#per-destination-country) |
| `Country` | [Origin city](#per-origin-city) | [Origin city](#per-origin-city) | [Destination city](#per-destination-city) | [Destination country](#per-destination-country) |
caution
Anywhere by city route aggregations are not currently supported, routes to anywhere will always be aggregated by country.
### Per destination city[](#per-destination-city "Direct link to Per destination city")
We use this aggregation for allowing our travellers that know the origin place they're flying from to compare the prices to different cities in a country. The travel dates can be either fixed or flexible.
An example search would be `London` -> `France`.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/flights/uk/fr/?adultsv2=1&cabinclass=economy&childrenv2=&inboundaltsenabled=false&is_banana_refferal=true&outboundaltsenabled=false&oym=2411&preferdirects=false&ref=home&rtn=0)
.
#### Query Requirements[](#query-requirements-2 "Direct link to Query Requirements")
📦 The `dateTimeGroupingType` **must not** be set.
📆 Each query leg **can** have either of:
* A `fixedDate`
* An `anytime` flag set to `true`
* A `dateRange` with the same date used in both `startDate`and `endDate`. You can only request this data one full month at a time.
📌 The `origin` -> `destination` combinations supported are:
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | ❌ | ❌ | ✅ | ❌ |
| `City` | ❌ | ❌ | ✅ | ❌ |
| `Country` | ❌ | ❌ | ✅ | ❌ |
#### Using the response[](#using-the-response-2 "Direct link to Using the response")
You will generally get 2 quotes for each city in the destination country - one for direct flights and one for indirect flights.
You can use the `content.groupingOptions.byRoute` groupings to represent the quotes on a grid. You will have one group per city.
#### Example queries[](#example-queries-2 "Direct link to Example queries")
London to France - Return flights in November 2024
💡 Make sure your dates are in the future when doing your own requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "destinationPlace": { "queryPlace": { // Entity ID for France "entityId": "29475385" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } }, { "originPlace": { "queryPlace": { // Entity ID for France "entityId": "29475385" } }, "destinationPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } } ] }}
### Per destination country[](#per-destination-country "Direct link to Per destination country")
We use this aggregation for allowing our travellers that know the origin place they're flying from to compare the prices to different countries in the world. The travel dates can be either fixed or flexible.
An example search would be `London` -> `Anywhere (by country)`.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/flights/uk/fr/?adultsv2=1&cabinclass=economy&childrenv2=&inboundaltsenabled=false&is_banana_refferal=true&outboundaltsenabled=false&oym=2411&preferdirects=false&ref=home&rtn=0)
.
#### Query Requirements[](#query-requirements-3 "Direct link to Query Requirements")
📦 The `dateTimeGroupingType` **must not** be set.
📆 Each query leg **can** have either of:
* A `fixedDate`
* An `anytime` flag set to `true`
* A `dateRange` with the same date used in both `startDate`and `endDate`. You can only request this data one full month at a time.
📌 The `origin` -> `destination` combinations supported are:
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | ❌ | ❌ | ❌ | ✅ |
| `City` | ❌ | ❌ | ❌ | ✅ |
| `Country` | ❌ | ❌ | ❌ | ✅ |
#### Using the response[](#using-the-response-3 "Direct link to Using the response")
You will generally get 2 quotes for the country we have quotes for - one for direct flights and one for indirect flights.
You can use the `content.groupingOptions.byRoute` groupings to represent the quotes on a grid. You will have one group per country.
#### Example queries[](#example-queries-3 "Direct link to Example queries")
London to anywhere - Return flights in November 2024
💡 Make sure your dates are in the future when doing your requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "destinationPlace": { "anywhere": true }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } }, { "originPlace": { "anywhere": true }, "destinationPlace": { "queryPlace": { // Entity ID for London "entityId": "27544008" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } } ] }}
### Per origin city[](#per-origin-city "Direct link to Per origin city")
We use this aggregation for allowing our travellers that know the destination place they're flying to, but don't know the exact origin, to compare the prices from the cities in a country. The travel dates can be either fixed or flexible.
An example search would be `United Kingdom` -> `Paris`.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/flights/uk/fr/?adultsv2=1&cabinclass=economy&childrenv2=&inboundaltsenabled=false&is_banana_refferal=true&outboundaltsenabled=false&oym=2411&preferdirects=false&ref=home&rtn=0)
.
#### Query Requirements[](#query-requirements-4 "Direct link to Query Requirements")
📦 The `dateTimeGroupingType` **must not** be set.
📆 Each query leg **can** have either of:
* A `fixedDate`
* An `anytime` flag set to `true`
* A `dateRange` with the same date used in both `startDate`and `endDate`. You can only request this data one full month at a time.
📌 The `origin` -> `destination` combinations supported are:
| Origin \\ Destination | `Airport` | `City` | `Country` | `Anywhere (by country)` |
| --- | --- | --- | --- | --- |
| `Airport` | ❌ | ❌ | ❌ | ❌ |
| `City` | ❌ | ❌ | ❌ | ❌ |
| `Country` | ✅ | ✅ | ❌ | ❌ |
#### Using the response[](#using-the-response-4 "Direct link to Using the response")
You will generally get 2 quotes for each city in the origin country - one for direct flights and one for indirect flights.
You can use the `content.groupingOptions.byRoute` groupings to represent the quotes on a grid. You will have one group per city.
#### Example queries[](#example-queries-4 "Direct link to Example queries")
United Kingdom to Paris - Return flights in November 2024
💡 Make sure your dates are in the future when doing your requests
{ "query": { "currency": "GBP", "locale": "en-GB", "market": "UK", "queryLegs": [ { "originPlace": { "queryPlace": { // Entity ID for United Kingdom "entityId": "29475375" } }, "destinationPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } }, { "originPlace": { "queryPlace": { // Entity ID for Paris "entityId": "27539733" } }, "destinationPlace": { "queryPlace": { // Entity ID for United Kingdom "entityId": "29475375" } }, "dateRange": { "startDate": { "year": 2024, "month": 11 }, "endDate": { "year": 2024, "month": 11 } } } ] }}
* [Date aggregations](#date-aggregations)
* [Per date (at the day level)](#per-date-at-the-day-level)
* [Per month](#per-month)
* [Route aggregations](#route-aggregations)
* [Quickly find the route sub-category you need](#quickly-find-the-route-sub-category-you-need)
* [Per destination city](#per-destination-city)
* [Per destination country](#per-destination-country)
* [Per origin city](#per-origin-city)
---
# Enums | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Below is a list of all the enums in use by the API.
Common[](#common "Direct link to Common")
-------------------------------------------
These enums are used between multiple endpoints. For example, the values of the `ResultStatus` enum can be found in both Flights Live and Flights Indicative Pricing endpoints.
### SearchAction[](#searchaction "Direct link to SearchAction")
| Enum Value |
| --- |
| `SEARCH_ACTION_UNSPECIFIED` |
| `SEARCH_ACTION_CREATE` |
| `SEARCH_ACTION_POLL` |
### ResultStatus[](#resultstatus "Direct link to ResultStatus")
| Enum Value | Description |
| --- | --- |
| `RESULT_STATUS_UNSPECIFIED` | Results status not specified. |
| `RESULT_STATUS_COMPLETE` | Results are now complete. |
| `RESULT_STATUS_INCOMPLETE` | Results are not complete yet. |
| `RESULT_STATUS_FAILED` | Search has failed. |
### ResultAction[](#resultaction "Direct link to ResultAction")
| Enum Value | Description |
| --- | --- |
| `RESULT_ACTION_UNSPECIFIED` | Result action is not specified. |
| `RESULT_ACTION_REPLACED` | Result action is to replace, as the results have been changed. |
| `RESULT_ACTION_NOT_MODIFIED` | Result action is not to modify, as no changes have occurred. |
| `RESULT_ACTION_OMITTED` | Results for this vertical have been omitted. |
### InventoryType[](#inventorytype "Direct link to InventoryType")
Values corresponding to the different inventory types supported by the API. Please note that some inventory types such as `Hotels` may not yet be available.
| Enum Value |
| --- |
| `INVENTORY_TYPE_UNSPECIFIED` |
| `FLIGHTS_LIVE_PRICING` |
| `FLIGHTS_INDICATIVE_PRICING` |
| `HOTELS_LIVE_PRICING` |
| `HOTELS_INDICATIVE_PRICING` |
| `CULTURE_DATA` |
| `GEO_DATA` |
| `CARRIERS_DATA` |
| `CAR_HIRE_LIVE_PRICING` |
| `CAR_HIRE_INDICATIVE_PRICING` |
| `CAR_HIRE_LIVE_PRICING_CREATE` |
| `CAR_HIRE_LIVE_PRICING_POLL` |
| `CAR_HIRE_AGENTS` |
### PlaceType[](#placetype "Direct link to PlaceType")
| Enum Value |
| --- |
| `PLACE_TYPE_UNSPECIFIED` |
| `PLACE_TYPE_AIRPORT` |
| `PLACE_TYPE_CITY` |
| `PLACE_TYPE_COUNTRY` |
| `PLACE_TYPE_CONTINENT` |
### PriceUnit[](#priceunit "Direct link to PriceUnit")
| Enum Value | Description |
| --- | --- |
| `PRICE_UNIT_UNSPECIFIED` | Unit is not specified. |
| `PRICE_UNIT_WHOLE` | Unit relation: 1. eg: A whole pound, euro, etc. |
| `PRICE_UNIT_CENTI` | Unit relation: 100; eg: cents. |
| `PRICE_UNIT_MILLI` | Unit relation: 1000 |
| `PRICE_UNIT_MICRO` | Unit relation: 1000000 |
Flights Live Prices[](#flights-live-prices "Direct link to Flights Live Prices")
----------------------------------------------------------------------------------
These enums are used only by the `create` and `poll` Flights Live Prices endpoints
### CabinClass[](#cabinclass "Direct link to CabinClass")
info
`CABIN_CLASS_UNSPECIFIED` represents an internal status and must not be included in requests, as it will result in an error. In cases where a cabin class is not specified within a request, the API will automatically default to `CABIN_CLASS_ECONOMY`.
Used in the Flights Live endpoint to specify class. E.g.: `economy`, `business`, `first`.
| Enum Value | Description |
| --- | --- |
| `CABIN_CLASS_UNSPECIFIED` | Cabin class is not specified. |
| `CABIN_CLASS_ECONOMY` | Cabin class is economy. |
| `CABIN_CLASS_PREMIUM_ECONOMY` | Cabin class is premium economy. |
| `CABIN_CLASS_BUSINESS` | Cabin class is business. |
| `CABIN_CLASS_FIRST` | Cabin class is first class. |
### AgentType[](#agenttype "Direct link to AgentType")
| Enum Value | Description |
| --- | --- |
| `AGENT_TYPE_UNSPECIFIED` | Unspecified agent type. |
| `AGENT_TYPE_TRAVEL_AGENT` | Agent is a travel agent. |
| `AGENT_TYPE_AIRLINE` | Agent is a airline. |
### TransferType[](#transfertype "Direct link to TransferType")
The type of transfer when there are multiple segments on an itinerary (more than one flight to get from the a destination). More details [here](https://help.skyscanner.net/hc/en-gb/articles/206028971-What-does-it-mean-when-I-see-Non-protected-transfers-or-Self-transfer-flight-on-Skyscanner-)
.
| Enum Value | Description |
| --- | --- |
| `TRANSFER_TYPE_UNSPECIFIED` | The transfer type is not specified. |
| `TRANSFER_TYPE_MANAGED` | A protected transfer, managed by the agent. If a flights is delayed and the travellers miss their connection, the agent will find alternatives an no extra cost. |
| `TRANSFER_TYPE_SELF_TRANSFER` | A non-protected transfer. The travellers will have multiple booking references. If a flights is delayed and the travellers miss their connection they will have to buy a whole new ticket. |
| `TRANSFER_TYPE_PROTECTED_SELF_TRANSFER` | Self transfer flights that are protected by the online travel agent rather than the airline. If a flights is delayed and the travellers miss their connection they can contact the travel agent to help with the rebooking. |
Flights Indicative Prices[](#flights-indicative-prices "Direct link to Flights Indicative Prices")
----------------------------------------------------------------------------------------------------
These enums are used only by the Flights Indicative Prices `search` endpoint
### DateTimeGroupingType (Indicative Pricing Endpoint)[](#datetimegroupingtype-indicative-pricing-endpoint "Direct link to DateTimeGroupingType (Indicative Pricing Endpoint)")
| Enum Value | Description |
| --- | --- |
| `DATE_TIME_GROUPING_TYPE_UNSPECIFIED` | The date grouping is not specified (use the default). |
| `DATE_TIME_GROUPING_TYPE_BY_DATE` | Group the quotes by day. |
| `DATE_TIME_GROUPING_TYPE_BY_MONTH` | Group the quotes by month. |
Autosuggest[](#autosuggest "Direct link to Autosuggest")
----------------------------------------------------------
### PlaceType[](#placetype-1 "Direct link to PlaceType")
In addition to the `PlaceType` enum above, the Autosuggest endpoints have additional specific `PlaceType` enums.
| Enum Value |
| --- |
| `PLACE_TYPE_HOTEL` |
| `PLACE_TYPE_DISTRICT` |
| `PLACE_TYPE_ISLAND` |
| `PLACE_TYPE_FIRST_LEVEL_NATION_ADMINISTRATIVE_DIVISION` |
| `PLACE_TYPE_SECOND_LEVEL_NATION_ADMINISTRATIVE_DIVISION` |
| `PLACE_TYPE_SEA_COAST` |
| `PLACE_TYPE_MOUNTAIN_RANGE` |
| `PLACE_TYPE_SEA` |
| `PLACE_TYPE_TRAIN_STATION` |
Car Hire (Common)[](#car-hire-common "Direct link to Car Hire (Common)")
--------------------------------------------------------------------------
### Transmission[](#transmission "Direct link to Transmission")
| Enum Value | Description |
| --- | --- |
| `TRANSMISSION_UNSPECIFIED` | Transmission is not specified or unknown. |
| `TRANSMISSION_MANUAL` | Vehicle transmission is manual. |
| `TRANSMISSION_AUTOMATIC` | Vehicle transmission is automatic. |
### Fuel type[](#fuel-type "Direct link to Fuel type")
| Enum Value | Description |
| --- | --- |
| `FUEL_TYPE_UNSPECIFIED` | Indicates the fuel type mapping from the supplier's quote wasn't possible or is unknown. |
| `FUEL_TYPE_HYBRID` | The fuel type is hybrid. |
| `FUEL_TYPE_ELECTRIC` | The fuel type is electric. |
| `FUEL_TYPE_OTHER` | The fuel type is none of the other possible values. |
Car Hire Live Prices[](#car-hire-live-prices "Direct link to Car Hire Live Prices")
-------------------------------------------------------------------------------------
### Pickup method[](#pickup-method "Direct link to Pickup method")
| Enum Value | Description |
| --- | --- |
| `PICKUP_METHOD_UNSPECIFIED` | Indicates the pick-up method mapping from the supplier's quote wasn't possible. |
| `PICKUP_METHOD_KEYLESS` | Keyless pickup method. |
| `PICKUP_METHOD_KEY_AND_GO` | Key and go pickup method. |
| `PICKUP_METHOD_NORMAL` | Normal pickup method. |
### Pickup type[](#pickup-type "Direct link to Pickup type")
| Enum Value | Description |
| --- | --- |
| `PICKUP_TYPE_UNSPECIFIED` | Indicates the pick-up method mapping from the supplier's quote wasn't possible. |
| `PICKUP_TYPE_DESK_IN_TERMINAL` | The pick-up is at desk in terminal. |
| `PICKUP_TYPE_MEET_AND_GREET` | The pick-up is by meet and greet method. |
| `PICKUP_TYPE_SHUTTLE` | The pick-up is by shuttle. |
### Fuel policy[](#fuel-policy "Direct link to Fuel policy")
| Enum Value | Description |
| --- | --- |
| `FUEL_POLICY_UNSPECIFIED` | Indicates the fuel policy mapping from the supplier's quote wasn't possible or is unknown. |
| `FUEL_POLICY_FULL_TO_FULL` | Fuel policy is full to full. |
| `FUEL_POLICY_FULL_TO_EMPTY` | Fuel policy is full to empty. |
| `FUEL_POLICY_SAME_TO_SAME` | Fuel policy is same to same. |
| `FUEL_POLICY_HALF_TO_HALF` | Fuel policy is half to half. |
| `FUEL_POLICY_HALF_TO_EMPTY` | Fuel policy is half to empty. |
| `FUEL_POLICY_QUARTER_TO_QUARTER` | Fuel policy is quarter to quarter. |
| `FUEL_POLICY_QUARTER_TO_EMPTY` | Fuel policy is quarter to empty. |
| `FUEL_POLICY_EMPTY_TO_EMPTY` | Fuel policy is empty to empty. |
| `FUEL_POLICY_FREE_FULL_TANK` | Fuel policy is free full tank. |
### Pay type[](#pay-type "Direct link to Pay type")
| Enum Value | Description |
| --- | --- |
| `PAY_TYPE_UNSPECIFIED` | Indicates the values is unspecified or unknown. |
| `PAY_TYPE_ARRIVAL_PAY` | Pay at the counter, popular in US. |
| `PAY_TYPE_MIX_PAY` | OTA charges upfront, travellers pays the rest at counter. |
| `PAY_TYPE_PRE_PAY` | Traveller pays full rental rate to the broker. |
Car Hire Indicative Prices[](#car-hire-indicative-prices "Direct link to Car Hire Indicative Prices")
-------------------------------------------------------------------------------------------------------
### Date time grouping type[](#date-time-grouping-type "Direct link to Date time grouping type")
| Enum Value | Description |
| --- | --- |
| `DATE_TIME_GROUPING_TYPE_UNSPECIFIED` | The date grouping is not specified. |
| `DATE_TIME_GROUPING_TYPE_BY_DATE` | Group the quotes by day. |
| `DATE_TIME_GROUPING_TYPE_BY_MONTH` | Group the quotes by month. |
| `DATE_TIME_GROUPING_TYPE_BY_WEEK` | Group the quotes by week. |
### Aggregate type[](#aggregate-type "Direct link to Aggregate type")
| Enum Value | Description |
| --- | --- |
| `AGGREGATE_TYPE_UNSPECIFIED` | Default value for aggregate type. Should never be returned. |
| `AGGREGATE_TYPE_CHEAPEST` | Aggregate type is cheapest per day. |
| `AGGREGATE_TYPE_AVERAGE` | Aggregate type is average per day. |
| `AGGREGATE_TYPE_TOTAL_CHEAPEST` | Aggregate type is cheapest price in total. |
| `AGGREGATE_TYPE_TOTAL_AVERAGE` | Aggregate type is total average price in total. |
| `AGGREGATE_TYPE_COUNTRY_AVERAGE` | Aggregate type is price per day of the country where the location is located in. |
### Vehicle type[](#vehicle-type "Direct link to Vehicle type")
info
For the below descriptions to make more sense please check [https://www.acriss.org/car-codes/](https://www.acriss.org/car-codes/)
| Enum Value | Description |
| --- | --- |
| `VEHICLE_TYPE_UNSPECIFIED` | Default value of car type. This is an unexpected value and it shouldn't be returned as part of the response ever. |
| `VEHICLE_TYPE_SMALL` | Vehicle size is one of: - (M) Mini - (N) Mini Elite - (E) Economy - (H) Economy Elite. |
| `VEHICLE_TYPE_MEDIUM` | Vehicle size is one of: - (C) Compact - (D) Compact Elite - (I) Intermediate - (J) Intermediate Elite - (S) Standard - (R) Standard Elite. |
| `VEHICLE_TYPE_LARGE` | Vehicle size is one of: - (F) Fullsize - (G) Fullsize Elite. |
| `VEHICLE_TYPE_LUXURY` | Vehicle size is one of: - (P) Premium - (U) Premium Elite - (L) Luxury - (W) Luxury Elite - (O) Oversize - (X) Special. |
| `VEHICLE_TYPE_SUV` | Number of doors for vehicle is (F) SUV. |
| `VEHICLE_TYPE_VAN` | Number of doors for vehicle is (K) Commercial Van/ Truck. |
* [Common](#common)
* [SearchAction](#searchaction)
* [ResultStatus](#resultstatus)
* [ResultAction](#resultaction)
* [InventoryType](#inventorytype)
* [PlaceType](#placetype)
* [PriceUnit](#priceunit)
* [Flights Live Prices](#flights-live-prices)
* [CabinClass](#cabinclass)
* [AgentType](#agenttype)
* [TransferType](#transfertype)
* [Flights Indicative Prices](#flights-indicative-prices)
* [DateTimeGroupingType (Indicative Pricing Endpoint)](#datetimegroupingtype-indicative-pricing-endpoint)
* [Autosuggest](#autosuggest)
* [PlaceType](#placetype-1)
* [Car Hire (Common)](#car-hire-common)
* [Transmission](#transmission)
* [Fuel type](#fuel-type)
* [Car Hire Live Prices](#car-hire-live-prices)
* [Pickup method](#pickup-method)
* [Pickup type](#pickup-type)
* [Fuel policy](#fuel-policy)
* [Pay type](#pay-type)
* [Car Hire Indicative Prices](#car-hire-indicative-prices)
* [Date time grouping type](#date-time-grouping-type)
* [Aggregate type](#aggregate-type)
* [Vehicle type](#vehicle-type)
---
# Usage Guidelines | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Skyscanner's market leading suite of search APIs provide globalised content and localised coverage to over 250 partners around the world. By using our API, you agree to adhere to our UX, design and usage guidelines as outlined below and which form the Technical Requirements. Failure to comply with these requirements could result in your API access being revoked.
Essential[](#essential "Direct link to Essential")
----------------------------------------------------
### Arrival Times and Durations[](#arrival-times-and-durations "Direct link to Arrival Times and Durations")
Many flights arrive on a different day from when they take off. This is a potential source of confusion for customers, so when displaying the times for flights it's important to also include indicators of the dates. For example, a flight may go over midnight, it may cross different timezones and it may cross the international date line. The most common way of handling this is a "+1", "+2", "+3" or "-1" (which can happen if the flight crosses the date line) indicator to indicate that the arrival occurs on a different day to the departure.

* **Always indicate if the flight arrives on a different day from departure**
* **Always handle the cases of +1, +2, +3 and -1 days**
### Skyscanner logo[](#skyscanner-logo "Direct link to Skyscanner logo")
You must display the text "Powered by", followed by the Skyscanner logo, as shown. The whole element must link to ([www.skyscanner.net](http://www.skyscanner.net)
) You can choose exactly how and where to display this, but is should be obvoious to end-users when Skyscanner data has been used.
Do no **distort** the image size when you scale it. Make sure logo spacing is included as provided.

[Download](https://cdn2.hubspot.net/hubfs/3051472/Skyscanner_November2019/Files/powered-by.zip)
(Note: do not distort the logo in any way)
### Look to Book[](#look-to-book "Direct link to Look to Book")
Live Pricing Service calls can be costly for Skyscanner and our airline/OTA partners to service. Skyscanner typically absorbs the cost of Live Pricing calls so long as those calls result in a reasonable amount of end-user deeplink clicks. We would expect between 5% and 20% of all user-generated live pricing create sessions to result in an end-user booking deeplink to airlines/OTAs, depending on the type of product you are building and the market(s) you drive traffic in. To achieve that rate, it is important that there is clear intent from the user in a particular query (including exact dates) before a Live Pricing session is created.

This query contains all the main parameters to perform a Live Pricing Service Call. Origin, destination, and dates are known.

This example doesn’t have exact dates. Possible options are to show indicative pricing using the [Flights Indicative Pricing API](/docs/flights-indicative-prices/overview)
, or to prompt the user to add dates.
* **Live Pricing Service calls are only made on user-generated requests. Automated requests (calls without user action) to the Live Pricing Service do not occur**
* **Live Pricing Service calls are only made when all elements of the search (exact O&D pair, dates of travel) are known**
* **The partner users [Flights Indicative Pricing API](/docs/flights-indicative-prices/overview)
when one or more of these parameters is unknown or not specified by the user**
### Click Quality[](#click-quality "Direct link to Click Quality")
Skyscanner tracks revenue based on the value of each end-user deeplink that occurs through your affiliate product. Each deeplink to a particular airline/OTA has an estimated CPC value assigned to it, based on the airline/OTAs commercial terms with Skyscanner and their click to sale conversion rate. In order to base revenue tracking on Skyscanner commercial terms and rates, we require each end-user deeplink through your product to be of the same quality as a Skyscanner end-user deeplink. This is mainly achieved by ensuring that users are as informed about their chosen itinerary before deeplinking as they would be on Skyscanner.
* The user should be reasonably informed of the following information before a deeplink can be made:
* Origin and destination of all legs/flights of the itinerary
* Dates of travel for all legs/flights
* Local times of departure for all legs/flights
* Visible indication if flight is Direct or Indirect
* Number of Stopovers if flight is Indirect
* Stopover airports with time of departures
* Carrier for all legs/flights
* Booking agent
* Price comparison across multiple itineraries
* The user can deeplink to a Skyscanner partner by clicking on a visible button on the flight result or on Booking Agent / Price link. These are the only clickable parts of the itinerary box which result in a deeplink to an airline/OTA partner
* The main carrier for each leg is listed on the flight result without the need to click or reveal anything
* Users are not able to deeplink to an airline/OTA directly from a banner, newsletter or other promotional material
* Booking agent loads in a new tab and that tab is unobscured by any other window when the user deeplinks
* There is a clear unobscured link which allows users to get full details of the flights
* Users can understand what the airport code means without having to open full details. This can be a hover/click on the code, or written out in full in the itinerary box.
Desirable[](#desirable "Direct link to Desirable")
----------------------------------------------------
### Text Colour[](#text-colour "Direct link to Text Colour")
Below are some non-essential best practices which you should consider including in the design of your product:  Skyscanner uses text colour (red for indirect, green for direct) as well as a visual indicator to denote stops.
* [Essential](#essential)
* [Arrival Times and Durations](#arrival-times-and-durations)
* [Skyscanner logo](#skyscanner-logo)
* [Look to Book](#look-to-book)
* [Click Quality](#click-quality)
* [Desirable](#desirable)
* [Text Colour](#text-colour)
---
# Tracking | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
How is traffic tracked?[](#how-is-traffic-tracked "Direct link to How is traffic tracked?")
---------------------------------------------------------------------------------------------
We partner with [Impact](https://impact.com/)
to track all traffic coming from your flight search product to Skyscanner, and to pay you a share of commission for the traffic you're sending to our supply partners.
info
You should have been setup on Impact when onboarding to the Skyscanner Affiliate Program, and your Impact Ids will have been linked to your API key by us.
Additional tracking parameters[](#additional-tracking-parameters "Direct link to Additional tracking parameters")
-------------------------------------------------------------------------------------------------------------------
It's possible to add additional tracking parameters to your deeplinks, which will be available to you in your Impact reports. This can be useful to identify traffic based on custom parameters such as keyword, campaign or product.
We recommend using the following parameter for any additional tracking you require:
| Parameter | Type | Limit |
| --- | --- | --- |
| subid2 | Alphanumeric
_Note: If you need to use non-alphanumeric characters, you may consider using `sharedid`_. | 255 Characters |
#### Example[](#example "Direct link to Example")
[https://agw.skyscnr.com/v1/redirect?pageUrl=\[...\]&impactMediaPartnerId=3107191](https://agw.skyscnr.com/v1/redirect?pageUrl=%5B...%5D&impactMediaPartnerId=3107191)
**&subid2=blackfriday24**
tip
We highly recommend using the parameter above for additional tracking. You will be able to view the tracking parameters and associated values in Impact. For more information, please see Impact's [help page](https://help.impact.com/en/support/solutions/articles/48001235417-sub-id-shared-id-parameters-explained-for-partners#:~:text=These%20are%20called%20Sub%20IDs,when%20linking%20users%20to%20advertisers)
caution
**Do not** include PII data (like customer emails) in your tracking parameters. If you are a cashback or subnetwork partner, please get in touch with your account manager.
caution
**Do not** not remove or change any encoding on the links and should serve them as-is to travellers as this can break tracking.
* [How is traffic tracked?](#how-is-traffic-tracked)
* [Additional tracking parameters](#additional-tracking-parameters)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Carriers API returns a full list of active carriers with name and IATA code indexed by their `carrierId`.
This is the same `carrierId` from [Flights Live Prices API reference](/api/flights-live-pricing#tag/FlightsService/operation/FlightsService_CreateSearch)
and [Flights Indicative API reference](/api/flights-indicative#tag/FlightsIndicativeService/operation/FlightsIndicativeService_Search)
.
The `carrierId` is in the same format e.g. `-32677`.
This endpoint can be used to get up-to-date IATA code mappings following the internal Skyscanner carriers database.
Sample request[](#sample-request "Direct link to Sample request")
-------------------------------------------------------------------
### `/flights/carriers`[](#flightscarriers "Direct link to flightscarriers")
curl --request GET 'https://partners.api.skyscanner.net/apiservices/v3/flights/carriers' --header 'x-api-key: your-api-key'
Response[](#response "Direct link to Response")
-------------------------------------------------
The response contains a `carriers` field that has a list of carriers indexed by `carrierId`.
| Field name | Description |
| --- | --- |
| `name` | The legal name of the carrier |
| `iata` | The IATA code of the carrier |
| `icao` | The ICAO code of the carrier |
| `displayCode` | The code which should be used to prefix flight numbers. This field should be used as some airlines have a preferred notation for their flight codes of using ICAO instead of IATA codes (or vice versa). E.g.: EasyJet has an IATA code of U2 but displayCode of EZY, so the resulting flight number should be EZY123. |
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please see [Carriers API reference](/api/carriers)
.
* [Introduction](#introduction)
* [Sample request](#sample-request)
* [`/flights/carriers`](#flightscarriers)
* [Response](#response)
* [API documentation](#api-documentation)
---
# Dates | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Overview[](#overview "Direct link to Overview")
-------------------------------------------------
When providing dates to the Affiliates Link API, it's important to be aware of scenarios that produce valid searches, and avoid creating scenarios that would result in invalid searches.
It's also important to understand how dates are validated, and how we handle searches across different time zones.
### Date Validation[](#date-validation "Direct link to Date Validation")
The Affiliates Link API validates against the format of dates provided, but it doesn't validate the values.
It's important to be aware of this, as providing dates that create invalid searches may result in unexpected results when landing on Skyscanner, such as dates being changed, or redirection to an alternative page type to ensure we provide the best results to the traveller.
Examples of some invalid scenarios are described below, but we recommend to check that links generated result in the expected result.
### Time Zones[](#time-zones "Direct link to Time Zones")
To avoid dealing with the complexity of time zones, we always consider dates as being local to the given location. This means that the travellers time zone makes no difference to the returned flight results.
Consider the following example:
Flight search from New York to London
A traveller is in London, UK, and they search for a flight from New York to Paris on 1st February. The results will be for flights that leave between 00:00 - 23:59 New York time (GMT-4), not between 00:00 - 23:59 London time (GMT).
### Historical searches[](#historical-searches "Direct link to Historical searches")
We don't support searches for any dates that are in the past, so this should be avoided completely.
### Same day searches[](#same-day-searches "Direct link to Same day searches")
We accept same day searches for flights, hotels and car hire, but we suggest being particularly cautious when doing this.
Be aware of how we handle time zones and the fact that a given location may now be observing the next day.
Consider the following example:
Same day flight search across time zones
A traveller is in London, UK, where the time is currently 10pm (UTC) on 1st January. They're searching for last-minute flights for a friend who lives in Sydney, Australia, so they search for a same-day flight from Sydney → London.
In Sydney, the time is currently 8am (UTC+10) on the 2nd January, so to perform a same-day search, the search should be for 2nd January instead of 1st January.
### Furthest allowed dates[](#furthest-allowed-dates "Direct link to Furthest allowed dates")
The furthest dates we allow searches for depends on the vertical.
| Vertical | Furthest date (up to) |
| --- | --- |
| Flights | 12 Months |
| Car Hire | 12 months |
| Hotels | 18 months |
Searching for dates after this may cause unexpected results.
### Hotels[](#hotels "Direct link to Hotels")
For hotel searches, the check-out date must be at least 1 day after the check-in date.
* [Overview](#overview)
* [Date Validation](#date-validation)
* [Time Zones](#time-zones)
* [Historical searches](#historical-searches)
* [Same day searches](#same-day-searches)
* [Furthest allowed dates](#furthest-allowed-dates)
* [Hotels](#hotels)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Car Hire Agents API allows you to retrieve detailed information about valid car hire agents for a specific market.
Sample requests and responses[](#sample-requests-and-responses "Direct link to Sample requests and responses")
----------------------------------------------------------------------------------------------------------------
curl --request GET 'https://partners.api.skyscanner.net/apiservices/v1/carhire/agents/search?market=UK' --header 'x-api-key: your-api-key'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see car hire agents API documentation](/api/carhire-agents)
* [Introduction](#introduction)
* [Sample requests and responses](#sample-requests-and-responses)
* [`/search`](#search)
* [API documentation](#api-documentation)
---
# Examples | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
### Overview[](#overview "Direct link to Overview")
This page includes specific referral link examples for the verticals we support and their associated page types. If you're not familiar with or want to learn more about the verticals and page types Skyscanner supports, you can read more on the dedicated [Verticals and Page Types](/docs/referrals/verticals-and-page-types)
page.
info
If you want to send your users to Skyscanner using a specific `market`, `locale` or `currency`, please check our **[Localisation](/docs/referrals/localisation)
** page for more details. Otherwise, our detection logic will identify where your users are located and redirect them with the correct localisation settings.
We strongly encourage you to try these examples yourselves and try to change some of the parameters in order to get more familiar with the behaviour changes and the Skyscanner pages. You can access our Skyscanner collection (see below) to try out the example links there.
##### Check our Postman collection[](#check-our-postman-collection "Direct link to Check our Postman collection")
[](https://god.gw.postman.com/run-collection/18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7?action=collection%2Ffork&collection-url=entityId%3D18538161-5f231ad5-0a03-4d55-a5c7-843974ab85d7%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
caution
If you receive a `403` response code when testing with Postman, your request may have been `blocked` due to security reasons. As an alternative, you can open and validate your link(s) in your web browser instead.

If there's really a need to send requests in Postman, please contact your account manager, or email . We'll provide you with an access token, which when added to the request, will prevent it from getting blocked.
The access token must be set as HTTP header `x-px-access-token`.
### Flights[](#flights "Direct link to Flights")
You can check all of the supported paramerers for this vertical on the [Flights Parameters](/docs/referrals/flights-parameters)
page.
##### Day view[](#day-view "Direct link to Day view")
In this example, we are redirecting the traveller to our `day-view` page with the origin "Paris Charles de Gaulle Airport (CDG)" and the destination "Edinburgh Airport (EDI)". The outbound date is set to be 7th December 2024.
At the end, we also have 2 tracking parameters set, the `mediaPartnerId` which identifies our partners on [impact.com](https://impact.com/)
, and the `utm_term` that is an optional tracking parameter. You can read more about tracking on our [Tracking](/docs/referrals/tracking)
page.
GET https://skyscanner.net/g/referrals/v1/flights/day-view/?origin=cdg&destination=edi&outboundDate=2024-12-07&utm_term=summer&mediaPartnerId=2850210
##### Browse view[](#browse-view "Direct link to Browse view")
In this example, the user is landing on the `browse-view` page with the origin being a country "France (FR)" and the destination "Edinburgh Airport (EDI)". The outbound date is set to be 7th December 2024. As a result, the user will get flight options from different cities in the UK to the provided destination EDI.
GET https://skyscanner.net/g/referrals/v1/flights/browse-view/?origin=fr&destination=edi&outboundDate=2024-12-07&mediaPartnerId=2850210
In case a destination is not provided, the user is searching to anywhere, meaning flight options for the provided date(s) to different countries are being displayed.
GET https://skyscanner.net/g/referrals/v1/flights/browse-view/?origin=uk&outboundDate=2024-12-07&mediaPartnerId=2850210
Lastly, if date(s) are not provided, the user will see flight options to different countries and when the preferred country and city are chosen, the user will land on the `calendar-month-view` page.
GET https://skyscanner.net/g/referrals/v1/flights/browse-view/?origin=uk&mediaPartnerId=2850210
##### Calendar month view[](#calendar-month-view "Direct link to Calendar month view")
An example with the same origin and destination as above, but in this case the traveller is redirected to the `calendar-month-view` page where they can have an overview of the prices for this route for the current month (as the month is not set).
GET https://skyscanner.net/g/referrals/v1/flights/calendar-month-view/?origin=cdg&destination=edi&utm_term=summer&mediaPartnerId=2850210
##### Multi-City[](#multi-city "Direct link to Multi-City")
This is an example of the `multicity` page where multiple origins and destinations are provided. The traveller will be redirected to the results page where the three routes that are provided will be included.
GET https://skyscanner.net/g/referrals/v1/flights/multicity/?origin0=cdg&date0=2024-10-10&destination0=lond&origin1=lond&date1=2024-10-16&destination1=ams&origin2=ams&date2=2024-10-20&destination2=lis&children=2&childrenv2=2&adultsv2=3&cabinclass=business&mediaPartnerId=2850210¤cy=GBP&locale=en-GB&market=UK
##### Specific departure times[](#specific-departure-times "Direct link to Specific departure times")
In this example, the `departure-time` query parameter configures the first legs departure time to be between 0 (00:00) and 660 minutes (11:00).
GET https://skyscanner.net/g/referrals/v1/flights/day-view?departure-times=0-660&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2024-12-01&inboundDate=2024-12-07
##### Duration of the flight[](#duration-of-the-flight "Direct link to Duration of the flight")
In this example we are specifying the duration of the flight to be limited to 22 hours (1320 minutes).
GET https://skyscanner.net/g/referrals/v1/flights/day-view?duration=1320&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2024-12-01&inboundDate=2024-12-07
##### Preferred alliances[](#preferred-alliances "Direct link to Preferred alliances")
You can also provide a list of preferred alliances. In that case the traveller would be presented with flights that are operated by airlines that are part of the preferred alliance(s).
GET https://skyscanner.net/g/referrals/v1/flights/day-view?alliances=oneworld&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2024-12-01&inboundDate=2024-12-07&mediaPartnerId=2850210
### Hotels[](#hotels "Direct link to Hotels")
You can check all of the supported parameters for this vertical on the [Hotels Parameters](/docs/referrals/hotels-parameters)
page.
##### Day view[](#day-view-1 "Direct link to Day view")
This is an example of the `day-view` page for Hotels and the traveller will be presented with search results for Costa Rica for the provided dates, rooms and number of adults. In order to search for a particular location, the `entity_id` parameter must be set. For more information on the `entity_id` supported values, have a look at the [IATA codes and Entity IDs](/docs/referrals/iata-codes-and-entity-ids)
page.
GET https://skyscanner.net/g/referrals/v1/hotels/day-view?entity_id=29475422&checkin=2024-03-21&checkout=2024-03-22&adults=6&rooms=2&mediaPartnerId=2850210
##### Hotel details[](#hotel-details "Direct link to Hotel details")
In this example, the traveller will be redirected to The Venetian Hotel in Las Vegas, and will be presented with prices for the provided dates, rooms and number of adults.
GET https://skyscanner.net/g/referrals/v1/hotels/hotel-details?hotelId=46948323&checkin=2024-12-01&checkout=2024-12-07&rooms=2&adults=4¤cy=GBP&locale=en-GB&market=UK
### Car Hire[](#car-hire "Direct link to Car Hire")
You can check all of the supported parameters for this vertical on the [Car Hire Parameters](/docs/referrals/cars-parameters)
page.
##### Day view[](#day-view-2 "Direct link to Day view")
In this example the traveller is being redirected to our `day-view` page for the provided pick-up and drop-off place "Barcelona (BCN)". The pick-up date and time is set to December 1st at 12:00, and the drop-off to December 7th at 12:00. The driver age is set to 42, and the Impact identification parameter `mediaPartnerId` is provided as well.
GET https://skyscanner.net/g/referrals/v1/cars/day-view/?pickupPlace=BCN&dropoffPlace=BCN&pickupTime=2024-12-01T12:00&dropoffTime=2024-12-07T12:00&driverAge=42&mediaPartnerId=2850210
info
A successful response contains no content and returns **[HTTP 301](https://en.wikipedia.org/wiki/HTTP_301)
**. The redirect URL is provided in the _Location_ header of the response.
If you wish to look for specific request query parameters per vertical and page type, please refer to the corresponding vertical parameters page. You can easily navigate from [here](/docs/category/affiliates-link-api)
.
* [Overview](#overview)
* [Flights](#flights)
* [Hotels](#hotels)
* [Car Hire](#car-hire)
---
# B2B Pricing Accuracy | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
info
This following section is meant to provide an overview of why pricing inaccuracies occur in the industry, why it is difficult to completely eradicate them, what Skyscanner is doing to improve them, and what actions you, as a Partner, can take to flag and avoid inaccuracies.
Why do Pricing Inaccuracies occur[](#why-do-pricing-inaccuracies-occur "Direct link to Why do Pricing Inaccuracies occur")
----------------------------------------------------------------------------------------------------------------------------
There is a complex distribution ecosystem in the Flights industry, where caching occurs across different layers. Each layer of caching in the flights supply chain can potentially lead to downstream inaccuracies in terms of pricing.
Let us take the example of an OTA. Let’s assume that this OTA receives its supply from multiple GDSs – to improve response speed and decrease the cost of data transfer, each GDS decides to provide offers/pricing to this OTA via caching. Then, the OTA itself, which provides offers/pricing to Skyscanner, decides, for the same reasons (speed & cost) to also use caching when it comes to data transfers with Skyscanner. Looking at the data supply chain that results from this, we can see that there are layers of complexity and caching which all have the potential to cause inaccuracies the further away we move from the original source of the offers.

Accuracy (Speed/Cost Trade-Offs)[](#accuracy-speedcost-trade-offs "Direct link to Accuracy (Speed/Cost Trade-Offs)")
----------------------------------------------------------------------------------------------------------------------
When it comes to Pricing Accuracy, Speed and Cost are the 2 main components that come into the equation, with each affecting the results differently:
* High Accuracy = Low Speed
* High Speed = Low Accuracy
* High Accuracy + High Speed = High Costs
In the complex flight distribution ecosystem, having high accuracy, at high speed, while maintaining costs under control is virtually impossible, and that is why companies must find an optimal balance between these components.
Pricing Inaccuracies within Skyscanner[](#pricing-inaccuracies-within-skyscanner "Direct link to Pricing Inaccuracies within Skyscanner")
-------------------------------------------------------------------------------------------------------------------------------------------
Skyscanner observes prices shown on the Skyscanner site versus the prices shown on our Supply Partners’ sites, for the same itineraries. A pricing inaccuracy is observed/noted when internally determined metrics are outside what is a normal range.
Skyscanner Policies & Initiatives to improve Accuracy[](#skyscanner-policies--initiatives-to-improve-accuracy "Direct link to Skyscanner Policies & Initiatives to improve Accuracy")
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Skyscanner aims at having Pricing Inaccuracies occur on less than 5% of all Redirects to Supply Partners. To reach that goal, Skyscanner has guidelines and rules for its Supply Partners, who are required to maintain inaccuracy levels at a maximum of 5%.
Affiliate/Partner Preventions & Actions[](#affiliatepartner-preventions--actions "Direct link to Affiliate/Partner Preventions & Actions")
--------------------------------------------------------------------------------------------------------------------------------------------
As an Affiliate, there are 2 things that you can do to improve the Price Accuracy you are seeing.
1. Itinerary Refresh API: if you are a B2B API Affiliate, for maximum accuracy, please implement the [Itinerary Refresh](https://developers.skyscanner.net/docs/flights-live-prices/refresh-prices)
within the Flights Live Prices API
2. Report Price Inaccuracies: if you notice any inaccurate prices on your end, please raise them with us when they are identified; the more information, the better, and we will then flag it with our Supply Partners:
* Logs, video recording or screenshots of the inaccurate prices you’re seeing
* Time and Date the Price Inaccuracy was identified
* Market that the search was performed in
* Any other contextual information
If you have any questions on the above, or require more information on the topic, please reach out to your Skyscanner Account Manager or contact us at [partners@skyscanner.net](mailto:partners@skyscanner.net)
* [Why do Pricing Inaccuracies occur](#why-do-pricing-inaccuracies-occur)
* [Accuracy (Speed/Cost Trade-Offs)](#accuracy-speedcost-trade-offs)
* [Pricing Inaccuracies within Skyscanner](#pricing-inaccuracies-within-skyscanner)
* [Skyscanner Policies & Initiatives to improve Accuracy](#skyscanner-policies--initiatives-to-improve-accuracy)
* [Affiliate/Partner Preventions & Actions](#affiliatepartner-preventions--actions)
---
# Impact Links - Quick Start Guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Generating Links in Impact[](#generating-links-in-impact "Direct link to Generating Links in Impact")
-------------------------------------------------------------------------------------------------------
### Quick Start Guide[](#quick-start-guide "Direct link to Quick Start Guide")
If you are not familiar with the procedure of creating referral links using the Impact link generator, you have navigated to the right page. In this guide, we'll walk you through the process of generating referral links in Impact quickly and easily.
#### Step 1: Log in to your Impact account[](#step-1-log-in-to-your-impact-account "Direct link to Step 1: Log in to your Impact account")
The first step is to log in to your Impact account. If you haven't logged in before, you just need to navigate to the [Impact](https://app.impact.com/login.user)
page and use your login credentials. If you don't know the credentials, please contact your account manager.

#### Step 2: Find the Impact link generator[](#step-2-find-the-impact-link-generator "Direct link to Step 2: Find the Impact link generator")
Once logged in, you'll need to find the Impact link generator. It should be located on the screen where you are redirected after logging in on the right-hand side. The title of the link generator should say `CREATE A LINK`.

#### Step 3: Generate your referral link[](#step-3-generate-your-referral-link "Direct link to Step 3: Generate your referral link")
After you have found the Impact link generator, you will notice that there is already a predefined link with `.pxf` notation. That link already contains all the information that identify you as our partner. That link is ready to be used and it will take you to the main Skyscanner page. Alternatively, if you would like to send your users to a specific page on Skyscanner, copy the link that you want to send your users to and paste it in `Enter a Landing Page`. By selecting the ✏️ icon, you can customise the appearance of your hyperlink. Please note that there is a restriction imposed by Impact, where you can have up to 5,000 vanity links at any time. Find out more [here](https://help.impact.com/en/support/solutions/articles/48001237967-create-a-vanity-link)
.

#### Step 4: Include extra parameters to your referral link[](#step-4-include-extra-parameters-to-your-referral-link "Direct link to Step 4: Include extra parameters to your referral link")
To add additional tracking parameters to your links, click on `Advanced` and you can add your own tracking parameters into the `Sub IDs` or `Shared ID` fields. The `Sub ID` and `Shared ID` values are used to distinguish traffic derived from different sources. This will be reported into in your Impact Advanced Action Listing report with the respective fields.

#### Step 5: Start using the referral link[](#step-5-start-using-the-referral-link "Direct link to Step 5: Start using the referral link")
Once you have your referral link ready, you just need to copy it and paste it on the desired location. The link should be ready to be used, it will redirect to the specified page and the traffic you bring to us will be attributed to your Impact account.
### Summary[](#summary "Direct link to Summary")
Generating referral links is a quick and easy process that can help you monetize the traffic you send to Skyscanner. By following these simple steps, you should be all set in no time! If your use case requires you to generate links in bulk, please start going through the Affiliates Link API detailed documentation for more information.
* [Generating Links in Impact](#generating-links-in-impact)
* [Quick Start Guide](#quick-start-guide)
* [Summary](#summary)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Skyscanner Car Hire Agents API allows you to retrieve detailed information about valid car hire agents for a specific market. This information is essential for filtering quotes by agent in the [Car Hire Live Prices API](/docs/carhire-live-prices/overview)
.
The API has a single endpoint that requires a market parameter. It returns comprehensive data on all valid agents for that market, including their agent IDs. These IDs can be used with the `includedAgentIds` and `excludedAgentIds` parameters in the [Car Hire Live Prices API](/docs/carhire-live-prices/overview)
.
Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
This API has 1 endpoint - `/search`.
GET https://partners.api.skyscanner.net/apiservices/v1/carhire/agents/search
Use this endpoint to obtain valid agent IDs and other agent details
Request[](#request "Direct link to Request")
----------------------------------------------
### `/search`[](#search-1 "Direct link to search-1")
#### Required fields[](#required-fields "Direct link to Required fields")
Requests to the `/search` endpoint need to contain the following:
| Query param | Description |
| --- | --- |
| `market` | Get valid agents operating for the specific market. E.g.: `UK` |
* [Introduction](#introduction)
* [Endpoints](#endpoints)
* [`/search`](#search)
* [Request](#request)
* [`/search`](#search-1)
---
# Car Hire Parameters | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
| Page Type | Description | Landing Page |
| --- | --- | --- |
| [home](#carhire-home-view-schema) | Car Hire Home | [Link](https://www.skyscanner.net/carhire) |
| [day-view](#carhire-day-view-schema) | Car Hire Day View | [Link](https://www.skyscanner.net/carhire/results/95565041/95565041/2024-07-01T10:00/2024-07-07T10:00/30) |
For more details on the supported verticals and page types, please visit [Verticals and Page Types](/docs/referrals/verticals-and-page-types)
.
Car Hire Home View Schema[](#car-hire-home-view-schema "Direct link to Car Hire Home View Schema")
----------------------------------------------------------------------------------------------------
/cars/home
A schema definition for the Car Hire home page microsite supported parameters.
Car Hire Home View Properties[](#car-hire-home-view-properties "Direct link to Car Hire Home View Properties")
----------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### market[](#market "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Car Hire Day View Schema[](#car-hire-day-view-schema "Direct link to Car Hire Day View Schema")
-------------------------------------------------------------------------------------------------
/cars/day-view
A schema definition for the Car Hire `day-view` microsite supported parameters.
Car Hire Day View Properties[](#car-hire-day-view-properties "Direct link to Car Hire Day View Properties")
-------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [pickupPlace](#pickupplace) | `string` | Required |
| [dropoffPlace](#dropoffplace) | `string` | Optional |
| [pickupTime](#pickuptime) | `string` | Required |
| [dropoffTime](#dropofftime) | `string` | Required |
| [driverAge](#driverage) | `integer` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### pickupPlace[](#pickupplace "Direct link to pickupPlace")
IATA code for the pick-up place. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### dropoffPlace[](#dropoffplace "Direct link to dropoffPlace")
IATA code for the drop-off place. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### pickupTime[](#pickuptime "Direct link to pickupTime")
Pick-up datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
standard.
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | `YYYY-MM-DDTHH:MM` |
### dropoffTime[](#dropofftime "Direct link to dropoffTime")
Drop-off datetime in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
standard.
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | `YYYY-MM-DDTHH:MM` |
### driverAge[](#driverage "Direct link to driverAge")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | Number between `21` and `99` |
### market[](#market-1 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-1 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-1 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
* [Car Hire Home View Schema](#car-hire-home-view-schema)
* [Car Hire Home View Properties](#car-hire-home-view-properties)
* [market](#market)
* [locale](#locale)
* [currency](#currency)
* [Car Hire Day View Schema](#car-hire-day-view-schema)
* [Car Hire Day View Properties](#car-hire-day-view-properties)
* [pickupPlace](#pickupplace)
* [dropoffPlace](#dropoffplace)
* [pickupTime](#pickuptime)
* [dropoffTime](#dropofftime)
* [driverAge](#driverage)
* [market](#market-1)
* [locale](#locale-1)
* [currency](#currency-1)
---
# Booking Types | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Transfer Types[](#transfer-types "Direct link to Transfer Types")
-------------------------------------------------------------------
An important part in identifying the type of booking is the transfer type, which is defined by the `transferType` field of each pricing option.
It describes the type of transfer when there are multiple segments on an itinerary (more than one flight to get to the destination).
Here are all of the possible transfer types that can be returned by the Flights Live Prices API...
| transferType | Description |
| --- | --- |
| `TRANSFER_TYPE_UNSPECIFIED` | The transfer type is not specified. |
| `TRANSFER_TYPE_MANAGED` | A protected transfer, managed by the agent. If a flight is delayed and the travellers miss their connection, the agent will find alternatives at no extra cost. |
| `TRANSFER_TYPE_SELF_TRANSFER` | A non-protected transfer. The travellers will have multiple booking references. If a flight is delayed and the travellers miss their connection they will have to buy a whole new ticket. |
| `TRANSFER_TYPE_PROTECTED_SELF_TRANSFER` | Self transfer flights that are protected by the online travel agent rather than the airline. If a flight is delayed and the travellers miss their connection they can contact the travel agent to help with the rebooking. |
For more details, please see [What does it mean when I see ‘Non-protected transfers’ or ‘Self-transfer flight’ on Skyscanner?](https://help.skyscanner.net/hc/en-gb/articles/206028971-What-does-it-mean-when-I-see-Non-protected-transfers-or-Self-transfer-flight-on-Skyscanner-)
.
Booking Types[](#booking-types "Direct link to Booking Types")
----------------------------------------------------------------
### Standard (Managed Booking)[](#standard-managed-booking "Direct link to Standard (Managed Booking)")
A standard flight itinerary will have a single agent and a _transferType_ of `TRANSFER_TYPE_MANAGED`.
This includes itineraries with multiple legs and even multiple segments per leg. In this case, the traveller is fully protected by the agent should anything go wrong.
Information
For this type, if there are multiple flights in a single journey, then usually the traveller won’t need to check-in/out their bags, as the transfer will be fully managed.
#### Example response[](#example-response "Direct link to Example response")
The response from the Flights Live Prices API for a standard booking will look similar to the following example...
{ "pricingOptions": [ { "agentIds": ["easy"], // Single agent ✅ "items": [ // Single booking link ✅ { "agentId": "ba", "deepLink": "https://skyscanner.pxf.io/..." } ], "transferType": "TRANSFER_TYPE_MANAGED" // Transfer type is TRANSFER_TYPE_MANAGED ✅ } ]}
### OTA Virtual Interlines[](#ota-virtual-interlines "Direct link to OTA Virtual Interlines")
For some itineraries, an OTA will piece together different flights that are not part of the same airline or that don’t have a commercial agreement.
At Skyscanner, we call this an "OTA Virtual Interline", and you can read more information about them and how we implement them at Skyscanner [here](/docs/flights-live-prices/ota-virtual-interlines)
.
In this case, the traveller is also usually covered by OTA should anything go wrong.
Although there is still a single booking managed by the OTA (and therefore a single booking link), there may be multiple Booking IDs under the hood, for each separate flight.
For this type, if there are multiple flights in a single journey, then usually the traveller WILL need to check in/out their bags, as it will not be handled by the airline automatically.
Important
We **HIGHLY RECOMMEND** making your traveller aware of the self transfer **AND** to check the level protection/cover with the OTA if something goes wrong.
#### Example response[](#example-response-1 "Direct link to Example response")
The response from the Flights Live Prices API for an OTA Virtual Interline will look similar to the following example...
{ "pricingOptions": [ { "agentIds": ["skyp"], // Single agent ✅ "items": [ // Single booking link ✅ { "agentId": "skyp", "deepLink": "https://skyscanner.pxf.io/..." } ], "transferType": "TRANSFER_TYPE_PROTECTED_SELF_TRANSFER" // Transfer type is TRANSFER_TYPE_PROTECTED_SELF_TRANSFER ✅ } ]}
### Mash-ups[](#mash-ups "Direct link to Mash-ups")
In other cases, Skyscanner will piece together different flights from various agents or airlines.
At Skyscanner, we call this a "Mash-up", and you can read more information about them and how we implement them at Skyscanner [here](/docs/flights-live-prices/mash-ups)
.
Because of this, there will be multiple links for the traveller to book each part of their journey separately.
There are 2 types of mash-up we have at Skyscanner...
### Sum-of-one-ways[](#sum-of-one-ways "Direct link to Sum-of-one-ways")
An itinerary may require separate bookings for each leg. We call this type of mash-up a "Sum-of-one-ways".
Important
We **HIGHLY RECOMMEND** informing your traveller to open each booking link severalty first before booking each flight, to ensure their is availability for all parts of their journey.
Important
We **HIGHLY RECOMMEND** making your traveller aware of the lack of protection/cover if something goes wrong.
#### Example response[](#example-response-2 "Direct link to Example response")
The response from the Flights Live Prices API for a Sum-of-one-ways mash-up will look similar to the following example...
{ "pricingOptions": [ { "agentIds": ["easy", "ryan"], // Multiple agents ✅ "items": [ // Multiple booking links - link for each leg ✅ { "agentId": "easy", "deepLink": "https://skyscanner.pxf.io/..." }, { "agentId": "ryan", "deepLink": "https://skyscanner.pxf.io/..." } ] } ], "legIds": [ // Multiple legs ✅ "13554...", "11235...", ]}
### Non Protected Self Transfer[](#non-protected-self-transfer "Direct link to Non Protected Self Transfer")
A Skyscanner mash-up may also require the traveller to check in/out their bags if we’ve pieced together different flights for the same leg. We call this type of mash-up a “Non Protected Self Transfer”.
In this case, there will be multiple booking links for a single leg (one for each segment).
Important
We **HIGHLY RECOMMEND** informing your traveller to open each booking link severalty first before booking each flight, to ensure their is availability for all parts of their journey.
Important
We also **HIGHLY RECOMMEND** making your traveller aware of the self transfer **AND** the lack of protection/cover if something goes wrong.
#### Example response[](#example-response-3 "Direct link to Example response")
The response from the Flights Live Prices API for a Non Protected Self Transfer mash-up will look similar to the following example...
{ "pricingOptions": [ { "agentIds": ["easy", "ryan"], // Multiple agents ✅ "items": [ // Multiple booking links - link for each segment ✅ { "agentId": "easy", "deepLink": "https://skyscanner.pxf.io/..." }, { "agentId": "ryan", "deepLink": "https://skyscanner.pxf.io/..." } ], "transferType": "TRANSFER_TYPE_SELF_TRANSFER" // Transfer type is TRANSFER_TYPE_SELF_TRANSFER ✅ } ]}
Combinations[](#combinations "Direct link to Combinations")
-------------------------------------------------------------
In some cases, there could be a combination of booking types, for example, a non-protected self-transfer for the outbound, and a managed transfer for the inbound.
In these cases, pay extra attention to the information highlighted to the traveller, to ensure they are best informed before proceeding with the booking.
Minimum recommendations[](#minimum-recommendations "Direct link to Minimum recommendations")
----------------------------------------------------------------------------------------------
At a minimum, we **highly recommend** to do the following...
| Condition | Recommendations |
| --- | --- |
| `transferType` is `TRANSFER_TYPE_SELF_TRANSFER` | ✅ Highlight to the user there is a self transfer and provide clear information about what they need do, e.g. re-check their baggage.
✅ Highlight to the user the risks and lack of protection/cover between the parts of their journey, and provide all relevant information. |
| `transferType` is `TRANSFER_TYPE_PROTECTED_SELF_TRANSFER` | ✅ Recommend to the user to check the level of protection/cover provided by the OTA if something goes wrong.
✅ Highlight to the user there is a self transfer and provide clear information about what they need do, e.g. re-check their baggage. |
| Itinerary is a "Sum-of-one-ways" mash-up | ✅ Highlight to the user the risks and lack of protection/cover between the legs of their journey, and provide all relevant information. |
| Multiple _items_/_deeplinks_ for a _pricingOption_ | ✅ Make it **very** clear that the user **must make multiple bookings** - they **MUST** visit all links and book separate tickets to complete booking their full itinerary.
✅ Recommend users **open all links in their browser first** to ensure each agent has availability before booking each flight. |
* [Transfer Types](#transfer-types)
* [Booking Types](#booking-types)
* [Standard (Managed Booking)](#standard-managed-booking)
* [OTA Virtual Interlines](#ota-virtual-interlines)
* [Mash-ups](#mash-ups)
* [Sum-of-one-ways](#sum-of-one-ways)
* [Non Protected Self Transfer](#non-protected-self-transfer)
* [Combinations](#combinations)
* [Minimum recommendations](#minimum-recommendations)
---
# Verticals and Page Types | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Overview[](#overview "Direct link to Overview")
-------------------------------------------------
This space aims to provide an overview of the different verticals and page types we support when generating referral links. Understanding the different concepts is crucial in using our product effectively. In this documentation, we will explore the three verticals and different Skyscanner page types per vertical that you may redirect your audience to. We will discuss the purpose of each page type and provide a brief description of their key benefits. By the end of this documentation, you will have a better understanding of the verticals and different page types, and how to use them effectively to create referral links and redirect traffic to Skyscanner.
Skyscanner offers a variaty of pages to help travellers search for and book flights, hotels, and cars. Each page is designed to provide the traveller with the information they need to make the right travel decisions.
| Vertical | Page Types |
| --- | --- |
| Flights | home, day-view, calendar-month-view, browse-view, multicity, cheap-flights-to, flights-airline |
| Hotels | home-view, day-view, hotel-details |
| Car Hire | home, day-view |
Verticals[](#verticals "Direct link to Verticals")
----------------------------------------------------
Skyscanner currently supports three verticals: [Flights](https://www.skyscanner.net/flights)
, [Hotels](https://www.skyscanner.net/hotels)
and [Car Hire](https://www.skyscanner.net/carhire)
. With these three verticals, we aim to offer travellers everything they need for their trip.
Page Types[](#page-types "Direct link to Page Types")
-------------------------------------------------------
Skyscanner offers different page types per vertical to help users navigate through the website and find the travel arrangements that suit their needs best. Here is a detailed overview of the different page types we support for each vertical:
### Flights[](#flights "Direct link to Flights")
#### Home[](#home "Direct link to Home")
This page type is the `home` page for the Flights vertical. On this page the user can perform a flights search according to their plans and needs.

#### Day View[](#day-view "Direct link to Day View")
The `day-view` page type is what we call the page that provides all the search results from the user's provided parameters.

#### Calendar Month View[](#calendar-month-view "Direct link to Calendar Month View")
The `calendar-month-view` page type gives us an overview of the prices for a predefined route during the whole month that was chosen by the user. After selecting the dates of travel, users are redirected to the `day-view` page.

#### Browse View[](#browse-view "Direct link to Browse View")
When the origin or destination is a country, or the traveller wants to explore "Everywhere", Skyscanner will respond with a page that contains results to various cities or countries, and displays indicative prices. We call this page type `browse-view`.

#### Multi-City[](#multi-city "Direct link to Multi-City")
The `multicity` page type offers searching for flights for more than one route.

#### Cheap flights to[](#cheap-flights-to "Direct link to Cheap flights to")
The `cheap-flights-to` page type consists of pages that will preview results for cheap flights to a predefined destination. The destination can be an airport, city, country, region or continent. For example: [Cheap Flights to Scotland](https://www.skyscanner.net/flights/flights-to-region/44293286/cheap-flights-to-scotland.html)
and [Cheap Flights to Glasgow International Airport](https://www.skyscanner.net/flights-to/gla/cheap-flights-to-glasgow-international-airport.html)
.

#### Flights Airline[](#flights-airline "Direct link to Flights Airline")
The `flights-airline` page type consists of pages that will preview results for flights offered from a predefined airline. The destination, if provided, can be an airport, city, country, region or continent. The [China Eastern flights to Shanghai Pu Dong](https://www.skyscanner.net/flights/airline-flights-to-airport/pvg/china-eastern-mu/cheap-flights-with-china-eastern-mu-flights-to-shanghai-pu-dong.html)
is an example of this page type.

### Hotels[](#hotels "Direct link to Hotels")
#### Home[](#home-1 "Direct link to Home")
This page type is the `home` page for the Hotels vertical. On this page the user can perform a search for hotels according to their plans and needs.

#### Day View[](#day-view-1 "Direct link to Day View")
The `day-view` page type is what we call the page that provides all the search results from the user's provided parameters.

##### Hotel Details[](#hotel-details "Direct link to Hotel Details")
This page type provides details for a specific hotel. You can check out the following example: [Hyde Park Executive Apartments](https://www.skyscanner.net/hotels/united-kingdom/london-hotels/hyde-park-executive-apartments/ht-46976644)
.

### Car Hire[](#car-hire "Direct link to Car Hire")
#### Home[](#home-2 "Direct link to Home")
This page type is the `home` page for the Car Hire vertical. On this page the user can perform a search for a car rental according to their plans and needs.

#### Day View[](#day-view-2 "Direct link to Day View")
The `day-view` page type is what we call the page that provides all the search results from the user's provided parameters.

Summary[](#summary "Direct link to Summary")
----------------------------------------------
If you have come to this section, you should have a much better understanding of the verticals and page types Skyscanner offers. If you would like to look at specific referral link examples for the various verticals and page types including parameters, please check out our [Examples](/docs/referrals/examples)
page.
* [Overview](#overview)
* [Verticals](#verticals)
* [Page Types](#page-types)
* [Flights](#flights)
* [Hotels](#hotels)
* [Car Hire](#car-hire)
* [Summary](#summary)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Flights Live Prices API is used to search for, and return flight prices for a given route and set of dates.
The API takes an origin and destination for a given date and returns a list of possible flights that will be bookable by travellers.
tip
You can see examples of the create endpoint with this postman collection: [](https://god.gw.postman.com/run-collection/18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910?action=collection%2Ffork&collection-url=entityId%3D18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
tip
You can see examples of the poll endpoint with this postman collection: [](https://god.gw.postman.com/run-collection/18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910?action=collection%2Ffork&collection-url=entityId%3D18538161-586d1dc3-e4a1-45b6-b83d-36417b75d910%26entityType%3Dcollection%26workspaceId%3D8e0f947f-e0b9-4761-86da-2a878f98110b)
How we use it at Skyscanner[](#how-we-use-it-at-skyscanner "Direct link to How we use it at Skyscanner")
----------------------------------------------------------------------------------------------------------
We use the `/create` and `/poll` Flights Live Prices endpoints to power flight searches on our [main website](https://skyscanner.net)
.
When a user initiates a flight search, the first results (displayed immediately after clicking the 'search' button) are populated using the `/create` endpoint.

We do this to reduce the **time to first result** which gives travellers a better experience.
The rest of the results are retrieved from `/poll` endpoint. To the user, they see this as more results populating the results page and as the loading indicator progresses.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/flights/lond/edi/240817/240824/?adultsv2=1&cabinclass=economy&childrenv2=&inboundaltsenabled=false&outboundaltsenabled=false&preferdirects=false)
.
Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
This API has 2 endpoints, `/create` and `/poll`.
### `/create`[](#create "Direct link to create")
POST https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create
`/create` is used to initiate the search request. This endpoint returns an incomplete cached subset of results for a quicker **time to first result**.
### `/poll`[](#poll "Direct link to poll")
POST https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/{sessionToken}
`/poll` is used to retrieve the complete list of results. This usually takes some amount of time as our backend makes calls to our full list of supply partners for inventories. The `/poll` endpoint is invoked with a `sessionToken` which is returned in the result of the `/create` call.
Concepts[](#concepts "Direct link to Concepts")
-------------------------------------------------
### Create and poll workflow[](#create-and-poll-workflow "Direct link to Create and poll workflow")
There is a large variance in the **time to first result** and the **time to last result** as some supply partners take longer to return inventory results. Often, the best itineraries are returned from supply partners that take longer to return results. This is why the API workflow has been split into the `/create` and `/poll` endpoints.
tip
To learn more about the create and poll workflow, please see our [create and poll guide](/docs/getting-started/create-and-poll)
Request[](#request "Direct link to Request")
----------------------------------------------
### `/create`[](#create-1 "Direct link to create-1")
#### Required fields[](#required-fields "Direct link to Required fields")
Requests to the `/create` endpoint need to contain the following:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g.: `UK` |
| `locale` | Language to be used for the search. E.g.: `en-GB` |
| `currency` | Currency that the search result prices are returned in. E.g.: `GBP` |
| `queryLegs` | origin and destination for the given search. See [flights live prices API documentation](/api/flights-live-pricing)
for format |
| `adults` | number of adults traveling |
#### Optional fields[](#optional-fields "Direct link to Optional fields")
Below are additional optional fields to modify the outcome of the request:
| Field name | Description |
| --- | --- |
| `childrenAges` | number of children traveling |
| Include carriers and agents | options for search result to only contain inventory from specified carriers (airlines) and / or agents (OTAs) |
| Exclude carrier and agents | options for search result to exclude inventory from specified carriers and / or agents |
| `includeSustainabilityData` | option for search to include [flights emissions data](/docs/getting-started/flights-emissions-data)
. Defaults to `true` |
| `nearbyAirports` | option for search to include nearby airports instead of the specified airport. Defaults to `false` |
| `cabinClass` | class of travel to search for |
### `/poll`[](#poll-1 "Direct link to poll-1")
The `/create` endpoint will return a `sessionToken` in the response which is used to invoke the `/poll` endpoint.
POST https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/{ADD SESSION TOKEN}
info
The `sessionToken` expires after around an hour.
In this case, the API will return the following 400 response:
`No sessions were found for the session token. Please retry with a new createSearch session`
If the token is expired, you should use the `createSearch` endpoint and create a new sessionToken
Response `/create` and `/poll`[](#response-create-and-poll "Direct link to response-create-and-poll")
-------------------------------------------------------------------------------------------------------
### Fields[](#fields "Direct link to Fields")
| Field name | Description |
| --- | --- |
| `Status` | Indicates status of the search request is `running` or `completed` |
| `Action` | Indicates how to treat the `SearchResults` contained in a `SearchContent`. Prior results should only be replaced if the action is explicitly RESULT\_ACTION\_REPLACED. |
| `Itineraries` | Bookable itinerary which corresponds with what was requested in the search. A return trip will consist of 2 `legs`, while a one-way trip will consist of 1 `leg`. An `itinerary` will contain a `deepLink` field which takes the traveler to the booking page. |
| `Leg` | Includes details about the flight leg from destination to origin. A leg has 1 segment if it is a direct flight, and can have multiple segments if there are multiple stopovers. |
| `Segment` | Shows the individual stops in a `leg`. I.e.: if a `leg` has 1 stop, the `segment` will show details about the stopover such as the length of time and where the stopover location is. |
| `Places` | Shows the individual stops in a `leg`. I.e.: if a `leg` has 1 stop, the `segment` will show details about the stopover such as the length of time and where the stopover location is. |
| `Carriers` | Similar to `places`, `carriers` contains information about the airlines referenced in `itineraries`. |
| `Agents` | Similar to `places`, `agents` contains information about the OTAs referenced in `itineraries`. |
| `Stats` | Provides meta information regarding the itineraries returned. It contains the `minPrice`, `minDurtation`, `maxDuration` of the flights and also an aggregated object `stops` which contains the data of how are direct, have 1 stop, or multiple stops. Stats can be useful to get fastest/ longest trip amongst other things. |
| `Sorting options` | Sorting options are used to help sort itineraries based on a preferred criteria. |
* [Introduction](#introduction)
* [How we use it at Skyscanner](#how-we-use-it-at-skyscanner)
* [Endpoints](#endpoints)
* [`/create`](#create)
* [`/poll`](#poll)
* [Concepts](#concepts)
* [Create and poll workflow](#create-and-poll-workflow)
* [Request](#request)
* [`/create`](#create-1)
* [`/poll`](#poll-1)
* [Response `/create` and `/poll`](#response-create-and-poll)
* [Fields](#fields)
---
# Hotels Parameters | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
| Page Type | Description | Landing Page |
| --- | --- | --- |
| [home-view](#hotels-home-view-schema) | Hotels Home | [Link](https://www.skyscanner.net/hotels) |
| [day-view](#hotels-day-view-schema) | Hotels Day View | [Link](https://www.skyscanner.net/hotels/search?entity_id=27544008&checkin=2024-07-01&checkout=2024-07-07) |
| [hotel-details](#hotel-details-schema) | Hotel Details | [Link](https://www.skyscanner.net/hotels/united-kingdom/london-hotels/mercure-london-heathrow-airport/ht-133231627?checkin=2024-07-01&checkout=2024-07-07&clicked_details_partner=h_ly&clicked_details_price=42¤cy=GBP&locale=en-GB&market=UK&priceType=price-per-night) |
For more details on the supported verticals and page types, please visit [Verticals and Page Types](/docs/referrals/verticals-and-page-types)
.
Hotels Home View Schema[](#hotels-home-view-schema "Direct link to Hotels Home View Schema")
----------------------------------------------------------------------------------------------
/hotels/home-view
A schema definition for the hotels home-view microsite supported parameters.
Hotels Home View Properties[](#hotels-home-view-properties "Direct link to Hotels Home View Properties")
----------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [checkin](#checkin) | `string` | Optional |
| [checkout](#checkout) | `string` | Optional |
| [adults](#adults) | `integer` | Optional |
| [rooms](#rooms) | `integer` | Optional |
| [skyscanner\_node\_code](#skyscanner_node_code) | `string` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### checkin[](#checkin "Direct link to checkin")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### checkout[](#checkout "Direct link to checkout")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### adults[](#adults "Direct link to adults")
Number of adults. The number of adults should be **greater than or equal** to the number of rooms.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `2` |
### rooms[](#rooms "Direct link to rooms")
Number of rooms. The number of rooms should be **less than or equal** to the number of adults.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `1` |
### skyscanner\_node\_code[](#skyscanner_node_code "Direct link to skyscanner_node_code")
The IATA code of the destination. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Search IATA Codes](https://www.iata.org/en/publications/directories/code-search/)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### market[](#market "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Hotels Day View Schema[](#hotels-day-view-schema "Direct link to Hotels Day View Schema")
-------------------------------------------------------------------------------------------
/hotels/day-view
A schema definition for the hotels `day-view` microsite supported parameters.
Hotels Day View Properties[](#hotels-day-view-properties "Direct link to Hotels Day View Properties")
-------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [entity\_id](#entity_id) | `string` | Required |
| [checkin](#checkin) | `string` | Optional |
| [checkout](#checkout) | `string` | Optional |
| [adults](#adults) | `integer` | Optional |
| [rooms](#rooms) | `integer` | Optional |
| [sort](#sort) | `string` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### entity\_id[](#entity_id "Direct link to entity_id")
The ID of the geo location for which the search will be performed.
For more information on the `entity_id` supported values, have a look at the [IATA codes and Entity IDs](/docs/referrals/iata-codes-and-entity-ids)
page.
| Required | Type |
| --- | --- |
| Required | `string` |
### checkin[](#checkin-1 "Direct link to checkin")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### checkout[](#checkout-1 "Direct link to checkout")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### adults[](#adults-1 "Direct link to adults")
Number of adults. The number of adults should be **greater than or equal** to the number of rooms.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `2` |
### rooms[](#rooms-1 "Direct link to rooms")
Number of rooms. The number of rooms should be **less than or equal** to the number of adults.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `1` |
### sort[](#sort "Direct link to sort")
Defines the order in which search results appear. If not specified, results will be sorted by `best`.
[Learn more](https://www.skyscanner.net/media/regulation-2019-1150-platform-to-business-regulation#:~:text=and%20commission%20level.-,For%20Accommodation,-As%20with%20Flights)
| Required | Type |
| --- | --- |
| Optional | `enum` |
The value of this property must be equal to one of the following values:
| ENUM values | Explanation |
| --- | --- |
| `price` | Sorts by price in `ascending` order |
| `-price` | Sorts by price in `descending` order |
| `distance` | Sorts by distance from the city centre in `ascending` order |
| `-hotel_rating` | Sorts by hotel rating in `descending` order |
| `stars` | Sorts by hotel stars in `ascending` order |
| `-stars` | Sorts by hotel stars in `descending` order |
### market[](#market-1 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-1 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-1 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Hotel Details Schema[](#hotel-details-schema "Direct link to Hotel Details Schema")
-------------------------------------------------------------------------------------
/hotels/hotel-details
A schema definition for the hotel details microsite supported parameters.
Hotel Details Properties[](#hotel-details-properties "Direct link to Hotel Details Properties")
-------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [hotelId](#hotelid) | `string` | Required |
| [checkin](#checkin) | `string` | Optional |
| [checkout](#checkout) | `string` | Optional |
| [adults](#adults) | `integer` | Optional |
| [rooms](#rooms) | `integer` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### hotelId[](#hotelid "Direct link to hotelId")
The entity ID of the hotel.
For more information on the `hotelId` supported values, have a look at the [IATA codes and Entity IDs](/docs/referrals/iata-codes-and-entity-ids)
page.
| Required | Type |
| --- | --- |
| Required | `string` |
### checkin[](#checkin-2 "Direct link to checkin")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### checkout[](#checkout-2 "Direct link to checkout")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### adults[](#adults-2 "Direct link to adults")
Number of adults. The number of adults should be **greater than or equal** to the number of rooms.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `2` |
### rooms[](#rooms-2 "Direct link to rooms")
Number of rooms. The number of rooms should be **less than or equal** to the number of adults.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `1` |
### market[](#market-2 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-2 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-2 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
* [Hotels Home View Schema](#hotels-home-view-schema)
* [Hotels Home View Properties](#hotels-home-view-properties)
* [checkin](#checkin)
* [checkout](#checkout)
* [adults](#adults)
* [rooms](#rooms)
* [skyscanner\_node\_code](#skyscanner_node_code)
* [market](#market)
* [locale](#locale)
* [currency](#currency)
* [Hotels Day View Schema](#hotels-day-view-schema)
* [Hotels Day View Properties](#hotels-day-view-properties)
* [entity\_id](#entity_id)
* [checkin](#checkin-1)
* [checkout](#checkout-1)
* [adults](#adults-1)
* [rooms](#rooms-1)
* [sort](#sort)
* [market](#market-1)
* [locale](#locale-1)
* [currency](#currency-1)
* [Hotel Details Schema](#hotel-details-schema)
* [Hotel Details Properties](#hotel-details-properties)
* [hotelId](#hotelid)
* [checkin](#checkin-2)
* [checkout](#checkout-2)
* [adults](#adults-2)
* [rooms](#rooms-2)
* [market](#market-2)
* [locale](#locale-2)
* [currency](#currency-2)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Flights Live Prices API is built on top of Skyscanner's flight search stack and gives the current best prices of flights for a given search request. The flight prices are retrieved in real time from our airline and inventory partners each time a search request is received.
Sample requests[](#sample-requests "Direct link to Sample requests")
----------------------------------------------------------------------
### `/create`[](#create "Direct link to create")
curl --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/create' --header 'x-api-key: your-api-key' --data ' {"query":{"market":"UK","locale":"en-GB","currency":"GBP","query_legs":[{"origin_place_id":{"iata":"LHR"},"destination_place_id":{"iata":"SIN"},"date":{"year":2024,"month":12,"day":22}}],"adults":1,"cabin_class":"CABIN_CLASS_ECONOMY"}}'
### `/poll`[](#poll "Direct link to poll")
In the response from the `createSearch` retrieve the `sessionToken` and paste it in the `pollSearch` URI replacing the `SESSION_TOKEN` placeholder as below:
curl --location --request POST 'https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/SESSION_TOKEN' --header 'x-api-key: your-api-key'
API documentation[](#api-documentation "Direct link to API documentation")
----------------------------------------------------------------------------
For more information please [see flights live prices API documentation](/api/flights-live-pricing)
* [Introduction](#introduction)
* [Sample requests](#sample-requests)
* [`/create`](#create)
* [`/poll`](#poll)
* [API documentation](#api-documentation)
---
# Currencies | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
GET https://partners.api.skyscanner.net/apiservices/v3/culture/currencies
Response[](#response "Direct link to Response")
-------------------------------------------------
The `/currencies` endpoint returns a `currencies` list containing objects with the following fields:
| Field name | Description |
| --- | --- |
| `code` | Currency code, e.g.: `GBP` for the Pound |
| `symbol` | Currency symbol, e.g.: `£` |
| `thousandsSeparator` | The string for thousands separation |
| `decimalSeparator` | The string for decimal separation |
| `symbolOnLeft` | Whether to show the currency symbol on the left or right. |
| `spaceBetweenAmountAndSymbol` | Whether to include a space between the amount and symbol. |
| `decimalDigits` | The number of digits shown after the decimal separator |
* [Endpoint](#endpoint)
* [Response](#response)
---
# Locales | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
GET https://partners.api.skyscanner.net/apiservices/v3/culture/locales
Response[](#response "Direct link to Response")
-------------------------------------------------
The `/locales` endpoint returns a `locales` list containing objects with the following fields:
| Field name | Description |
| --- | --- |
| `code` | Locale code, e.g.: `en-GB` |
| `name` | The locale name, e.g.: `English (United Kingdom)` |
* [Endpoint](#endpoint)
* [Response](#response)
---
# Nearest culture | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
GET https://partners.api.skyscanner.net/apiservices/v3/culture/nearestculture?ipAddress={ipAddress}
Request[](#request "Direct link to Request")
----------------------------------------------
You will need to pass the IP address of the user as a query parameter.
| Query parameter | Description |
| --- | --- |
| `ipAddress` | The IP address of the user |
Response[](#response "Direct link to Response")
-------------------------------------------------
The endpoint will return the market, locale and currency. For the response structure check the API spec [here](/api/culture/#tag/CultureService/operation/CultureService_GetNearestCulture)
.
* [Endpoint](#endpoint)
* [Request](#request)
* [Response](#response)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Car Hire Live Prices API is used to search for and return car hire quotes for any time window from current day until one year from current day.
The API takes a pick-up location and optionally a drop-off location for a given period of time and returns a list of quotes that will be bookable by travellers.
Terminology[](#terminology "Direct link to Terminology")
----------------------------------------------------------
Throughout the documentation, you’ll see the use of `Vendors` and `Agents`. To eliminate uncertainty here's a small explanation to eastbalish the distinction between them.
| Term | Description |
| --- | --- |
| `vendors` | Vendors are the actual car companies that rent cars |
| `agents` | Agents are supply partners where the quotes are retrieved from. Please note that vendors can also be agents |
How we use it at Skyscanner[](#how-we-use-it-at-skyscanner "Direct link to How we use it at Skyscanner")
----------------------------------------------------------------------------------------------------------

To provide the best UXE, our APIs are asynchronous, meaning that once the Search is created (CreateSearch), we return some basic information about the results, including the Agents (logos, names, etc), as visible in the image above.
The prices, along with the vehicle's classification and characteristics, are loaded asynchronously. For the Skyscanner page, we do that to fill up the **filters** on the left side and the cards in the centre.
This asynchronism is attained by **polling** calls. Each polling call targets one or more agents at a time to retrieve their available quotes for the specific criteria.

The polling made by the agent will be active polling meaning that the client will have to make multiple requests to receive all the available quotes and data info. The API returns results as soon as they are receive. It's expected to take between 1 to 10 seconds to get the full set of results.
The above screenshot captures what you can build, including some example data points. We have:
* Quotes can be grouped based on the data points you receive for each quote.
* In the centre, we have cards with the specific cars, their characteristics, and prices. Note that the same vehicle can have multiple quotes since (1) different agents might have similar offers and (2) the same agent might have very similar vehicles with the same characteristics.
[👉 Here you can try out a search on your own](https://www.skyscanner.net/carhire)
.
Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
This API has 2 endpoints, `/create` and `/poll`.
### `/create`[](#create "Direct link to create")
POST https://partners.api.skyscanner.net/apiservices/v1/carhire/live/search/create
`/create` is used to initiate the search request. This endpoint returns some basic information about the results, including the Agents (logos, names, etc).
### `/poll`[](#poll "Direct link to poll")
POST https://partners.api.skyscanner.net/apiservices/v1/carhire/live/search/poll/{sessionToken}
`/poll` is used to retrieve the complete list of results. This usually takes some amount of time as our backend makes calls to our full list of supply partners for quotes. The `/poll` endpoint is invoked with a `sessionToken` which is returned in the result of the `/create` call.
Concepts[](#concepts "Direct link to Concepts")
-------------------------------------------------
### Create and poll workflow[](#create-and-poll-workflow "Direct link to Create and poll workflow")
There is a large variance in the **time to first result** and the **time to last result** as some supply partners take longer to return results. Often, the chepest quotes are returned from supply partners that take longer to return results. This is why the API workflow has been split into the `/create` and `/poll` endpoints.
tip
To learn more about the create and poll workflow, please see our [create and poll guide](/docs/getting-started/create-and-poll)
User IP Address in the Car Hire Live Prices API[](#user-ip-address-in-the-car-hire-live-prices-api "Direct link to User IP Address in the Car Hire Live Prices API")
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
The `userIp` is an optional parameter in the Car Hire Live Prices API’s `Create` endpoint. Passing `userIp` allows our supply partners to provide comprehensive and competitive coverage, particularly with high-performing supply partners in key markets, such as the UK, US, Italy, Brazil, Germany, Spain, France, Australia, and Turkey, where omitting it may result in less relevant or incomplete offers from partner agents.
### Benefits of `userIp`[](#benefits-of-userip "Direct link to benefits-of-userip")
When provided with a valid IPv4 address representing the end-user making the request, it enables downstream agent APIs to deliver more accurate and relevant results. This parameter helps agents:
* **Enhance Offer Relevance**: By identifying the end-user’s location through their IP address, agents can tailor offers, ensuring they are geographically appropriate and meet user expectations.
* **Improve Service Quality**: Agents can detect patterns such as bot traffic or unusual activity, enabling them to maintain high service standards and protect against potential misuse.
* **Optimise Results for Users**: Leveraging the user’s IP address can help refine search results, ensuring that users receive offers that are both complete and contextually relevant.
### Why the IP Address Matters[](#why-the-ip-address-matters "Direct link to Why the IP Address Matters")
Since no other user contextual information is shared with partner agents, the IP address serves as the simplest and most confidential way to provide critical information. By using the `userIp`:
* **Customisation**: Agents can tailor results to better align with the user’s geographic location and preferences, without requiring additional personal details.
* **Rate-Limiting and Abuse Prevention**: IP addresses enable agents to identify and manage bot traffic or abusive behaviour effectively, ensuring legitimate users receive uninterrupted access and high-quality results.
* **Confidential and Minimal Data**: The IP address is a lightweight and privacy-conscious way to convey necessary context, avoiding the need for more intrusive user data.
### Regulatory Compliance and Privacy[](#regulatory-compliance-and-privacy "Direct link to Regulatory Compliance and Privacy")
Skyscanner and its partner agents are fully committed to complying with all applicable privacy regulations, including GDPR and other relevant data protection laws. This means:
* **Minimal Data Handling**: The `userIp` is used solely for processing by supply partners. Skyscanner does not store or use this parameter internally.
* **Strict Data Privacy Policies**: Both Skyscanner and its supply partners adhere to strict privacy standards to ensure the secure transmission and appropriate handling of any user information.
* **Transparent Practices**: The use of the `userIp` is fully disclosed, and it is only employed to enhance the user experience, in alignment with legal and ethical guidelines.
If you have additional questions or concerns, please feel free to reach out to your Account Manager for more information.
Request[](#request "Direct link to Request")
----------------------------------------------
### `/create`[](#create-1 "Direct link to create-1")
#### Required fields[](#required-fields "Direct link to Required fields")
Requests to the `/create` endpoint need to contain the following:
| Field name | Description |
| --- | --- |
| `market` | Market where search is coming from. E.g.: `UK` |
| `locale` | Language to be used for the search. E.g.: `en-GB` |
| `currency` | Currency that the search result prices are returned in. E.g.: `GBP` |
| `pickUpDate` | Local date time of pick-up. You can specify both a date and, optionally, an exact time. If the time is not provided, it will default to 10am in the local time zone. |
| `dropOffDate` | Local date time of drop-off. Must be at a later point than the pick-up date time. You can specify both a date and, optionally, an exact time. If the time is not provided, it will default to 10am in the local time zone. |
| `pickUpLocation` | Pick-up location. See [car hire live prices API documentation](/api/carhire-live-pricing)
for format |
#### Optional fields[](#optional-fields "Direct link to Optional fields")
Below are additional optional fields to modify the outcome of the request:
| Field name | Description |
| --- | --- |
| `dropOffLocation` | Drop-off location. If empty then it will be defaulted to be the same value as as pickUpLocation. See [car hire live prices API documentation](/api/carhire-live-pricing)
for format |
| `includedAgentIds` | Options for search result to only include quotes from specified agents. All items need to be valid for the specific market. See [car hire live prices API documentation](/api/carhire-live-pricing)
for more details |
| `excludedAgentIds` | Options for search result to exclude quotes from specified agents. All items need to be valid for the specific market. See [car hire live prices API documentation](/api/carhire-live-pricing)
for more details |
| `driverAge` | The age of the designated driver. Must be between 21 and 99. Defaults to 30 if left unspecified. |
| `userIp` | Optional – Valid IPv4 address of the end-user making the request. For details on its purpose and usage, see the [IP Address Usage section](/docs/carhire-live-prices/overview#user-ip-address-in-the-car-hire-live-pricing-api)
of the page and also [car hire live prices API documentation](/api/carhire-live-pricing)
. |
### `/poll`[](#poll-1 "Direct link to poll-1")
The `/create` endpoint will return a `sessionToken` in the response which is used to invoke the `/poll` endpoint.
POST https://partners.api.skyscanner.net/apiservices/v3/flights/live/search/poll/{ADD SESSION TOKEN}
info
The `sessionToken` expires after around 10 minutes.
In this case, the API will return the following 400 response:
`Session token is expired or invalid`
If the token is expired, you should use the `createSearch` endpoint and create a new sessionToken
Response `/create` and `/poll`[](#response-create-and-poll "Direct link to response-create-and-poll")
-------------------------------------------------------------------------------------------------------
### Fields[](#fields "Direct link to Fields")
| Field name | Description |
| --- | --- |
| `status` | Indicates status of the search request is `running` or `completed` |
| `quotes` | Bookable quote which corresponds with what was requested in the search. A `quote` will contain a `deepLink` field which takes the traveler to the booking page. |
| `agents` | Contains information about the agentes referenced in `quotes`. Agents are supply partners where we get quotes from. |
| `vendors` | Contains information about the vendors referenced in `quotes`. Vendors are actual car companies that rent cars. Note that vendors can also be both an agent and a vendor at the same time. |
| `sortingOptions` | Contains data for sorting. Currently supports sorting only by `cheapest` criteria |
* [Introduction](#introduction)
* [Terminology](#terminology)
* [How we use it at Skyscanner](#how-we-use-it-at-skyscanner)
* [Endpoints](#endpoints)
* [`/create`](#create)
* [`/poll`](#poll)
* [Concepts](#concepts)
* [Create and poll workflow](#create-and-poll-workflow)
* [User IP Address in the Car Hire Live Prices API](#user-ip-address-in-the-car-hire-live-prices-api)
* [Benefits of `userIp`](#benefits-of-userip)
* [Why the IP Address Matters](#why-the-ip-address-matters)
* [Regulatory Compliance and Privacy](#regulatory-compliance-and-privacy)
* [Request](#request)
* [`/create`](#create-1)
* [`/poll`](#poll-1)
* [Response `/create` and `/poll`](#response-create-and-poll)
* [Fields](#fields)
---
# Mash-ups | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
### What are Mash-ups?[](#what-are-mash-ups "Direct link to What are Mash-ups?")
Mash-ups are a Skyscanner virtual interline product. This is where Skyscanner creates additional itinerary options for travellers by connecting flight segments from partners who **do not** have an interline/codeshare agreement in place.
These are routes where a user can fly with different airlines, because it can be **cheaper** than booking with just one.
There are two types of mash-up:
* **Sum-of-one-way (SOOW):**
* If a user wanted to fly London to New York, they might find it’s cheaper to fly out with British Airways and back with Virgin Atlantic, rather than buy a return ticket with one airline
* In this example, the traveller needs to make **2 bookings**, one with British Airways and one with Virgin Atlantic
* **Non-protected self transfer (NPST):**
* If a user wanted to fly London to Sydney, they might find it’s cheaper to fly London to Dubai with Emirates, and then Dubai to Sydney with Qantas, rather than booking the whole route with one airline
* In this example, the traveller needs to make **2 bookings**, one with Emirates and one with Quantas
* Here, the traveller must also **collect their hold baggage** in Duabi and check in again for their second flight with Quantas, the stop over is **not protected**
#### Important things to know about Mash-ups:[](#important-things-to-know-about-mash-ups "Direct link to Important things to know about Mash-ups:")
* The user is required to make **more than 1 booking** and will receive more than 1 booking reference
* Mash-ups **DO NOT** involve an airline alliance. So if something goes wrong with a mash-up, **it could cost a user more money**
### Are Mash-ups better than other tickets?[](#are-mash-ups-better-than-other-tickets "Direct link to Are Mash-ups better than other tickets?")
It depends. Skyscanner will offer mash-ups if they’re **cheaper**, or if they **increase itinerary coverage** by enabling an itinerary that otherwise would not exist. However, like we also said, mash-ups can carry some risks which you should make your users aware of.
Let’s say a user booked that single from London to New York with British Airways, and then that single from New York to London with Virgin Atlantic. It’s unlikely, but if British Airways suddenly called a strike, a user would have to think carefully about what to do next. British Airways would compensate for the flight out; however, Virgin Atlantic would not need to compensate the user for the flight back
Now, let’s say the strike was only a couple of days, and British Airways could fly a user out after that. They would have to decide whether to just have a shorter trip, or whether to change their Virgin Atlantic flight. If they change your Virgin Atlantic flight, they’ll charge you — after all, the British Airways strike wasn’t their fault.
### How to identify a Mash-up[](#how-to-identify-a-mash-up "Direct link to How to identify a Mash-up")
You can learn more about how to identify different Booking Types, including mash-ups, [here](/docs/flights-live-prices/booking-types)
.
### Best Practices for implementing a Mash-up[](#best-practices-for-implementing-a-mash-up "Direct link to Best Practices for implementing a Mash-up")
You **must** make your users aware of the risks associated with mash-ups:
* You must provide **booking links for each segment (NPST) or each leg (SOOW)** of the journey for a user so the user can redirect and book with each agent
* All mash-ups should be marked with a message explaining to the user that **multiple bookings are required**
* Ask your users to open all the different parts of the journey **BEFORE** booking the first flight to double check there's still availability. Flights can sell out quickly and we want to make sure a user can complete their trip
* Make users aware of the **lack of protection/cover** if something goes wrong and the **self transfer** (for NPST only)
| Mash-up | Example | |
| --- | --- | --- |
| Sum of one way |  |  |
| Non Protected Self Transfer |  |  |
### How we implement Mash-ups on Skyscanner[](#how-we-implement-mash-ups-on-skyscanner "Direct link to How we implement Mash-ups on Skyscanner")
While we are happy to share examples of how we implement mash-ups, please note that we regularly update our UI in line with our own learnings and traveller needs, which are often unique to Skyscanner.
### If I show a user a Mash-up, they book it, and it goes wrong, does Skyscanner give money back?[](#if-i-show-a-user-a-mash-up-they-book-it-and-it-goes-wrong-does-skyscanner-give-money-back "Direct link to If I show a user a Mash-up, they book it, and it goes wrong, does Skyscanner give money back?")
We really want all users to have a great travel experience. That’s the whole reason we’re here! We use our top-notch tech skills to analyse hundreds of flights and prices so we can show you good options for flights.
We provide this service for free **BUT** we don’t hold the users booking and **we cannot refund a user if something goes wrong**. That's taken by the airline or travel agent they select so they are the best people to help if they have any specific questions.
What we insist is that you give your users all the information you can upfront, so they can think carefully about the risks _**before**_ booking.
### Can I filter out Mash-ups?[](#can-i-filter-out-mash-ups "Direct link to Can I filter out Mash-ups?")
You may not want to offer this feature to your uses. To filter out mash-ups, you can filter out results so that `agentIds.length === 1`.
Please note, if you choose to filter out mash-up itineraries this will impact:
* **Filtering & Sorting functionality:** score value for criteria will still consider mash-up itineraries
* **Stats:** the information returned for minPrice, minDuration etc will still include mass-up itineraries
* [What are Mash-ups?](#what-are-mash-ups)
* [Are Mash-ups better than other tickets?](#are-mash-ups-better-than-other-tickets)
* [How to identify a Mash-up](#how-to-identify-a-mash-up)
* [Best Practices for implementing a Mash-up](#best-practices-for-implementing-a-mash-up)
* [How we implement Mash-ups on Skyscanner](#how-we-implement-mash-ups-on-skyscanner)
* [If I show a user a Mash-up, they book it, and it goes wrong, does Skyscanner give money back?](#if-i-show-a-user-a-mash-up-they-book-it-and-it-goes-wrong-does-skyscanner-give-money-back)
* [Can I filter out Mash-ups?](#can-i-filter-out-mash-ups)
---
# OTA Virtual Interlines | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
### What are OTA Virtual Interlines?[](#what-are-ota-virtual-interlines "Direct link to What are OTA Virtual Interlines?")
There is another way for users to book flight connections that aren’t on a shared ticket (so, no airline alliance), but offer a bit more protection than non-protected transfers. These are called **self-transfer flights** or **OTA virtual interlines**.
Self-transfer flights are booked by an OTA. That means that, although the airlines won't be able to help if a users flights get delayed or cancelled, the OTA will. So, as soon as a problem occurs, the user must contact the OTA so they can help you with rebooking the flight or flights.
#### Important things to know about OTA Virtual Interlines:[](#important-things-to-know-about-ota-virtual-interlines "Direct link to Important things to know about OTA Virtual Interlines:")
* The user must also **collect their hold baggage** and check in again for their second flight
* An OTA will assist the user if anything goes wrong, HOWEVER, different travel agents offer different levels of assistance
Skyscanner has no control over the OTA’s conditions. Even if the OTA offers some protection for a user, we still ask you to make it clear to the user the risks involved with this ticket type.
### How to identify an OTA Virtual Interline[](#how-to-identify-an-ota-virtual-interline "Direct link to How to identify an OTA Virtual Interline")
You can learn more about how to identify different Booking Types, including OTA Virtual Interline, [here](/docs/flights-live-prices/booking-types)
.
### Best Practices for implementing an OTA Virtual Interline[](#best-practices-for-implementing-an-ota-virtual-interline "Direct link to Best Practices for implementing an OTA Virtual Interline")
You **must** make your users aware of the risks associated with a virtual interline:
* Make users aware of the **self transfer** and the **level of protection/cover** if something goes wrong.
| | |
| --- | --- |
|  |  |
### How we implement OTA Virtual Interlines at Skyscanner[](#how-we-implement-ota-virtual-interlines-at-skyscanner "Direct link to How we implement OTA Virtual Interlines at Skyscanner")
While we are happy to share examples of how we implement virtual interlines, please note that we regularly update our UI in line with our own learnings and traveller needs, which are often unique to Skyscanner.
* [What are OTA Virtual Interlines?](#what-are-ota-virtual-interlines)
* [How to identify an OTA Virtual Interline](#how-to-identify-an-ota-virtual-interline)
* [Best Practices for implementing an OTA Virtual Interline](#best-practices-for-implementing-an-ota-virtual-interline)
* [How we implement OTA Virtual Interlines at Skyscanner](#how-we-implement-ota-virtual-interlines-at-skyscanner)
---
# Quick start guide | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
The Culture API provides all the markets, locales and currencies we support in Skyscanner. You could use those in the calls to the other Travel APIs we provide to ensure correct localisation of the responses.
Sample requests[](#sample-requests "Direct link to Sample requests")
----------------------------------------------------------------------
### `/markets`[](#markets "Direct link to markets")
curl --location --request GET 'https://partners.api.skyscanner.net/apiservices/v3/culture/markets/en-GB' \ --header 'x-api-key: your-api-key'
### `/locales`[](#locales "Direct link to locales")
curl --location --request GET 'https://partners.api.skyscanner.net/apiservices/v3/culture/locales' \ --header 'x-api-key: your-api-key'
### `/currencies`[](#currencies "Direct link to currencies")
curl --location --request GET 'https://partners.api.skyscanner.net/apiservices/v3/culture/currencies' \ --header 'x-api-key: your-api-key'
### `/nearestculture`[](#nearestculture "Direct link to nearestculture")
curl --location --request GET 'https://partners.api.skyscanner.net/apiservices/v3/culture/nearestculture?ipAddress=192.0.2.0' \ --header 'x-api-key: your-api-key'
* [Introduction](#introduction)
* [Sample requests](#sample-requests)
* [`/markets`](#markets)
* [`/locales`](#locales)
* [`/currencies`](#currencies)
* [`/nearestculture`](#nearestculture)
---
# Overview | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Introduction[](#introduction "Direct link to Introduction")
-------------------------------------------------------------
All of our Travel API responses are localized by `market`, `locale` (language), and `currency`, so these three parameters must be added to every request.
You can use the Culture API to get all the markets, locales and currencies we support.
How it's used in Skyscanner[](#how-its-used-in-skyscanner "Direct link to How it's used in Skyscanner")
---------------------------------------------------------------------------------------------------------
We use the culture parameters to localise our website. You can find the culture selector at the top of all our pages, which allows travellers to change the localisation settings.

We associate markets with the top level domains of our website. The locale is associated with the language we display our pages in. The currency is associated with format we use to display the prices.
The market used can influence the search results and their prices, because suppliers can treat countries of purchase differently. The locale and currency, however, do not influence the results.
Endpoints[](#endpoints "Direct link to Endpoints")
----------------------------------------------------
### `/markets`[](#markets "Direct link to markets")
You can use the `/markets` endpoint to retrieve the market countries that we support.
Most suppliers (airlines, travel agents, and car hire dealers) set their fares based on the market (or country of purchase). It is therefore necessary to specify the market country in every query.
The names of the markets returned are localised based on a locale passed as a parameter.
[See Markets guide for more details](/docs/culture/markets)
### `/locales`[](#locales "Direct link to locales")
You can use the `/locales` endpoint to retrieve the locales that we support to translate your content.
The names of the locales returned are in the native language associated with the locale.
[See Locales guide for more details](/docs/culture/locales)
### `/currencies`[](#currencies "Direct link to currencies")
You can use the `/currencies` endpoint to retrieve the currencies that we support and information about how we format them in Skyscanner.
[See Currencies guide for more details](/docs/culture/currencies)
### `/nearestculture`[](#nearestculture "Direct link to nearestculture")
You can use the `/nearestculture` endpoint to retrieve the most relevant culture information for a user, based on an IP address.
[See Nearest Culture guide for more details](/docs/culture/nearest-culture)
* [Introduction](#introduction)
* [How it's used in Skyscanner](#how-its-used-in-skyscanner)
* [Endpoints](#endpoints)
* [`/markets`](#markets)
* [`/locales`](#locales)
* [`/currencies`](#currencies)
* [`/nearestculture`](#nearestculture)
---
# Markets | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Endpoint[](#endpoint "Direct link to Endpoint")
-------------------------------------------------
GET https://partners.api.skyscanner.net/apiservices/v3/culture/markets/{locale}
Request[](#request "Direct link to Request")
----------------------------------------------
To specify which locale (language) the response is returned in, a `locale` can be passed into the endpoint following the format above.
| Path variable | Description |
| --- | --- |
| `locale` | The locale to return results in, e.g.: `en-GB` |
Response[](#response "Direct link to Response")
-------------------------------------------------
The `/locales` endpoint returns a `locales` list containing objects with the following fields:
| Field name | Description |
| --- | --- |
| `code` | Market code, e.g.: `UK` |
| `name` | The market name, e.g.: `United Kingdom` |
* [Endpoint](#endpoint)
* [Request](#request)
* [Response](#response)
---
# Multi-City | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
Multi-City is a feature supported in Flights Live Prices API. It allows users to search flights worldwide using multiple stops in their query by adding extra legs with stopovers in several different cities.
How to use it?[](#how-to-use-it "Direct link to How to use it?")
------------------------------------------------------------------
To make a multi-city search you can use the same query as the one for [Flights Live Prices Query Object](/docs/flights-live-prices/query-object)
by adding more query legs to the [queryLeg object](/docs/flights-live-prices/query-object#query-leg)
indicating it's a multi-city search.

[👉 Here is a sample in Skyscanner](https://www.skyscanner.net/transport/d/ber/204-07-19/bcn/bcn/2024-07-30/lond/lond/2024-08-31/ber/?adults=1&adultsv2=1&cabinclass=economy&children=0&childrenv2=&ref=home)
.
#### Example queries[](#example-queries "Direct link to Example queries")
Edinburgh to London - London to Paris - Paris to Berlin (3 legs)
💡 Make sure your dates are in the future when making your own requests.
{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", "queryLegs": [ { "originPlaceId": { "iata": "EDI" }, "destinationPlaceId": { "iata": "LHR" }, "date": { "year": "2024", "month": "11", "day": "24" } }, { "originPlaceId": { "iata": "LHR" }, "destinationPlaceId": { "iata": "CDG" }, "date": { "year": "2024", "month": "11", "day": "30" } }, { "originPlaceId": { "iata": "CDG" }, "destinationPlaceId": { "iata": "BER" }, "date": { "year": "2024", "month": "12", "day": "10" } } ], "adults": 1, "childrenAges": [], "cabinClass": "CABIN_CLASS_ECONOMY", "excludedAgentsIds": [], "excludedCarriersIds": [], "includedAgentsIds": [], "includedCarriersIds": [], "nearbyAirports": false }}
Berlin to Barcelona - Madrid to Thessaloniki - Athens to Rome - Rome to London (4 legs)
💡 Make sure your dates are in the future when making your own requests.
{ "query": { "market": "UK", "locale": "en-GB", "currency": "GBP", "queryLegs": [ { "originPlaceId": { "iata": "BER" }, "destinationPlaceId": { "iata": "BCN" }, "date": { "year": "2024", "month": "11", "day": "24" } }, { "originPlaceId": { "iata": "MAD" }, "destinationPlaceId": { "iata": "SKG" }, "date": { "year": "2024", "month": "11", "day": "30" } }, { "originPlaceId": { "iata": "ATH" }, "destinationPlaceId": { "iata": "FCO" }, "date": { "year": "2024", "month": "12", "day": "10" } }, { "originPlaceId": { "iata": "FCO" }, "destinationPlaceId": { "iata": "LHR" }, "date": { "year": "2024", "month": "12", "day": "20" } } ], "adults": 1, "childrenAges": [], "cabinClass": "CABIN_CLASS_ECONOMY", "excludedAgentsIds": [], "excludedCarriersIds": [], "includedAgentsIds": [], "includedCarriersIds": [], "nearbyAirports": false }}
#### Using the response[](#using-the-response "Direct link to Using the response")
The response is the same as the [Flights Live Prices response object](/api/flights-live-pricing)
.
Limitations[](#limitations "Direct link to Limitations")
----------------------------------------------------------
There are some limitations when searching for multi-city flight prices.
* Multi-City is only supported for flights live prices.
* `nearbyAirports` filter has to be set to `false` as it's not supported for multi-search.
* Maximum **6 places are supported** meaning you can have maximum 6 [queryLegs](/docs/flights-live-prices/query-object#query-leg)
.
* [How to use it?](#how-to-use-it)
* [Limitations](#limitations)
---
# Query leg | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
One way or return[](#one-way-or-return "Direct link to One way or return")
----------------------------------------------------------------------------
To search for one way flights, a `queryLeg` list with only 1 leg can be specified. If return prices are required, specify a `queryLeg` list with 2 legs.
Date types[](#date-types "Direct link to Date types")
-------------------------------------------------------
Each `queryLeg` **must only have one date type** such as: `dateRange` or `fixedDate` or `anytime`.
A summary of the date types and their functions:
| Date type | Description |
| --- | --- |
| `dateRange` | A range of dates to search for flights for. Will search for prices from the first to last date of each month |
| `fixedDate` | A specific date to search for flights for. |
| `anytime` | Will return best quotes for a given route. |
See the [Flights Indicative API reference](/api/flights-indicative)
for more details.
### Sample date types[](#sample-date-types "Direct link to Sample date types")
{ "queryLegs": [ { ... "anytime":true ... } ]}
Or
{ "queryLeg": [ { ... "fixedDate": { "year": 2024, "month": 7, "day": 1 } ... } ]}
Or
{ "queryLeg": [ { ... "dateRange": { "startDate":{ "month": 7, "year": 2024 }, "endDate":{ "month": 8, "year": 2024 } } ... } ]}
caution
The `day` field is ignored when specifying a `dateRange` - the API will search for prices from the first to last day of the given months regardless of this value.
Origin and destination place types[](#origin-and-destination-place-types "Direct link to Origin and destination place types")
-------------------------------------------------------------------------------------------------------------------------------
The Flights Indicative Prices API accepts `IATA` and `entityId` place types at the following levels:
* airports
* cities
* nation or territories
Continent type places are not valid. (E.g. `205351567` - North America).
Airports and cities can be either `IATA` and `entityId`. (E.g `LHR` - London Heathrow, `LON` - London)
Nations or territories do not have `IATA` codes and therefore need to be inputted as `entityId`.
Data for `IATA` and `entityId` can be found in the [Geo API reference](/docs/category/geo-api)
.
### Sample date types[](#sample-date-types-1 "Direct link to Sample date types")
{ "queryLegs": [ { ... "originPlace": { "queryPlace":{ // EntityId for the United States "entityId": "29475087" } } ... } ]}
{ "queryLegs": [ { ... "destinationPlace": { "queryPlace":{ // IATA code for London Heathrow Airport "iata": "LHR" } } ... } ]}
* [One way or return](#one-way-or-return)
* [Date types](#date-types)
* [Sample date types](#sample-date-types)
* [Origin and destination place types](#origin-and-destination-place-types)
* [Sample date types](#sample-date-types-1)
---
# Query object | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
The query object is used when querying the endpoint for data on your search criteria.
### Layout[](#layout "Direct link to Layout")
query object├── currency├── market├── locale├── queryLegs│ └── originPlaceId│ │ └── iata│ │ └── entityId│ └── destinationPlaceId│ │ └── iata│ │ └── entityId│ └── date│ │ └── year│ │ └── month│ │ └── day├── adults└── childrenAges└── cabinClass└── includedAgentsIds└── excludedAgentsIds└── includedCarriersIds└── excludedCarriersIds└── nearbyAirports└── includeSustainabilityData
### Description[](#description "Direct link to Description")
| Parameter | Description | Example |
| --- | --- | --- |
| currency | The currency you want the prices in | GBP |
| market | The market/country your user is in | UK |
| locale | The locale you want the results in (ISO locale) | en-GB |
| adults | Number of adults (18+ years). Must be between 1 and 8 | 1 |
| queryLegs | All legs to be included in the query, with a maximum of 6. The legs have to be in ascending order by flight date. For return flights, the origin from the first `queryLeg` needs to match the destination from the last. | [Query](/docs/flights-live-prices/query-object#query-leg) |
| cabinClass | The cabin class. Can be "CABIN\_CLASS\_ECONOMY", "CABIN\_CLASS\_PREMIUM\_ECONOMY", "CABIN\_CLASS\_BUSINESS", "CABIN\_CLASS\_FIRST" | CABIN\_CLASS\_ECONOMY |
| childrenAges | Number of children (0-17 years). Can be between 0 and 8. | \[3,5,12\] |
| includedAgentsIds | Only return results from those agents. Comma-separated list of agent ids. | \["airg","ctuk"\] |
| excludedAgentsIds | Filter out results from those agents. Comma-separated list of agent ids. | \["airg","ctuk"\] |
| includedCarriersIds | Only return results from those carriers. Comma-separated list of carrier iata codes. | \["FR","U2"\] |
| excludedCarriersIds | Filter out results from those carriers. Comma-separated list of carrier iata codes. | \["FR","U2"\] |
| nearbyAirports | Option to include nearby airports | true |
| includeSustainabilityData | Option to include flights emissions data | true |
### Query leg[](#query-leg "Direct link to Query leg")
| Parameter | Description | Example |
| --- | --- | --- |
| originPlaceId | The origin place. It needs to contain either an IATA or an entity ID. | [Place](/docs/flights-live-prices/query-object#place) |
| destinationPlaceId | The destination place. It needs to contain either an IATA or an entity ID. | [Place](/docs/flights-live-prices/query-object#place) |
| date | The date of flight | [Date](/docs/flights-live-prices/query-object#date) |
### Place[](#place "Direct link to Place")
| Parameter | Description | Example |
| --- | --- | --- |
| iata | The IATA code of and origin or destination city or airport | LHR |
| entityId | The internal Skyscanner ID for an origin or destination location | 95565050 |
info
The supported place types for the requests are cities and airports. Not all supported place types have IATA codes, so you can use entity IDs for them.
#### What are entity IDs?[](#what-are-entity-ids "Direct link to What are entity IDs?")
Entity IDs are internal Skyscanner unique identifiers for places. We use them because not all places we support for our searches have industry-standard identifiers like IATA or ICAO.
You can use the Autosuggest API v1 to get entity IDs for places.
You can look up places with the Autosuggest API by:
1. SKY codes (old internal Skyscanner IDs)
2. IP addresses
3. The coordinates of the place (we will return the nearest place)
4. The name of the place (partial names are also supported)
For full details on the Autosuggest API v1 check out the [full documentation](https://skyscanner.github.io/slate/#places)
.
### Date[](#date "Direct link to Date")
| Parameter | Description | Example |
| --- | --- | --- |
| year | The year of flight | 2024 |
| month | The month of flight | 9 |
| day | The day of flight | 26 |
* [Layout](#layout)
* [Description](#description)
* [Query leg](#query-leg)
* [Place](#place)
* [Date](#date)
---
# Flights Parameters | API Developer Documentation
[Skip to main content](#__docusaurus_skipToContent_fallback)
On this page
| Page Type | Description | Landing Page |
| --- | --- | --- |
| [home](#flights-home-page-schema) | Skyscanner Home | [Link](https://www.skyscanner.net/) |
| [day-view](#flights-day-view-schema) | Flights Day View | [Link](https://www.skyscanner.net/transport/flights/sof/ams/240701/240707/?adults=1&children=2&adultsv2=1&childrenv2=3%7c2&cabinclass=economy&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&ref=home#/) |
| [calendar-month-view](#flights-calendar-month-view-schema) | Flights Month View | [Link](https://www.skyscanner.net/transport/flights/sof/ams/?adults=1&children=2&adultsv2=1&childrenv2=3%7C2&cabinclass=economy&rtn=1&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&oym=2407&iym=2407&ref=home&selectedoday=01&selectediday=01) |
| [browse-view](#flights-browse-view-schema) | Flights Browse View | [Link](https://www.skyscanner.net/transport/flights-from/edi/?adults=1&children=2&adultsv2=1&childrenv2=3%7c2&cabinclass=economy&rtn=1&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false&oym=2407&iym=2407&ref=home) |
| [multicity](#flights-day-view-for-multicity-search-schema) | Flights Multi-City | [Link](https://www.skyscanner.net/transport/d/sof/2024-07-01/ams/ams/2024-07-07/lond/lond/2024-07-07/sof?adults=1&children=2&adultsv2=1&childrenv2=3%7c2&cabinclass=economy&ref=home#/) |
| [cheap-flights-to](#cheap-flights-to-view-schema) | Cheap Flights To | [Link](https://www.skyscanner.net/za/en-gb/zar/flights-to/bom/cheap-flights-to-mumbai-airport.html) |
| [flights-airline](#flights-airline-schema) | Flights Airline | [Link](https://www.skyscanner.net/airline/airline-emirates-ek.html) |
For more details on the supported verticals and page types, please visit [Verticals and Page Types](/docs/referrals/verticals-and-page-types)
.
Flights Home Page Schema[](#flights-home-page-schema "Direct link to Flights Home Page Schema")
-------------------------------------------------------------------------------------------------
/flights/home
A schema definition for the flights home page microsite supported parameters.
Flights Home Page Properties[](#flights-home-page-properties "Direct link to Flights Home Page Properties")
-------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### market[](#market "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Flights Day View Schema[](#flights-day-view-schema "Direct link to Flights Day View Schema")
----------------------------------------------------------------------------------------------
/flights/day-view
A schema definition for the flights day-view microsite supported parameters.
Flights Day View Properties[](#flights-day-view-properties "Direct link to Flights Day View Properties")
----------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [origin](#origin) | `string` | Required |
| [destination](#destination) | `string` | Required |
| [outboundDate](#outbounddate) | `string` | Required |
| [inboundDate](#inbounddate) | `string` | Optional |
| [adultsv2](#adultsv2) | `integer` | Required |
| [childrenv2](#childrenv2) | `string` | Optional |
| [cabinclass](#cabinclass) | `string` | Required |
| [preferDirects](#preferdirects) | `boolean` | Optional |
| [outboundaltsenabled](#outboundaltsenabled) | `boolean` | Optional |
| [inboundaltsenabled](#inboundaltsenabled) | `boolean` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
| [sortby](#sortby) | `string` | Optional |
| [airlines](#airlines) | `string` | Optional |
| [alliances](#alliances) | `string` | Optional |
| [departure-times](#departure-times) | `string` | Optional |
| [duration](#duration) | `integer` | Optional |
### origin[](#origin "Direct link to origin")
IATA code for the origin. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### destination[](#destination "Direct link to destination")
IATA code for the destination. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### outboundDate[](#outbounddate "Direct link to outboundDate")
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | `YYYY-MM-DD` |
### inboundDate[](#inbounddate "Direct link to inboundDate")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### adultsv2[](#adultsv2 "Direct link to adultsv2")
Number of adult passengers. Adults have to be `18` years old or older.
| Required | Type | Format | Default value |
| --- | --- | --- | --- |
| Optional | `integer` | e.g. `2` | `1` |
### childrenv2[](#childrenv2 "Direct link to childrenv2")
Number of children passengers. Child age has to be in the 2-17 range. The value must be in the format `integer|integer...` where each number is the age of the child passenger.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `3\|4\|5` |
### cabinclass[](#cabinclass "Direct link to cabinclass")
Cabin class for the flight.
| Required | Type | Default value |
| --- | --- | --- |
| Optional | `enum` | `economy` |
The value of this property must be equal to one of the following values:
| ENUM values |
| --- |
| `economy` |
| `premiumeconomy` |
| `business` |
| `first` |
### preferDirects[](#preferdirects "Direct link to preferDirects")
When this parameter is set to `true`, only direct flights results will be shown.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `boolean` | e.g. `false` |
### outboundaltsenabled[](#outboundaltsenabled "Direct link to outboundaltsenabled")
When this parameter is set to `true`, the results will include nearby airports as an outbound place.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `boolean` | e.g. `false` |
### inboundaltsenabled[](#inboundaltsenabled "Direct link to inboundaltsenabled")
When this parameter is set to `true`, the results will include nearby airports as an inbound place.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `boolean` | e.g. `false` |
### market[](#market-1 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-1 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-1 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
The preferred currency for the desired page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
### sortby[](#sortby "Direct link to sortby")
Sets the sorting order for the results. If not specified, results will be sorted by `best`.
[Learn more](https://www.skyscanner.net/media/regulation-2019-1150-platform-to-business-regulation#:~:text=direct%20booking%20framework.-,For%20Flights,-We%20make%20it)
| Required | Type |
| --- | --- |
| Optional | `enum` |
The value of this property must be equal to one of the following values:
| ENUM values | Explanation |
| --- | --- |
| `cheapest` | Sorts the results by price from cheapest to most expensive. |
| `fastest` | Sort the results by the flight duration from fastest to longest. |
### airlines[](#airlines "Direct link to airlines")
Comma separated list of IATA/ICAO airline codes to be passed to the `day-view` filters.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `AF,EZY,TK` |
### alliances[](#alliances "Direct link to alliances")
Comma separated list of alliance names passed to the `day-view` filters.
| Required | Type | Format | Supported values |
| --- | --- | --- | --- |
| Optional | `string` | e.g. `OneWorld,SkyTeam` | `OneWorld`, `Star Alliance`, `SkyTeam` and `Value Alliance` |
### departure-times[](#departure-times "Direct link to departure-times")
Sets the `day-view` departure time filters in minutes.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `00-90,30-990` (first leg departs between 00 and 1:30, second departs between 00:30 and 16:30) |
### duration[](#duration "Direct link to duration")
Sets the `day-view` duration filters in minutes.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `1320` (22 hours) |
Flights Browse View Schema[](#flights-browse-view-schema "Direct link to Flights Browse View Schema")
-------------------------------------------------------------------------------------------------------
/flights/browse-view
A schema definition for the flights browse view microsite supported parameters.
Flights Browse View Properties[](#flights-browse-view-properties "Direct link to Flights Browse View Properties")
-------------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [origin](#origin) | `string` | Required |
| [destination](#destination) | `string` | Optional |
| [outboundDate](#outbounddate) | `string` | Optional |
| [inboundDate](#inbounddate) | `string` | Optional |
| [adultsv2](#adultsv2) | `integer` | Optional |
| [childrenv2](#childrenv2) | `string` | Optional |
| [oym](#oym) | `string` | Optional |
| [iym](#iym) | `string` | Optional |
| [rtn](#rtn) | `string` | Optional |
| [preferDirects](#preferdirects) | `boolean` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### origin[](#origin-1 "Direct link to origin")
Country or IATA code for the origin.
IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `UK`, `LHR` |
### destination[](#destination-1 "Direct link to destination")
Country or IATA code for the destination.
IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `LHR` |
### outboundDate[](#outbounddate-1 "Direct link to outboundDate")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### inboundDate[](#inbounddate-1 "Direct link to inboundDate")
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### adultsv2[](#adultsv2-1 "Direct link to adultsv2")
Number of adult passengers. Adults have to be `18` years old or older.
| Required | Type | Format | Default value |
| --- | --- | --- | --- |
| Optional | `integer` | e.g. `2` | `1` |
### childrenv2[](#childrenv2-1 "Direct link to childrenv2")
Number of children passengers. Child age has to be in the 2-17 range. The value must be in the format `integer|integer...` where each number is the age of the child passenger.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `3\|4\|5` |
### oym[](#oym "Direct link to oym")
Outbound month.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM` |
### iym[](#iym "Direct link to iym")
Inbound month.
Can only be used in combination with `oym`.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM` |
### rtn[](#rtn "Direct link to rtn")
Trip type.
| Required | Type |
| --- | --- |
| Optional | `enum` |
The value of this property must be equal to one of the following values:
| Value | Explanation |
| --- | --- |
| `0` | if `oneway` trip |
| `1` | if `return` or `multicity` trip |
### preferDirects[](#preferdirects-1 "Direct link to preferDirects")
When this parameter is set to `true`, only direct flights results will be shown.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `boolean` | `false` |
### market[](#market-2 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-2 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-2 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Flights Calendar Month View Schema[](#flights-calendar-month-view-schema "Direct link to Flights Calendar Month View Schema")
-------------------------------------------------------------------------------------------------------------------------------
/flights/calendar-month-view
A schema definition for the flights calendar month view microsite supported parameters.
Flights Calendar Month View Properties[](#flights-calendar-month-view-properties "Direct link to Flights Calendar Month View Properties")
-------------------------------------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [origin](#origin) | `string` | Required |
| [destination](#destination) | `string` | Required |
| [oym](#oym) | `string` | Optional |
| [iym](#iym) | `string` | Optional |
| [adultsv2](#adultsv2) | `integer` | Optional |
| [childrenv2](#childrenv2) | `string` | Optional |
| [rtn](#rtn) | `string` | Optional |
| [preferDirects](#preferdirects) | `boolean` | Optional |
| [selectedoday](#selectedoday) | `string` | Optional |
| [selectediday](#selectediday) | `string` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### origin[](#origin-2 "Direct link to origin")
IATA code for the origin. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### destination[](#destination-2 "Direct link to destination")
IATA code for the destination. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### oym[](#oym-1 "Direct link to oym")
Outbound month.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM` |
### iym[](#iym-1 "Direct link to iym")
Inbound month.
Can only be used in combination with `oym`.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM` |
### adultsv2[](#adultsv2-2 "Direct link to adultsv2")
Number of adult passengers. Adults have to be `18` years old or older.
| Required | Type | Format | Default value |
| --- | --- | --- | --- |
| Optional | `integer` | e.g. `2` | `1` |
### childrenv2[](#childrenv2-2 "Direct link to childrenv2")
Number of children passengers. Child age has to be in the 2-17 range. The value must be in the format `integer|integer...` where each number is the age of the child passenger.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `3\|4\|5` |
### rtn[](#rtn-1 "Direct link to rtn")
Trip type.
| Required | Type |
| --- | --- |
| Optional | `enum` |
The value of this property must be equal to one of the following values:
| Value | Explanation |
| --- | --- |
| `0` | if `oneway` trip |
| `1` | if `return` or `multicity` trip |
### preferDirects[](#preferdirects-2 "Direct link to preferDirects")
When this parameter is set to `true`, only direct flights results will be shown.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `boolean` | `false` |
### selectedoday[](#selectedoday "Direct link to selectedoday")
Preselected outbound day of the month.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `10` |
### selectediday[](#selectediday "Direct link to selectediday")
Preselected inbound day of the month.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `integer` | e.g. `10` |
### market[](#market-3 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-3 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-3 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Flights Day View for Multi-City Search Schema[](#flights-day-view-for-multi-city-search-schema "Direct link to Flights Day View for Multi-City Search Schema")
----------------------------------------------------------------------------------------------------------------------------------------------------------------
/flights/multicity
A schema definition for the flights day-view microsite supported query parameters.
Flights Day View for Multi-City Search Properties[](#flights-day-view-for-multi-city-search-properties "Direct link to Flights Day View for Multi-City Search Properties")
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [origin0](#origin0) | `string` | Required |
| [date0](#date0) | `string` | Required |
| [destination0](#destination0) | `string` | Required |
| [origin1](#origin1) | `string` | Optional |
| [date1](#date1) | `string` | Optional |
| [destination1](#destination1) | `string` | Optional |
| [origin2](#origin2) | `string` | Optional |
| [date2](#date2) | `string` | Optional |
| [destination2](#destination2) | `string` | Optional |
| [origin3](#origin3) | `string` | Optional |
| [date3](#date3) | `string` | Optional |
| [destination3](#destination3) | `string` | Optional |
| [origin4](#origin4) | `string` | Optional |
| [date4](#date4) | `string` | Optional |
| [destination4](#destination4) | `string` | Optional |
| [origin5](#origin5) | `string` | Optional |
| [date5](#date5) | `string` | Optional |
| [destination5](#destination5) | `string` | Optional |
| [adultsv2](#adultsv2) | `integer` | Optional |
| [childrenv2](#childrenv2) | `string` | Optional |
| [cabinclass](#cabinclass) | `string` | Optional |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### origin0[](#origin0 "Direct link to origin0")
IATA code for the origin of the first flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date0[](#date0 "Direct link to date0")
Outbound date for the first flight.
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | `YYYY-MM-DD` |
### destination0[](#destination0 "Direct link to destination0")
IATA code for the destination of the first flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### origin1[](#origin1 "Direct link to origin1")
IATA code for the origin of the second flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date1[](#date1 "Direct link to date1")
Outbound date for the second flight.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### destination1[](#destination1 "Direct link to destination1")
IATA code for the destination of the second flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### origin2[](#origin2 "Direct link to origin2")
IATA code for the origin of the third flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date2[](#date2 "Direct link to date2")
Outbound date for the third flight.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### destination2[](#destination2 "Direct link to destination2")
IATA code for the destination of the third flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### origin3[](#origin3 "Direct link to origin3")
IATA code for the origin of the fourth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date3[](#date3 "Direct link to date3")
Outbound date for the fourth flight.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### destination3[](#destination3 "Direct link to destination3")
IATA code for the destination of the fourth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### origin4[](#origin4 "Direct link to origin4")
IATA code for the origin of the fifth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date4[](#date4 "Direct link to date4")
Outbound date for the fifth flight.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### destination4[](#destination4 "Direct link to destination4")
IATA code for the destination of the fifth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### origin5[](#origin5 "Direct link to origin5")
IATA code for the origin of the sixth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### date5[](#date5 "Direct link to date5")
Outbound date for the sixth flight.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | `YYYY-MM-DD` |
### destination5[](#destination5 "Direct link to destination5")
IATA code for the destination of the sixth flight. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `EDI`, `BCN`, `LIS` |
### adultsv2[](#adultsv2-3 "Direct link to adultsv2")
Number of adult passengers. Adults have to be `18` years old or older.
| Required | Type | Format | Default value |
| --- | --- | --- | --- |
| Optional | `integer` | e.g. `2` | `1` |
### childrenv2[](#childrenv2-3 "Direct link to childrenv2")
Number of children passengers. Child age has to be in the 2-17 range. The value must be in the format `integer|integer...` where each number is the age of the child passenger.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `3\|4\|5` |
### cabinclass[](#cabinclass-1 "Direct link to cabinclass")
Cabin class for the flight.
| Required | Type | Default value |
| --- | --- | --- |
| Optional | `enum` | `economy` |
The value of this property must be equal to one of the following values:
| ENUM values |
| --- |
| `economy` |
| `premiumeconomy` |
| `business` |
| `first` |
### market[](#market-4 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-4 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-4 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Cheap Flights To View Schema[](#cheap-flights-to-view-schema "Direct link to Cheap Flights To View Schema")
-------------------------------------------------------------------------------------------------------------
/flights/cheap-flights-to
A schema definition for the cheap flights to microsite supported parameters.
Cheap Flights To View Properties[](#cheap-flights-to-view-properties "Direct link to Cheap Flights To View Properties")
-------------------------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [destination](#destination) | `string` | Required |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### destination[](#destination-3 "Direct link to destination")
IATA code for the destination. IATA codes are available for airlines, airports and cities. They are often used internationally and recognised by multiple airlines and airports. [Learn more](/docs/referrals/iata-codes-and-entity-ids)
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `EDI`, `BCN`, `LIS` |
### market[](#market-5 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-5 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-5 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
Flights Airline Schema[](#flights-airline-schema "Direct link to Flights Airline Schema")
-------------------------------------------------------------------------------------------
/flights/flights-airline
A schema definition for the flights airline microsite supported parameters.
Flights Airline Properties[](#flights-airline-properties "Direct link to Flights Airline Properties")
-------------------------------------------------------------------------------------------------------
| Property | Type | Required |
| --- | --- | --- |
| [airlineCode](#airlinecode) | `string` | Required |
| [market](#market) | `string` | Optional |
| [locale](#locale) | `string` | Optional |
| [currency](#currency) | `string` | Optional |
### airlineCode[](#airlinecode "Direct link to airlineCode")
The airline code.
| Required | Type | Format |
| --- | --- | --- |
| Required | `string` | e.g. `BA` |
### market[](#market-6 "Direct link to market")
The preferred market for searching results.
When unspecified, we use detection logic to determine the market, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `UK`, `US`, `FR` |
### locale[](#locale-6 "Direct link to locale")
The preferred locale for the desired page.
When unspecified, we use detection logic to determine the locale, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `es-ES`, `en-GB`, `fr-FR` |
### currency[](#currency-6 "Direct link to currency")
The preferred currency for the desired page.
When unspecified, we use detection logic to determine the currency, so it is unlikely you will need to use this parameter. If you want to learn more, please visit our [Localisation](/docs/referrals/localisation)
page.
| Required | Type | Format |
| --- | --- | --- |
| Optional | `string` | e.g. `GBP`, `EUR`, `USD` |
* [Flights Home Page Schema](#flights-home-page-schema)
* [Flights Home Page Properties](#flights-home-page-properties)
* [market](#market)
* [locale](#locale)
* [currency](#currency)
* [Flights Day View Schema](#flights-day-view-schema)
* [Flights Day View Properties](#flights-day-view-properties)
* [origin](#origin)
* [destination](#destination)
* [outboundDate](#outbounddate)
* [inboundDate](#inbounddate)
* [adultsv2](#adultsv2)
* [childrenv2](#childrenv2)
* [cabinclass](#cabinclass)
* [preferDirects](#preferdirects)
* [outboundaltsenabled](#outboundaltsenabled)
* [inboundaltsenabled](#inboundaltsenabled)
* [market](#market-1)
* [locale](#locale-1)
* [currency](#currency-1)
* [sortby](#sortby)
* [airlines](#airlines)
* [alliances](#alliances)
* [departure-times](#departure-times)
* [duration](#duration)
* [Flights Browse View Schema](#flights-browse-view-schema)
* [Flights Browse View Properties](#flights-browse-view-properties)
* [origin](#origin-1)
* [destination](#destination-1)
* [outboundDate](#outbounddate-1)
* [inboundDate](#inbounddate-1)
* [adultsv2](#adultsv2-1)
* [childrenv2](#childrenv2-1)
* [oym](#oym)
* [iym](#iym)
* [rtn](#rtn)
* [preferDirects](#preferdirects-1)
* [market](#market-2)
* [locale](#locale-2)
* [currency](#currency-2)
* [Flights Calendar Month View Schema](#flights-calendar-month-view-schema)
* [Flights Calendar Month View Properties](#flights-calendar-month-view-properties)
* [origin](#origin-2)
* [destination](#destination-2)
* [oym](#oym-1)
* [iym](#iym-1)
* [adultsv2](#adultsv2-2)
* [childrenv2](#childrenv2-2)
* [rtn](#rtn-1)
* [preferDirects](#preferdirects-2)
* [selectedoday](#selectedoday)
* [selectediday](#selectediday)
* [market](#market-3)
* [locale](#locale-3)
* [currency](#currency-3)
* [Flights Day View for Multi-City Search Schema](#flights-day-view-for-multi-city-search-schema)
* [Flights Day View for Multi-City Search Properties](#flights-day-view-for-multi-city-search-properties)
* [origin0](#origin0)
* [date0](#date0)
* [destination0](#destination0)
* [origin1](#origin1)
* [date1](#date1)
* [destination1](#destination1)
* [origin2](#origin2)
* [date2](#date2)
* [destination2](#destination2)
* [origin3](#origin3)
* [date3](#date3)
* [destination3](#destination3)
* [origin4](#origin4)
* [date4](#date4)
* [destination4](#destination4)
* [origin5](#origin5)
* [date5](#date5)
* [destination5](#destination5)
* [adultsv2](#adultsv2-3)
* [childrenv2](#childrenv2-3)
* [cabinclass](#cabinclass-1)
* [market](#market-4)
* [locale](#locale-4)
* [currency](#currency-4)
* [Cheap Flights To View Schema](#cheap-flights-to-view-schema)
* [Cheap Flights To View Properties](#cheap-flights-to-view-properties)
* [destination](#destination-3)
* [market](#market-5)
* [locale](#locale-5)
* [currency](#currency-5)
* [Flights Airline Schema](#flights-airline-schema)
* [Flights Airline Properties](#flights-airline-properties)
* [airlineCode](#airlinecode)
* [market](#market-6)
* [locale](#locale-6)
* [currency](#currency-6)
---