NAV

API Documentation

API endpoint

https://partners.api.skyscanner.net/apiservices/

Skyscanner Travel APIs connect you to all the data you need to build an innovative website or app.

Build tools that solve problems for millions of travellers and travel retail businesses around the world.

Authentication

Skyscanner uses API keys to allow access to the APIs. To request an API key please contact us.

You must include the API key in all API requests to the server, either as a parameter in the query or the request header. Please refer to each endpoint for details.

Token generation

Get authentication token. The expiration time is 30 minutes.

GET "https://partners.api.skyscanner.net/apiservices/
    token/v2/gettoken?
    apiKey={apiKey}"

API endpoint

GET /token/v2/gettoken

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Response

Example of token result

    _dR-ShOTX6w2SeENoXhHTsT9Z5N4UNqwReQqU_F8WkbgMDIuZx7ud7boHnngf4fT9bpPDFJh7nxB3hWsAT8x76w==

A successful response contains a string with token value.

Getting Started

Flights

Flights - Browse Prices

API endpoint Description
Browse Quotes Returns the cheapest quotes that meet your query. The prices come from our cached prices resulting from our users' searches.
Browse Routes Similar to Browse Quotes but with the quotes grouped by routes. This provides the cheapest destinations (countries, cities or airports) from our cached data.
Browse Dates Similar to Browse Quotes but with the quotes grouped by outbound and inbound date. Useful to find the lowest price for a given route, over either a month or a 12 month period.
Browse Grid Similar to Browse Dates but with some pre-processing on our side to output a two-dimensional array to easily display the response in calendar format.

Flights - Live Prices

API endpoint Description
Live prices Returns live prices from all our suppliers for the requested flight itinerary (in the selected market).

Hotels

Hotels Live Prices

API endpoint Description
Live prices
NEW
Returns live prices from all our suppliers for hotel deals (in the selected market).

Flights Browse Prices

Browse Quotes

Retrieve the cheapest quotes from our cached prices.

curl "https://partners.api.skyscanner.net/apiservices/browsequotes/v1.0/{country}/{currency}/{locale}/
  {originPlace}/
  {destinationPlace}/
  {outboundPartialDate}/
  {inboundPartialDate}?
  apiKey={apiKey}"
  -X GET
  -H "Accept: application/json"

API endpoint

GET /browsequotes/v1.0/{country}/{currency}/{locale}/{originPlace}/{destinationPlace}/{outboundPartialDate}/{inboundPartialDate}

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date (see dates)
inboundPartialDate
OPTIONAL
The return date (see dates). Use empty string for oneway trip.

REQUEST QUERY PARAMETERS

Parameter Description
apiKey
REQUIRED
The API Key to identify the customer

The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.

diagram

The table below shows the combinations of date specificity allowed for the outbound and inbound dates of a return search. For more information on these, see dates.

diagram

Example response from US to anywhere:

{
  "Quotes": [
    {
      "QuoteId": 1,
      "MinPrice": 381,
      "Direct": true,
      "OutboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 68033,
        "DestinationId": 42833,
        "DepartureDate": "2017-02-03T00:00:00"
      },
      "InboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 42833,
        "DestinationId": 68033,
        "DepartureDate": "2017-02-06T00:00:00"
      },
      "QuoteDateTime": "2016-11-09T21:20:00"
    },
  ...
  ],
  "Places": [
    {
      "PlaceId": 837,
      "Name": "United Arab Emirates",
      "Type": "Country",
      "SkyscannerCode": "AE"
    },
  ...
  ],
  "Carriers": [
    {
      "CarrierId": 29,
      "Name": "Mombasa Air Safari"
    },
    {
      "CarrierId": 173,
      "Name": "Silver Airways"
    },
  ...
  ],
  "Currencies": [
    {
      "Code": "EUR",
      "Symbol": "€",
      "ThousandsSeparator": " ",
      "DecimalSeparator": ",",
      "SymbolOnLeft": false,
      "SpaceBetweenAmountAndSymbol": true,
      "RoundingCoefficient": 0,
      "DecimalDigits": 2
    }
  ]
}

RESPONSE PARAMETERS

Parameter Description
Quotes Contains the list of cheapest quotes available for the search.
Places The list of places matching the search results.
Carriers The list of carriers specified in the list of quotes.
Currencies The currency of the quote prices.

Browse Routes

Retrieve the cheapest routes from our cache prices. Similar to the Browse Quotes API but with the routes built for you from the individual quotes.

curl "https://partners.api.skyscanner.net/apiservices/browseroutes/v1.0/{country}/{currency}/{locale}/
  {originPlace}/
  {destinationPlace}/
  {outboundPartialDate}/
  {inboundPartialDate}?
  apiKey={apiKey}"
  -X GET
  -H "Accept: application/json"

API endpoint

GET /browseroutes/v1.0/{country}/{currency}/{locale}/{originPlace}/{destinationPlace}/{outboundPartialDate}/{inboundPartialDate}

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date (see dates)
inboundPartialDate
OPTIONAL
The return date (see dates). Use empty string for oneway trip.

REQUEST QUERY PARAMETERS

Parameter Description
apiKey
REQUIRED
The API Key to identify the customer

The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.

diagram

The table below shows the combinations of date specificity allowed for the outbound and inbound dates of a return search. For more information on these, see dates.

diagram

Example response from US to anywhere:

{
  "Routes": [
    {
      "OriginId": 1811,
      "DestinationId": 1845,
      "QuoteIds": [
        1,
        2
      ],
      "Price": 326,
      "QuoteDateTime": "2016-11-13T01:30:00"
    },
    {
      "OriginId": 1811,
      "DestinationId": 929,
      "QuoteIds": [
        3
      ],
      "Price": 150,
      "QuoteDateTime": "2016-11-09T17:44:00"
    },
  ...
  ],
  "Quotes": [
    {
      "QuoteId": 1,
      "MinPrice": 381,
      "Direct": true,
      "OutboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 68033,
        "DestinationId": 42833,
        "DepartureDate": "2017-02-03T00:00:00"
      },
      "InboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 42833,
        "DestinationId": 68033,
        "DepartureDate": "2017-02-06T00:00:00"
      },
      "QuoteDateTime": "2016-11-09T21:20:00"
    },
  ...
  ],
  "Places": [
    {
      "PlaceId": 837,
      "Name": "United Arab Emirates",
      "Type": "Country",
      "SkyscannerCode": "AE"
    },
  ...
  ],
  "Carriers": [
    {
      "CarrierId": 29,
      "Name": "Mombasa Air Safari"
    },
    {
      "CarrierId": 173,
      "Name": "Silver Airways"
    },
  ...
  ],
  "Currencies": [
    {
      "Code": "EUR",
      "Symbol": "€",
      "ThousandsSeparator": " ",
      "DecimalSeparator": ",",
      "SymbolOnLeft": false,
      "SpaceBetweenAmountAndSymbol": true,
      "RoundingCoefficient": 0,
      "DecimalDigits": 2
    }
  ]
}

RESPONSE PARAMETERS

Parameter Description
Routes Contains the list of routes available for the search.
Quotes The list of quotes specified in the list of routes.
Places The list of places specified in the list of routes.
Carriers The list of carriers specified in the list of quotes.
Currencies The currency of the quote prices.

Browse Dates

Retrieve the cheapest dates for a given route from our cache.

curl "https://partners.api.skyscanner.net/apiservices/browsedates/v1.0/{country}/{currency}/{locale}/
  {originPlace}/
  {destinationPlace}/
  {outboundPartialDate}/
  {inboundPartialDate}?
  apiKey={apiKey}"
  -X GET
  -H "Accept: application/json"

API endpoint

GET /browsedates/v1.0/{country}/{currency}/{locale}/{originPlace}/{destinationPlace}/{outboundPartialDate}/{inboundPartialDate}

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date (see dates)
inboundPartialDate
OPTIONAL
The return date (see dates). Use empty string for oneway trip.

REQUEST QUERY PARAMETERS

Parameter Description
apiKey
REQUIRED
The API Key to identify the customer

The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.

diagram

The table below shows the combinations of date specificity allowed for the outbound and inbound dates of a return search. For more information on these, see dates.

diagram

Example response from London to Paris:

{
  "Dates": {
    "OutboundDates": [
      {
        "PartialDate": "2016-11",
        "QuoteIds": [
          1,
          2,
          3,
          4,
          5
        ],
        "Price": 66,
        "QuoteDateTime": "2016-11-08T17:28:00"
      },
    ...
    ],
    "InboundDates": [
      {
        "PartialDate": "2016-11",
        "QuoteIds": [
          1
        ],
        "Price": 93,
        "QuoteDateTime": "2016-11-21T17:19:00"
      },
      ...
    ]
  },
  "Quotes": [
    {
      "QuoteId": 1,
      "MinPrice": 381,
      "Direct": true,
      "OutboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 68033,
        "DestinationId": 42833,
        "DepartureDate": "2017-02-03T00:00:00"
      },
      "InboundLeg": {
        "CarrierIds": [
          470
        ],
        "OriginId": 42833,
        "DestinationId": 68033,
        "DepartureDate": "2017-02-06T00:00:00"
      },
      "QuoteDateTime": "2016-11-09T21:20:00"
    },
  ...
  ],
  "Places": [
    {
      "PlaceId": 837,
      "Name": "United Arab Emirates",
      "Type": "Country",
      "SkyscannerCode": "AE"
    },
  ...
  ],
  "Carriers": [
    {
      "CarrierId": 29,
      "Name": "Mombasa Air Safari"
    },
    {
      "CarrierId": 173,
      "Name": "Silver Airways"
    },
  ...
  ],
  "Currencies": [
    {
      "Code": "EUR",
      "Symbol": "€",
      "ThousandsSeparator": " ",
      "DecimalSeparator": ",",
      "SymbolOnLeft": false,
      "SpaceBetweenAmountAndSymbol": true,
      "RoundingCoefficient": 0,
      "DecimalDigits": 2
    }
  ]
}

RESPONSE PARAMETERS

Parameter Description
Dates The list of outbound and inbound dates for which quotes are available.
Quotes The list of quotes specified in the list of Dates.
Places The list of places matching the search results.
Carriers The list of carriers specified in the list of quotes.
Currencies The currency of the quote prices.

Browse Dates (grid)

Retrieve the cheapest dates for a given route from our cache, with the results formatted as a two-dimensional array to be easily displayed as a calendar.

curl "https://partners.api.skyscanner.net/apiservices/browsegrid/v1.0/{country}/{currency}/{locale}/
  {originPlace}/
  {destinationPlace}/
  {outboundPartialDate}/
  {inboundPartialDate}?
  apiKey={apiKey}"
  -X GET
  -H "Accept: application/json"

API endpoint

GET /browsegrid/v1.0/{country}/{currency}/{locale}/{originPlace}/{destinationPlace}/{outboundPartialDate}/{inboundPartialDate}

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date (see dates)
inboundPartialDate
OPTIONAL
The return date (see dates). Use empty string for oneway trip.

REQUEST QUERY PARAMETERS

Parameter Description
apiKey
REQUIRED
The API Key to identify the customer

The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.

diagram

The table below shows the combinations of date specificity allowed for the outbound and inbound dates of a return search. For more information on these, see dates.

diagram

Example response from US to anywhere:

{
  "Dates": [
    [
      null,
      {
        "DateString": "2017-01"
      },
      {
        "DateString": "2017-02"
      },
      {
        "DateString": "2017-03"
      },
    ...
    ],
    ...
  ],
  "Places": [
    {
      "PlaceId": 837,
      "Name": "United Arab Emirates",
      "Type": "Country",
      "SkyscannerCode": "AE"
    },
  ...
  ],
  "Carriers": [
    {
      "CarrierId": 29,
      "Name": "Mombasa Air Safari"
    },
    {
      "CarrierId": 173,
      "Name": "Silver Airways"
    },
  ...
  ],
  "Currencies": [
    {
      "Code": "EUR",
      "Symbol": "€",
      "ThousandsSeparator": " ",
      "DecimalSeparator": ",",
      "SymbolOnLeft": false,
      "SpaceBetweenAmountAndSymbol": true,
      "RoundingCoefficient": 0,
      "DecimalDigits": 2
    }
  ]
}

RESPONSE PARAMETERS

Parameter Description
Dates Matrix of all the dates available with associated prices.
Places The list of places matching the search results.
Carriers The list of carriers matching the search results.
Currencies The currency of the flight prices.

Flights Browse Notes

Origin/Destination Place in Browse Requests

The Place ID used in Browse Requests should be a combination of Place and Type, as shown below. If no type is specified, then it is assumed that the Place Id is a Skyscanner Code. See places for more information on Place Ids.

Type Description
Skyscanner Code (Default) e.g. LHR-sky for London Heathrow
IATA Code e.g. LHR-iata for London Heathrow
Skyscanner Route Node ID e.g. 65698-rnid for London Heathrow

Origins and Destinations can also be more general than airports in Browse Requests:

Origin/Destination Example
Airport e.g. LHR-sky
City e.g. LOND-sky
Country e.g. UK-sky
Anywhere anywhere or everywhere

Outbound/Inbound Date Specificity in Browse Requests

The format of the Outbound/Inbound Dates used in Browse Requests should be one of the following:

Date Specificity Description
Day Format is YYYY-MM-DD, e.g. 2021-03-14
Month Format is YYYY-MM, e.g. 2021-03
Year Format is YYYY, e.g. 2021
Anytime Value is anytime

Flights Live Prices

The Live Pricing Service Session must be created before any pricing data can be obtained. The request contains details of the locations, dates, passengers, cabin class, and user details. These parameters define the session, and cannot be changed within the session (except for passenger numbers).

diagram

Creating the session

Request

curl "https://partners.api.skyscanner.net/apiservices/pricing/v1.0"
    -X POST
    -H "Content-Type: application/x-www-form-urlencoded"
    -d 'cabinclass=Economy
    &country=UK
    &currency=GBP
    &locale=en-GB
    &locationSchema=iata
    &originplace=EDI
    &destinationplace=LHR
    &outbounddate=2017-05-30
    &inbounddate=2017-06-02
    &adults=1
    &children=0
    &infants=0
    &apikey=prtl6749387986743898559646983194'

API endpoint

POST /pricing/v1.0

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Content-Type
REQUIRED
application/x-www-form-urlencoded
X-Forwarded-For
REQUIRED
user's IP address
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PARAMETERS (FORM)

Parameter Description
country
REQUIRED
The market/country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundDate
REQUIRED
The outbound date. Format "yyyy-mm-dd".
inboundDate
OPTIONAL
The return date. Format "yyyy-mm-dd". Use empty string for oneway trip.
cabinClass
OPTIONAL
The cabin class. Can be "Economy", "PremiumEconomy", "Business", "First"
adults
REQUIRED
Number of adults (16+ years). Must be between 1 and 8.
children
OPTIONAL
Number of children (1-16 years). Can be between 0 and 8.
infants
OPTIONAL
Number of infants (under 12 months). Can be between 0 and 8.
includeCarriers
OPTIONAL
Only return results from those carriers. Comma-separated list of carrier ids.
excludeCarriers
OPTIONAL
Filter out results from those carriers. Comma-separated list of carrier ids.
groupPricing
OPTIONAL
If set to true, prices will be obtained for the whole passenger group and if set to false it will be obtained for one adult only - the other adults/children/infants will be ignored. By default it is set to false.
apiKey
REQUIRED
Your API Key.

Response

Example response with polling url:

Location "https://partners.api.skyscanner.net/apiservices/pricing/v1.0/
    {SessionKey}"

A successful response contains no content. The URL to poll the results is provided in the Location header of the response.

RESPONSE PARAMETERS

Element Detail
Location Header Contains the URL for polling the results in the newly created session

Polling the results

Request

Example request with polling url:

curl "{URL returned in Creating the session Location header}?apiKey={apiKey}" -X GET

Use the polling endpoint provided in the successful response of the create request.

API endpoint

GET /pricing/v1.0/{SessionKey}

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
Accept
OPTIONAL
application/json or application/xml
The default response format is XML

REQUEST PARAMETERS (FORM)

Parameter Description
sortType
OPTIONAL
The parameter to sort results on. Can be carrier, duration, outboundarrivetime, outbounddeparttime, inboundarrivetime, inbounddeparttime, price
sortOrder
OPTIONAL
The sort order. 'asc' or 'desc'
duration
OPTIONAL
An integer value representing the total duration in minutes of the outbound leg and inbound leg (in case of return flights). Bear in mind that if the value is set too low it might filter out all flights from the response or if it’s too high it might simply return all flights with no filtering applied
includeCarriers
OPTIONAL
Filter flights by the specified carriers. Must be semicolon-separated IATA codes.
excludeCarriers
OPTIONAL
Filter flights by any but the specified carriers. Must be semicolon-separated IATA codes.
originAirports
OPTIONAL
Origin airports to filter on. List of airport codes delimited by ‘;’
destinationAirports
OPTIONAL
Destination airports to filter on. List of airport codes delimited by ‘;’
stops
OPTIONAL
Filter for maximum number of stops.
0 for direct flights only
1 for flights with maximum one stop
omit for all flights (direct and indirect)
outboundDepartTime
OPTIONAL
Filter for outbound departure time by time period of the day (i.e. morning, afternoon, evening). List of day time period delimited by ‘;’ (acceptable values are M, A, E)
outboundDepartStartTime
OPTIONAL
Filter for start of range for outbound departure time. Format ‘hh:mm’. Time is inclusive.
outboundDepartEndTime
OPTIONAL
Filter for end of range for outbound departure time. Format ‘hh:mm’. Time is inclusive.
inboundDepartTime
OPTIONAL
Filter for inbound departure time by time period of the day (i.e. morning, afternoon, evening). List of day time period delimited by ‘;’ (acceptable values are M, A, E)
inboundDepartStartTime
OPTIONAL
Filter for start of range for inbound departure time. Format ‘hh:mm’. Time is inclusive.
inboundDepartEndTime
OPTIONAL
Filter for end of range for inbound departure time. Format ‘hh:mm’. Time is inclusive.
apiKey
REQUIRED
Your API Key.

Pagination and payload

Example polling request with pagination:

Location "https://partners.api.skyscanner.net/apiservices/pricing/v1.0/
    {SessionKey}?apiKey={apiKey}
    &pageIndex=0
    &pageSize=10"

If you want to supply results in pages, rather than show all the results available, you can use the parameters below.

REQUEST PARAMETERS (PAGINATION)

Parameter Description
pageIndex The desired page number.
pageSize The number of itineraries per page. Defaults to 10 if not specified.

Keep requesting page 0 until you get UpdatesComplete with pageIndex=0 at half a second to one second interval. Once you get UpdatesComplete you may request any page and page size.

For more information about polling the results please see our FAQ

We have no facility to tell you how many pages exist. Beyond the end of results, you will receive successful, empty, responses.


Response

Example polling request response:

{
  "SessionKey": "ab5b948d616e41fb954a4a2f6b8dde1a_ecilpojl_7CAAD17D0CFC34BFDE68DEBFDFD548C7",
  "Query": {
    "Country": "GB",
    "Currency": "GBP",
    "Locale": "en-gb",
    "Adults": 1,
    "Children": 0,
    "Infants": 0,
    "OriginPlace": "2343",
    "DestinationPlace": "13554",
    "OutboundDate": "2017-05-30",
    "InboundDate": "2017-06-02",
    "LocationSchema": "Default",
    "CabinClass": "Economy",
    "GroupPricing": false
  },
  "Status": "UpdatesComplete",
  "Itineraries": [
    {
      "OutboundLegId": "11235-1705301925--32480-0-13554-1705302055",
      "InboundLegId": "13554-1706020700--32480-0-11235-1706020820",
      "PricingOptions": [
        {
          "Agents": [
            4499211
          ],
          "QuoteAgeInMinutes": 0,
          "Price": 83.41,
          "DeeplinkUrl": "http://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=jzj5DawL5zJyT%2bnfe1..."
        },
        ...
        ],
      "BookingDetailsLink": {
        "Uri": "/apiservices/pricing/v1.0/ab5b948d616e41fb954a4a2f6b8dde1a_ecilpojl_7CAAD17D0CFC34BFDE68DEBFDFD548C7/booking",
        "Body": "OutboundLegId=11235-1705301925--32480-0-13554-1705302055&InboundLegId=13554-1706020700--32480-0-11235-1706020820",
        "Method": "PUT"
      }
    },
    ...
   ],
  "Legs": [
    {
      "Id": "11235-1705300650--32302,-32480-1-13554-1705301100",
      "SegmentIds": [
        0,
        1
      ],
      "OriginStation": 11235,
      "DestinationStation": 13554,
      "Departure": "2017-05-30T06:50:00",
      "Arrival": "2017-05-30T11:00:00",
      "Duration": 250,
      "JourneyMode": "Flight",
      "Stops": [
        13880
      ],
      "Carriers": [
        885,
        881
      ],
      "OperatingCarriers": [
        885,
        881
      ],
      "Directionality": "Outbound",
      "FlightNumbers": [
        {
          "FlightNumber": "290",
          "CarrierId": 885
        },
        {
          "FlightNumber": "1389",
          "CarrierId": 881
        }
      ]
    },
    ...
   ],
   "Segments": [
    {
      "Id": 0,
      "OriginStation": 11235,
      "DestinationStation": 13880,
      "DepartureDateTime": "2017-05-30T06:50:00",
      "ArrivalDateTime": "2017-05-30T07:55:00",
      "Carrier": 885,
      "OperatingCarrier": 885,
      "Duration": 65,
      "FlightNumber": "290",
      "JourneyMode": "Flight",
      "Directionality": "Outbound"
    },
    ...
  ],
    "Carriers": [
    {
      "Id": 885,
      "Code": "BE",
      "Name": "Flybe",
      "ImageUrl": "http://s1.apideeplink.com/images/airlines/BE.png",
      "DisplayCode": "BE"
    },
    ...
  ],
  "Agents": [
    {
      "Id": 1963108,
      "Name": "Mytrip",
      "ImageUrl": "http://s1.apideeplink.com/images/websites/at24.png",
      "Status": "UpdatesComplete",
      "OptimisedForMobile": true,
      "BookingNumber": "+448447747881",
      "Type": "TravelAgent"
    },
    ...
  ],
  "Places": [
    {
      "Id": 11235,
      "ParentId": 2343,
      "Code": "EDI",
      "Type": "Airport",
      "Name": "Edinburgh"
    },
    ...
  ],
  "Currencies": [
    {
      "Code": "GBP",
      "Symbol": "£",
      "ThousandsSeparator": ",",
      "DecimalSeparator": ".",
      "SymbolOnLeft": true,
      "SpaceBetweenAmountAndSymbol": false,
      "RoundingCoefficient": 0,
      "DecimalDigits": 2
    },
    ...
  ]
}

The response contains a list of itineraries with, for each one, a list of pricing options containing:

RESPONSE PARAMETERS

Parameter Description
SessionKey The Session key to identify the session.
Query A copy of the query which was submitted.
Status The status of the session – ‘UpdatesPending’ or ‘UpdatesComplete’.
Itineraries A list of itineraries - see below for the itinerary object.
Legs Details of the legs that make up the itineraries: airports, times, overall duration, stops and carrier ids.
Segements Details of the segments of each leg. Including the carrier (or marketing carrier) and the operating carrier.
Carriers Details of the carriers.
Agents Details of the agents who sell the tickets. Can be an airline or a travel agent.
Places A list of all the places that appear in the itineraries.
Currencies A list of the currencies shown in the response.

ITINERARY PARAMETERS

Element Description
OutboundLegId Id of the Outbound Leg
InboundLegId Id of the Inbound Leg
PricingOptions pricing options with agent(s)
the quote age
price (total for all passengers)
deeplink to the agent (the absolute URL needed to make the booking).
In the case where deeplinks are not supplied, you can obtain them with a further step. Refer to the Create/Poll Booking Details documentation.
BookingDetailsLink In some cases such as for group prices you will need to make a second call to retrieve the deeplinks. See the next section Get booking details for details

Please note that you must not force users to your deeplink. Once they have made a search you should provide them with a list of results, and an option to filter that list, to pick the flight that best suits their needs.

Get booking details

Request

curl "https://partners.api.skyscanner.net/apiservices/pricing/v1.0/
    {SessionKey}/booking&apikey={apiKey}"
    -d 'OutboundLegId={OutboundLegId}&InboundLegId={InboundLegId}'
    -X PUT
    -H "Content-Type: application/x-www-form-urlencoded"

A request for booking details 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 booking details session you'll receive the most up-to-date price which we can get from our partners.

The URL is provided in the response of the live prices:

{
  "BookingDetailsLink": {
      "Uri": "/apiservices/pricing/v1.0/abb2a69708624a7ca82762ed73493598_ecilpojl_DCE634A426CBDA30CE7EA3E9068CD053/booking",
      "Body": "OutboundLegId=11235-1705301925--32480-0-13554-1705302055&InboundLegId=13554-1706020700--32480-0-11235-1706020820",
      "Method": "PUT"
  }
}

The full URL and body content are provided in the response from the live pricing results.

API endpoint

PUT /pricing/v1.0/{SessionKey}/booking

TRY IT OUT

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

REQUEST BODY (from live pricing response)

Parameter Description
OutboundLegId
REQUIRED
The outbound leg Id of the itinerary
InboundLegId
OPTIONAL
The inbound leg Id of the itinerary for return flights
adults
OPTIONAL
Number of adults (16+ years). Must be between 1 and 8.
children
OPTIONAL
Number of children (1-16 years). Can be between 0 and 8.
infants
OPTIONAL
Number of infants (under 12 months). Can be between 0 and 8.

Response

Example response:

Location "https://partners.api.skyscanner.net/apiservices/pricing/v1.0/
    {SessionKey}/booking/
    {OutboundLegId};{InboundLegId}"

A successful response contains no content. The URL to poll the booking details is specified in the Location header of the response.

RESPONSE PARAMETERS

Element Detail
Location Header Contains the URL for polling the booking details results

Polling the booking details

Request

curl "{URL returned in Get booking details Location header}?apiKey={apiKey}" -X GET

Use the polling endpoint provided in the successful response of the get booking details request.

API endpoint

GET /pricing/v1.0/{SessionKey}/booking/{OutboundLegId};{InboundLegId}

TRY IT OUT

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

REQUEST BODY (from live pricing response)

Parameter Description
OutboundLegId
REQUIRED
The outbound leg Id of the itinerary
InboundLegId
OPTIONAL
The inbound leg Id of the itinerary for return flights
adults
OPTIONAL
Number of adults (16+ years). Must be between 1 and 8.
children
OPTIONAL
Number of children (1-16 years). Can be between 0 and 8.
infants
OPTIONAL
Number of infants (under 12 months). Can be between 0 and 8.

Response

{
  "Segments": [
    {
      "Id": 1,
      "OriginStation": 11235,
      "DestinationStation": 13554,
      "DepartureDateTime": "2017-05-30T19:25:00",
      "ArrivalDateTime": "2017-05-30T20:55:00",
      "Carrier": 881,
      "OperatingCarrier": 881,
      "Duration": 90,
      "FlightNumber": "1463",
      "JourneyMode": "Flight",
      "Directionality": "Outbound"
    },
    ...
  ],
  "BookingOptions": [
    {
      "BookingItems": [
        {
          "AgentID": 4499211,
          "Status": "Current",
          "Price": 83.41,
          "Deeplink": "http://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=jzj5DawL5[...]",
          "SegmentIds": [
            1,
            2
          ]
        }
      ]
    },
  ],
    "Places": [
    {
      "Id": 13554,
      "ParentId": 4698,
      "Code": "LHR",
      "Type": "Airport",
      "Name": "London Heathrow"
    },
    ...
  ],
  "Carriers": [
    {
      "Id": 881,
      "Code": "BA",
      "Name": "British Airways",
      "ImageUrl": "http://s1.apideeplink.com/images/airlines/BA.png"
    }
  ],
  "Query": {
    "Country": "GB",
    "Currency": "GBP",
    "Locale": "en-gb",
    "Adults": 1,
    "Children": 0,
    "Infants": 0,
    "OriginPlace": "2343",
    "DestinationPlace": "13554",
    "OutboundDate": "2017-05-30",
    "InboundDate": "2017-06-02",
    "LocationSchema": "Default",
    "CabinClass": "Economy",
    "GroupPricing": false
  }
 }

The response contains a list of itineraries with, for each one, a list of pricing options containing:

RESPONSE PARAMETERS

Parameter Description
SessionKey The Session key to identify the session.
Query A copy of the query which was submitted.
Status The status of the session – ‘UpdatesPending’ or ‘UpdatesComplete’.
Itineraries A list of itineraries - see below for the itinerary object.
Legs Details of the legs that make up the itineraries: airports, times, overall duration, stops and carrier ids.
Segements Details of the segments of each leg. Including the carrier (or marketing carrier) and the operating carrier.
Carriers Details of the carriers.
Agents Details of the agents who sell the tickets. Can be an airline or a travel agent.
Places A list of all the places that appear in the itineraries.
Currencies A list of the currencies shown in the response.

Hotels Live Prices

This service responsible for finding the best hotels with rates around a given entity. It provides endpoints to search prices, a map version of it and a hotel prices one.

Endpoint

The Hotels API provides a global endpoint: https://www.skyscanner.net/g/hotels/{version}/ where version points to a specific release.

Headers

The API expects the header:

For example:

x-user-agent: M;B2B

Use flow

All the /prices endpoints are intended to be queried using a polling mechanism using the same parameters as the one that started the polling. The flow of the service is described below:

  1. On the first request that a user does, the service will reply with empty results and the status attribute inside the meta object set to PENDING. Metadata PENDING state.
  2. The client needs to keep polling the service with the same query while the status attribute inside the meta object in the response is PENDING. On each query, the number of results will grow. Metadata PENDING state, partial results.
  3. The status attribute will eventually change to COMPLETED. Meaning that the search cycle has finished. Metadata COMPLETED state.
  4. Clients should implement a self-healing mechanism that should include:
    • Finish the polling after X seconds in the scenarios of having the status PENDING for so long.
    • Retry mechanism in the scenario of a service failure (Ex: retry after 1 seconds)

Search Prices

Entity Request

Given an entity_id, this endpoint will give back hotels with prices around the provided entity. The supported entities are any, from cities, islands, nations, places to Hotels.

The Hotels API, first of all, tries to search for the hotels related to an entity using an explicit relation - cities, administration zones, and nations, and if the results are less than a minimum number of hotels the query turns out in a geographical query. This geographical query seeks for hotels using different distances, from 500 meters to 50km, till finding this minimum amount or get the maximum distance.

When a Hotel is used as the entity queried for, the service will treat this as an ad-hoc case. The hotel used as an entity will be serialized into the hotel_pivot object with its offers. Meanwhile, it will be removed from the results object.

The following URL shows how the search prices endpoint can be used to retrieve prices for those hotels that are placed in Barcelona

API endpoint

B2B partner, please use v1 endpoint

GET /v1/prices/search/entity/{entity_id}

V3 is a new endpoint that supports direct booking and cug overriding.

GET /v3/prices/search/entity/{entity_id}

GET "https://www.skyscanner.net/g/hbe-bellboy/v1/prices/search/entity/{entity_id}
  ?market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&sort={sort_method}&limit={limit}&offset={offset}
  &partners_per_hotel={num_partners}&enhanced={enhanced}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
entity_id
REQUIRED
Entity to search for hotels prices in it
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve for each hotel
between 1-30, default: 1
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery or dynamic
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
sort
OPTIONAL
Sort by a given attribute. By default the relevance sorting is applied
One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
OPTIONAL
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
price_max
OPTIONAL
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
price_buckets
OPTIONAL
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
price_bucket_step
OPTIONAL
Fix step for the buckets. Need to be used together with price_buckets, default step will be dynamic
price_bucket_number
OPTIONAL
This parameter allows you to set the price buckets number, default: 5
price_buckets_strategy
OPTIONAL
price_buckets_strategy is 2 means use the new price buckets thread (split most 30 buckets), others use old price bucket thread (split into price_bucket_number buckets at most)
price_buckets_min
OPTIONAL
Filter. Return only hotels where the cheaper price is at least price_buckets_min (included). Would not be applied if price_buckets_strategy is not 2
price_buckets_max
OPTIONAL
Filter. Return only hotels where the cheaper price is at most price_buckets_max (included). Would not be applied if price_buckets_strategy is not 2
district
OPTIONAL
OR filter. Return only results where a district matches
stars
OPTIONAL
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
city
OPTIONAL
OR filter. When the search is done for an entity that contains different cities, this filter is available. Returns only results where the cities match. The values must be TravelAPI entity ids
chain
OPTIONAL
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
amenities
OPTIONAL
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
cancellation
OPTIONAL
OR filter. Return only results where a cancellation policies matches. Options are:
free_cancellation, non_refundable, refundable, special_conditions
meal_plan
OPTIONAL
OR filter. Return only results where a meal plan matches. Options are:
room_only, breakfast_included, half_board, full_board, all_inclusive
property_type
OPTIONAL
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
guest_rating
OPTIONAL
OR filter. Return only results where a guest rating matches. The values must be TravelAPI ids
guest_type
OPTIONAL
OR filter. Return only results where a guest type matches. The values must be TravelAPI ids
hotel_name
OPTIONAL
Filter. Return only results where hotel name matches
limit
OPTIONAL
Number of results to retrieve
between 1-30, default: 15
offset
OPTIONAL
How many results to skip from the first position. Useful for paginating
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
default: 3
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. Available options are:
filters: Returns extra object in the response including the filters like stars, district, city, etc.
price_slider: Return the price_slider.
partners: Returns information about the active partners in the system. is_official, the logo, the name and the website_id.
images: Returns images for the hotels. With the partner website_id and the urls.
amenities: Returns the hotels amenities.
query_location: Returns the location (higher level entities according to the searched entity) and map boundary (the coordinates of the search area).
extras: Returns the hotel chain of the hotels.
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
detailed_reviews: Returns information from the hotel reviews provided by Trustyou (http://www.trustyou.com/)
index
OPTIONAL
Mark the times of the same requests sent to bellboy, start from 1, default: 0
sorting_version
OPTIONAL
(B2B partner needn't set the value) Hotel sorting score calculation options
mr4: RelevanceContainerScoring,
mr5: IronRankScoring,
mr6: IronCatRankScoring,
mr4a: RelevanceContainerHotelModelScoring,
mr7: HotelBookingModelScoring,
mr8: IronTrainModelScoring,
default: mr4
t_version
OPTIONAL
(B2B partner needn't set the value) Used for ABTesting, default is ''
app_name
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
appVersion
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''
search_id
OPTIONAL
(B2B partner needn't set the value) Elasticsearch ID, for the same request, first time needn't set the value, second time can get the value from prior response, default is ''
cug_segments
OPTIONAL
(B2B partner needn't set the value) Only v3 supports, it allows you to add special cug segments for user. Options are:
mobile, logged_in, business, apps, flight_booked
cug
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to reorder hotels by cug price. Options are:
1: cug hotels would be ranked ahead, 2: high cug hotels would be ranked ahead.
default is 0, order by parameter sort

Note: The OR and AND filters allow multiple values coma separated. For example: &amenities=Lift,Bar

Response

Example response:

{
    "correlation_id": "3889f7d3-65d2-40e8-8034-4accb18bade9",
    "meta": {
        "status": "COMPLETED",
        "search_id": "915c591f9fd48c64c9c0ad748d6e6851f09f5dbc4d608495479f1a07e1e7a968",
        "total": 311,
        "completion_percentage": 100,
        "total_available": 73,
        "hotels_filtered": 73,
        "offers": 459,
        "total_available_filtered": 73,
        "request_id": "e3f5c49b-3139-4311-99e1-5ca746541f58"
    },
    "results": {
        "location": [
            {
                "entity_type": "Island",
                "entity_id": "81972530",
                "name": "Malta Island"
            },
            {
                "entity_type": "Nation",
                "entity_id": "29475371",
                "name": "Malte"
            }
        ],
        "hotels": [
            {
                "coordinates": [
                    14.50658,
                    35.91218
                ],
                "stars": "3",
                "offer_types": [
                    "META"
                ],
                "district": "[]",
                "reviews_count": 868,
                "city": "33349710",
                "cheapest_offer_type": "META",
                "amenities": [
                    "Lift",
                    "ConciergeService",
                    "Laundry",
                    ...
                ],
                "property_type": "Hotel",
                "distance": 6142.49539734,
                "rating": {
                    "desc": "rating_satisfactory",
                    "value": 6.9
                },
                "name": "Roma Hotel",
                "hotel_id": "47053033",
                "images": [
                    {
                        "gallery": "https://d2xf5gjipzd8cd.cloudfront.net/available/353235256/mca.jpg",
                        "provider": "h_ct",
                        "category": "Beach",
                        "dynamic": "https://d2xf5gjipzd8cd.cloudfront.net/available/353235256/353235256_WxH.jpg",
                        "thumbnail": "https://d2xf5gjipzd8cd.cloudfront.net/available/353235256/mt.jpg"
                    },
                    ...
                ],
                "offers": [
                    {
                        "partner_id": "h_hc",
                        "price": 78,
                        "price_gbp": 69,
                        "available": null,
                        "strike_through": null,
                        "meal_plan": "breakfast_included",
                        "is_official": true,
                        "closed_user_groups": null,
                        "dbook_link": null,
                        "room_type": [
                            "triple_room"
                        ],
                        "deeplink": "www.skyscanner.fr/hotel_deeplink/4.0/FR/fr-FR/EUR/h_hc/47053033/2019-06-18/2019-06-19/hotel/hotel/hotels?guests=1&rooms=1&legacy_provider_id=17&request_id=e3f5c49b-3139-4311-99e1-5ca746541f58&q_datetime_utc=2019-06-13T02%3A44%3A29&appName=mobileweb&appVersion=2.0&ticket_price=78&deeplink_data=eyJ1cmwiOiAiaHR0cHM6Ly9mci5ob3RlbHMuY29tL1BQQ0hvdGVsRGV0YWlscz9hZHVsdHNQZXJSb29tPTEmdmlldz1wcmljZXMmbXBoPTAmcG9zPUhDT01fRlImbnVtYmVyT2ZSb29tcz0xJnJhdGVwbGFuaWQ9MjA2Nzc3OTk1JmhvdGVsaWQ9Mjk5NTg4JmRlcGFydHVyZURhdGU9MTkvMDYvMjAxOSZsb2NhbGU9ZnJfRlImYXJyaXZhbERhdGU9MTgvMDYvMjAxOSIsICJmaWVsZHMiOiB7InNpZ25hdHVyZSI6ICJmNTkyYjZiNjU0OWUxMDBiYTNkNzM1NDNhOGZmNGNmOSJ9fQ%3D%3D&max_price=78.0&channel=website&max_price=78.0&channel=website",
                        "cancellation_text": null,
                        "cancellation": "non_refundable"
                    },
                    ...
                ],
                "relevance": 2000000.3686611408
            },
            ...
        ],
        "price_includes": [
            "vat",
            "other_taxes"
        ],
        "average_min_price": 139.73,
        "filters": {
            "stars": [
                {
                    "id": "5",
                    "max_price": null,
                    "count": 7,
                    "min_price": 182
                },
                ...
            ],
            "chain": [
                {
                    "id": "Corinthia",
                    "max_price": null,
                    "count": 1,
                    "min_price": 182
                }
            ],
            "price_buckets": [
                {
                    "id": "PR_BK_0",
                    "max_price": 50,
                    "count": 7,
                    "min_price": null
                },
                ...
            ],
            "district": [],
            "city": [
                {
                    "id": "33350111",
                    "max_price": null,
                    "count": 27,
                    "min_price": 36
                },
                ...
            ],
            "meal_plan": [
                {
                    "id": "breakfast_included",
                    "max_price": null,
                    "count": 43,
                    "min_price": 28
                },
                ...
            ],
            "guest_rating": [
                {
                    "id": "6",
                    "text": "rating_satisfactory",
                    "count": 3,
                    "min_price": null,
                    "max_price": null
                },
                ...
            ],
            "amenities": [
                {
                    "id": "WifiService",
                    "max_price": null,
                    "count": 70,
                    "min_price": 20
                },
                ...
            ],
            "property_type": [
                {
                    "id": "Hotel",
                    "max_price": null,
                    "count": 42,
                    "min_price": 50
                },
                ...
            ],
            "guest_type": [
                {
                    "id": "solo",
                    "max_price": null,
                    "count": 1,
                    "min_price": null
                },
                ...
            ],
            "cancellation": [
                {
                    "id": "free_cancellation",
                    "max_price": null,
                    "count": 26,
                    "min_price": 28
                },
                ...
            ]
        },
        "partners": [
            {
                "website_id": "h_ay",
                "is_dbook": false,
                "logo": "www.skyscanner.fr/images/websites/220x80/h_ay.png",
                "name": "ibis Styles",
                "is_official": true,
                "partner_type": "Group"
            },
            ...
        ],
        "hotel_pivot": null,
        "map_boundary": {
            "s_w_lng": 14.448729,
            "s_w_lat": 35.893651,
            "n_e_lat": 35.913651,
            "n_e_lng": 14.51241
        },
        "closed_user_group_deals": [],
        "entity": {
            "name": "Luqa",
            "entity_type": "City",
            "centroid": {
                "type": "Point",
                "coordinates": [
                    14.4886111132,
                    35.858888893
                ]
            },
            "entity_id": "46395655",
            "official_center": {
                "type": "Point",
                "coordinates": [
                    14.4892913,
                    35.859653
                ]
            }
        }
    },
    "count": 15,
    "translations": {
        "CUG_create_account_to_unlock_deals_msg": "Créez un compte pour avoir accès à des offres exclusives",
        "CUG_deal": "OFFRE",
        ...
    }
}

RESPONSE PARAMETERS

Element Detail
correlation_id An identifier of the request
meta Contains metadata regarding the search cycle such as it's status
count Number of hotels
results An object containing the hotels and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Location Request

This endpoint gives back hotels with prices too but instead from an entity, around specific coordinates. It takes the coordinades as an input to provide the hotels. Provides the search by current location functionality.

API endpoint

GET /v1/prices/search/location/{lon,lat}

GET "https://www.skyscanner.net/g/hotels/v1/prices/search/location/{lon,lat}
  ?market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&sort={sort_method}&limit={limit}&offset={offset}
  &partners_per_hotel={num_partners}&enhanced={enhanced}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
apikey
REQUIRED
This header is required to be on every single request any client does (it could also be accepted via query parameter)
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
location
REQUIRED
Location to search hotels near it. Following the format: lon,lat
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve per each hotel
between 1-30, default: 3
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
sort
OPTIONAL
Sort by a given attribute. By default the relevance sorting is applied
One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
OPTIONAL
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
price_max
OPTIONAL
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
price_buckets
OPTIONAL
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
district
OPTIONAL
OR filter. Return only results where a district matches
stars
OPTIONAL
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
city
OPTIONAL
OR filter. When the search is done for an entity that contains different cities, this filter is available. Returns only results where the cities match. The values must be TravelAPI entity ids
chain
OPTIONAL
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
amenities
OPTIONAL
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
cancellation
OPTIONAL
OR filter. Return only results where a cancellation policies matches. Options are:
free_cancellation, non_refundable, refundable, special_conditions
meal_plan
OPTIONAL
OR filter. Return only results where a meal plan matches. Options are:
room_only, breakfast_included, half_board, full_board, all_inclusive
property_type
OPTIONAL
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
hotel_name
OPTIONAL
Filter. Return only results where hotel name matches
limit
OPTIONAL
Number of results to retrieve
between 1-30, default: 30
offset
OPTIONAL
How many results to skip from the first position. Useful for paginating
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
default: 3
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. The available options are:
filters: Returns extra object in the response including the filters like stars, district, city, etc.
price_slider: Return the price_slider.
partners: Returns information about the active partners in the system. is_official, the logo, the name and the website_id.
images: Returns images for the hotels. With the partner website_id and the urls.
amenities: Returns the hotels amenities.
query_location: Returns the location (higher level entities according to the searched entity) and map boundary (the coordinates of the search area).
extras: Returns the hotel chain of the hotels.
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.

Note: The OR and AND filters allow multiple values coma separated. For example: &amenities=Lift,Bar

Response

The response is the same as the search entity one but without the hotel_pivot

RESPONSE PARAMETERS

Element Detail
correlation_id An identifier of the request
meta Contains metadata regarding the search cycle such as it's status
count Number of hotels
results An object containing the hotels and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Search Prices, map version

Entity Request

Given an entity, this endpoint will give you back the hotels with prices around the provided entity, having the same intentions than the regular search prices but modifying the response to suit it in environments where the information has to be rendered in a map. These differences can be summarized into the following points:

API endpoint

GET /v1/prices/map/entity/{entity_id}

GET "https://www.skyscanner.net/g/hotels/v1/prices/map/entity/{entity_id}
  ?market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&sort={sort_method}&limit={limit}&offset={offset}
  &partners_per_hotel={num_partners}&enhanced={enhanced}&bbox={left,bottom,right,top}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
apikey
REQUIRED
This header is required to be on every single request any client does (it could also be accepted via query parameter)
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
entity_id
REQUIRED
Entity to search for hotels prices in it
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve per each hotel
between 1-30, default: 3
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
sort
OPTIONAL
Sort by a given attribute. By default the relevance sorting is applied
One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
OPTIONAL
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
price_max
OPTIONAL
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
price_buckets
OPTIONAL
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
district
OPTIONAL
OR filter. Return only results where a district matches
stars
OPTIONAL
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
city
OPTIONAL
OR filter. When the search is done for an entity that contains different cities, this filter is available. Returns only results where the cities match. The values must be TravelAPI entity ids
chain
OPTIONAL
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
amenities
OPTIONAL
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
cancellation
OPTIONAL
OR filter. Return only results where a cancellation policies matches. Options are:
free_cancellation, non_refundable, refundable, special_conditions
meal_plan
OPTIONAL
OR filter. Return only results where a meal plan matches. Options are:
room_only, breakfast_included, half_board, full_board, all_inclusive
property_type
OPTIONAL
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
hotel_name
OPTIONAL
Filter. Return only results where hotel name matches
limit
OPTIONAL
Number of results to retrieve
between 1-100, default: 100
offset
OPTIONAL
How many results to skip from the first position. Useful for paginating
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners. Map only supports 1 partner per hotel
default: 1
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. The available options are:
filters: Returns extra object in the response including the filters like stars, district, city, etc.
price_slider: Return the price_slider.
query_location: Returns the location (higher level entities according to the searched entity) and map boundary (the coordinates of the search area).
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
bbox
OPTIONAL
Bounding Box coordinates in which to look for hotels as bbox=left,bottom,right,top
Example: -4.051,50.478,1.853,52.909

Note: The OR and AND filters allow multiple values coma separated. For example: &amenities=Lift,Bar

Response

Example response:

{
  "correlation_id": "d93ddb4d-c97c-4979-9627-e188e02c8409",
  "meta": {
    "status": "COMPLETED",
    "total": 5500,
    "total_available": 4092,
    "completion_percentage": 100,
    "offers": 67275,
    "hotels_filtered": 0
  },
  "count": 15,
  "results": {
    "filters": {
      "district": [
        {
          "id": "27562177",
          "min_price": 45,
          "max_price": null,
          "count": 94
        },
        ...
      ],
      "chain": [
        {
          "id": "Holiday Inn",
          "min_price": 74,
          "max_price": null,
          "count": 74
        },
        ...
      ],
      "cancellation": [
        {
          "id": "free_cancellation",
          "min_price": 36,
          "max_price": null,
          "count": 2207
        },
        ...
      ],
      "city": [
        {
          "id": "27544008",
          "min_price": 32,
          "max_price": null,
          "count": 856
        },
        ...
      ],
      "amenities": [
        {
          "id": "WifiService",
          "min_price": 32,
          "max_price": null,
          "count": 3327
        },
        ...
      ],
      "price_buckets": [
        {
          "id": "PR_BK_0",
          "min_price": null,
          "max_price": 80,
          "count": 130
        },
        ...
      ],
      "stars": [
        {
          "id": "4",
          "min_price": 58,
          "max_price": null,
          "count": 1220
        },
        ...
      ],
      "meal_plan": [
        {
          "id": "room_only",
          "min_price": 32,
          "max_price": null,
          "count": 2060
        },
        ...
      ],
      "property_type": [
        {
          "id": "Hotel",
          "min_price": 32,
          "max_price": null,
          "count": 3486
        },
        ...
      ]
    },
    "map_boundary": {
      "n_e_lng": 1.72864,
      "s_w_lng": -2.04675,
      "s_w_lat": 50.63341,
      "n_e_lat": 52.7619
    },
    "hotel_pivot": null,
    "hotels": [
      {
        "reviews_count": 284,
        "coordinates": [
          1.2961,
          51.12328
        ],
        "hotel_id": "46997257",
        "images": [
          {
            "provider": "h_dp",
            "gallery": "http://d3ba47lalua02r.cloudfront.net/available/50049482/mca.jpg",
            "thumbnail": "http://d3ba47lalua02r.cloudfront.net/available/50049482/mt.jpg"
          }
        ],
        "name": "The West Bank Guest House",
        "offers": [
          {
            "price_gbp": 58,
            "price": 58,
            "deeplink": "www.skyscanner.net/hotel_deeplink/4.0/UK/en-GB/GBP/h_xp/46997257/2017-04-30/2017-05-02/hotel/hotel/hotels?guests=1&ticket_price=58&rooms_left=1&appVersion=2.0&q_datetime_utc=2017-04-25T13%3A37%3A37&rooms=1&deeplink_ids=eu-west-1.prod_ae42baa45b08402e0a109287d1780528&request_id=b745fa26-f166-478f-b52c-2fcee3f413fe&appName=web&legacy_provider_id=1&max_price=132.0",
            "closed_user_groups": null
          }
        ],
        "stars": "4",
        "rating": {
          "value": 7.7,
          "desc": "rating_good"
        }
      },
      ...
    ],
    "location": [
      {
        "name": "United Kingdom",
        "entity_id": "29475375",
        "entity_type": "Nation"
      }
    ]
  },
  "translations": {
    "CUG_create_account_to_unlock_deals_msg": "Create an account to unlock exclusive deals",
    "CUG_deal": "DEAL",
    ...
  }
}

RESPONSE PARAMETERS

Element Detail
correlation_id An identifier of the request
meta Contains metadata regarding the search cycle such as it's status
count Number of hotels
results An object containing the hotels and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Location Request

This endpoint gives back hotels with prices too with map specific features but instead from an entity, around specific coordinates.

Provides the search by current location functionality.

API endpoint

GET /v1/prices/map/location/{lon,lat}

GET "https://www.skyscanner.net/g/hotels/v1/prices/map/location/{lon,lat}
  ?market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&sort={sort_method}&limit={limit}&offset={offset}
  &partners_per_hotel={num_partners}&enhanced={enhanced}&bbox={left,bottom,right,top}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
apikey
REQUIRED
This header is required to be on every single request any client does (it could also be accepted via query parameter)
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
location
REQUIRED
Location to search hotels near it. Following the format: lon,lat
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve per each hotel
between 1-30, default: 3
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
sort
OPTIONAL
Sort by a given attribute. By default the relevance sorting is applied
One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
OPTIONAL
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
price_max
OPTIONAL
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
price_buckets
OPTIONAL
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
district
OPTIONAL
OR filter. Return only results where a district matches
stars
OPTIONAL
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
city
OPTIONAL
OR filter. When the search is done for an entity that contains different cities, this filter is available. Returns only results where the cities match. The values must be TravelAPI entity ids
chain
OPTIONAL
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
amenities
OPTIONAL
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
cancellation
OPTIONAL
OR filter. Return only results where a cancellation policies matches. Options are:
free_cancellation, non_refundable, refundable, special_conditions
meal_plan
OPTIONAL
OR filter. Return only results where a meal plan matches. Options are:
room_only, breakfast_included, half_board, full_board, all_inclusive
property_type
OPTIONAL
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
hotel_name
OPTIONAL
Filter. Return only results where hotel name matches
limit
OPTIONAL
Number of results to retrieve
between 1-100, default: 100
offset
OPTIONAL
How many results to skip from the first position. Useful for paginating
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners. Map only supports 1 partner per hotel
default: 1
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. The available options are:
filters: Returns extra object in the response including the filters like stars, district, city, etc.
price_slider: Return the price_slider.
query_location: Returns the location (higher level entities according to the searched entity) and map boundary (the coordinates of the search area).
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
bbox
OPTIONAL
Bounding Box coordinates in which to look for hotels as bbox=left,bottom,right,top
Example: -4.051,50.478,1.853,52.909

Note: The OR and AND filters allow multiple values coma separated. For example: &amenities=Lift,Bar

Response

The response is the same as the search map entity one

RESPONSE PARAMETERS

Element Detail
correlation_id An identifier of the request
meta Contains metadata regarding the search cycle such as it's status
count Number of hotels
results An object containing the hotels and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Hotel Prices

Request

Given a hotel, this endpoint will give back the hotel with all the information and live prices. To reuse the prices already fetched by previous calls to the search endpoint the parameter entity_id must be filled with the same entity id. Otherwise, the system will start fetching prices from the beginning for this specific hotel. Is a regular practice following the user flow first of all search for prices using the search prices endpoint and then retrieve more specific information - perhaps the detailed reviews - about one of the hotels using the hotel prices endpoint.

API endpoint

B2B partner please use v1 endpoint

GET /v1/prices/hotel/{hotel_id}

V3 is a new endpoint which supports dbook booking and cug overriding.

GET /v3/prices/hotel/{hotel_id}

GET "https://www.skyscanner.net/g/hotels/v1/prices/hotel/{hotel_id}
  ?entity_id=27539733&market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&partners_per_hotel={num_partners}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
apikey
REQUIRED
This header is required to be on every single request any client does (it could also be accepted via query parameter)
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
hotel_id
REQUIRED
Hotel to search prices for
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve for each hotel
between 1-30, default: 1
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery or dynamic
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
default: 3
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. The available options are:
location: Returns the higher level entities according to the search entity.
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
entity_id
OPTIONAL
This field should be present when this endpoint has been called when the user has already looked for prices in an upper entity containing the hotel in order to reuse the cached prices.
For example: A user searches for prices in Paris (the service stores Paris prices). And then, the user opens a hotel details page. In this case, the request to the service must have the entity_id param fulfilled with the Paris entity_id in order to reuse the prices.
index
OPTIONAL
Mark the times of the same requests sent to bellboy, start from 1, default: 0
t_version
OPTIONAL
(B2B partner needn't set the value) Used for ABTesting, default is ''
app_name
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
appVersion
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''
search_id
OPTIONAL
(B2B partner needn't set the value) Elasticsearch ID, the value can be got from search response or first request response, default is ''
cug_segments
OPTIONAL
(B2B partner needn't set the value) Only v3 supports, it allows you to add special cug segments for user. Options are:
mobile, logged_in, business, apps, flight_booked
ignore_cache
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to bypass Elasticsearch and Redis cache. Options are:
0: use cache, 1: bypass cache, default: 0

Response

Example response:

{
    "meta": {
        "completion_percentage": 100,
        "search_id": "ca7a935824954024c5228394530677d66ecb7d5b24973a4d8afda9b911c4fb0f",
        "status": "COMPLETED",
        "offers": 14,
        "request_id": "39bb7709-2707-4ad5-8b74-7193810224fe"
    },
    "translations": {
        "CUG_create_account_to_unlock_deals_msg": "Créez un compte pour avoir accès à des offres exclusives",
        "CUG_deal": "OFFRE",
        ...
    },
    "results": {
        "partners": [
            {
                "is_dbook": false,
                "website_id": "h_98",
                "is_official": true,
                "name": "Travelanium",
                "logo": "www.skyscanner.fr/images/websites/220x80/h_98.png",
                "partner_type": "CRS"
            },
            ...
        ],
        "location": [
            {
                "entity_type": "District",
                "name": "Estación de Gran Vía",
                "entity_id": "27562647"
            },
            ...
        ],
        "hotel": {
            "chain_id": "90718893",
            "checkin_time": "14:00",
            "district": "27562647",
            "name_en": "Hotel Madrid Gran Via 25 Managed By Melia",
            "description": "https://dmf5e20brgddt.cloudfront.net/547b_2533_fr-FR_b2b",
            "reviews_count": 3011,
            "group_name": [
                "Meliá"
            ],
            "dbook_partners": [],
            "images": [
                {
                    "thumbnail": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/mt.jpg",
                    "provider": "h_ct",
                    "category": "Bedroom",
                    "dynamic": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/353312696_WxH.jpg",
                    "gallery": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/mca.jpg"
                },
                ...
            ],
            "property_type": "Hotel",
            "offers": [
                {
                    "closed_user_groups": null,
                    "available": null,
                    "room_type": [
                        "double_room"
                    ],
                    "deeplink": "www.skyscanner.fr/hotel_deeplink/4.0/FR/fr-FR/EUR/h_me/46942019/2019-06-18/2019-06-19/hotel/hotel/hotels?guests=1&rooms=1&legacy_provider_id=1751086970&request_id=39bb7709-2707-4ad5-8b74-7193810224fe&q_datetime_utc=2019-06-12T12%3A02%3A15&appName=mobileweb&appVersion=2.0&ticket_price=166&deeplink_data=eyJ1cmwiOiAiaHR0cHM6Ly9tbS5tZWxpYS5jb20vZHluY2xpY2svbWVsaWEtY29tLz9ldGYtcHVibGlzaGVyPXNreXNjYW5uZXImZXRmLW5hbWU9bWV0YXNlYXJjaF9za3lzY2FubmVyX0ZSLXNreXNjYW5uZXImZXRmLXByZHJlZj0yODE5JmVzZWctbmFtZT1OTyZlc2VnLWl0ZW09Tk8mZXRmLW1lZGlhcGxhbj1GUi1JbmZsdWVuY2VyJmV1cmw9aHR0cDovL3d3dy5tZWxpYS5jb20vblJlc2VydmF0aW9ucy9qc3AvQ19SYXRlcy5qc3A%2FaWRQYXJ0bmVyPVNLWVNDQU5ORVJfRlImY29kaWdvSG90ZWw9MjgxOSZub2NoZXM9MSZpZExhbmc9ZnImZGlhPTE4Jm1lcz0wNiZhbmlvPTIwMTkmaGFiaXRhY2lvbmVzPTEmYWR1bHRzUm9vbTE9MSZjaGlsZHJlblJvb20xPTAmSWRQcm09U0tZU0NBTk5FUiZkaXZpc2FQcmVzZW50YWNpb249JnV0bV9zb3VyY2U9c2t5c2Nhbm5lciZ1dG1fbWVkaXVtPW1ldGFzZWFyY2gmdXRtX2NhbXBhaWduPXNreXNjYW5uZXJfRlImdXRtX2NvbnRlbnQ9MjgxOSZtYXJrZXQ9RlIiLCAiZmllbGRzIjogeyJzaWduYXR1cmUiOiAiYjBkZTZkNTFjMzk3YWRiZGEwMjlhOThhMGMxYWU4ZTcifX0%3D&max_price=205.0&channel=website",
                    "dbook_link": null,
                    "partner_id": "h_me",
                    "price": 166,
                    "is_official": true,
                    "price_gbp": 148,
                    "meal_plan": "breakfast_not_included",
                    "strike_through": null,
                    "cancellation": "non_refundable",
                    "cancellation_text": "Si vous annulez ou modifiez Annuler ou Modifier ou vous ne vous présentez pas 100 PCT vous sera débité en frais d'annulation"
                },
                ...
            ],
            "total_rooms": 175,
            "name": "Hotel Madrid Gran Vía 25, Managed by Meliá",
            "stars": "3",
            "amenities": [
                "Bar",
                "FrontDesk24hService",
                "Restaurant",
                ...
            ],
            "chain": "Meliã",
            "address": {
                "street_address": "Gran Via 25",
                "adm1": "Communauté de Madrid",
                "postcode": "28013",
                "district": "Estación de Gran Vía",
                "city": "Madrid",
                "nation": "Espagne"
            },
            "city": "27544850",
            "group_id": [
                "90719217"
            ],
            "checkout_time": "12:00",
            "hotel_id": "46942019",
            "official_website": "h_me",
            "rich_media": null,
            "rating": {
                "value": 8.1,
                "desc": "rating_very_good"
            },
            "reviews": {
                "badges": [
                    {
                        "badge_type": "hotel_type",
                        "text": "Très bon hôtel en ville",
                        "subtext": "Top 11% en ville"
                    },
                    ...
                ],
                "categories": [
                    {
                        "score": 95,
                        "entries": [
                            "Très bien situé",
                            "Emplacement parfait",
                            "Situation géographique excellente",
                            "Bonne situation"
                        ],
                        "id": "14",
                        "name": "Site"
                    },
                    ...
                ],
                "guest_types": [
                    {
                        "perc": 62,
                        "value": "couple",
                        "score": 86
                    },
                    ...
                ],
                "count": 3011,
                "summary": "Très bon hôtel pour une escapade citadine. Parfait pour le tourisme et proche des boutiques."
            },
            "coordinates": [
                -3.70228,
                40.42003
            ],
            "policies": "https://dmf5e20brgddt.cloudfront.net/a27b_2533_fr-FR_policies_b2b"
        },
        "price_includes": [
            "vat",
            "other_taxes"
        ]
    }
}

RESPONSE PARAMETERS

Element Detail
meta Contains metadata regarding the search cycle such as it's status
results An object containing the hotel and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Hotels Prices

Request

Given multiple hotels (maximum 50), this endpoint will give back the hotels with all the information and live prices.

API endpoint

GET /v2/prices/hotel/{hotel_ids}

GET "https://www.skyscanner.net/g/hbe-bellboy/v2/prices/hotel/{hotel_ids}
  ?market={market}&locale={locale}&checkin_date={checkin_date}&checkout_date={checkout_date}
  &currency={currency}&adults={adults}&rooms={rooms}&images={images}&image_resolution={resolution}
  &image_type={type}&boost_official_partners={boost}&partners_per_hotel={num_partners}"

TRY IT OUT

Run in Postman

HEADER VALUES

Header Value
apikey
REQUIRED
This header is required to be on every single request any client does (it could also be accepted via query parameter)
x-user-agent
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B, where:
Device is:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type

URI PARAMETERS

Parameter Description
hotel_ids
REQUIRED
Hotels to search prices for, using ',' to join the hotels
version
REQUIRED
API version

QUERY PARAMETERS

Parameter Description
market
REQUIRED
Matching [A-Z]{2}
locale
REQUIRED
Matching [a-z]{2}-[A-Z]{2}
currency
REQUIRED
Currency code
checkin_date
REQUIRED
YYYY-MM-DD
checkout_date
REQUIRED
YYYY-MM-DD
rooms
REQUIRED
Number of rooms
default: 1
adults
REQUIRED
Number of adults
default: 2
apikey
REQUIRED
This parameter is required to be on every single request any client does
images
OPTIONAL
Maximum number of images to retrieve per each hotel
between 1-30, default: 1
image_resolution
OPTIONAL
Resolution options
high or low, default: high
image_type
OPTIONAL
The format of the images
thumbnail or gallery or dynamic
boost_official_partners
OPTIONAL
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
partners_per_hotel
OPTIONAL
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
default: 3
enhanced
OPTIONAL
This parameter allows you to add additional content to the default response. The available options are:
location: Returns the higher level entities according to the search entity.
translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
app_name
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
appVersion
OPTIONAL
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''

Response

Example response:

{
    "results": {
        "partners": [
            {
                "logo": "www.skyscanner.net/images/websites/220x80/d_ct.png",
                "name": "Trip.com",
                "is_official": false,
                "partner_type": "OTA",
                "website_id": "d_ct",
                "is_dbook": true
            },
            ...
        ],
        "hotels": [
            {
                "group_name": [
                    "Meliá"
                ],
                "amenities": [
                    "Laundry",
                    "Parking",
                    ...
                ],
                "name": "Hotel Madrid Gran Via 25 Managed By Melia",
                "images": [
                    {
                        "provider": "h_ct",
                        "dynamic": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/353312696_WxH.jpg",
                        "thumbnail": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/mt.jpg",
                        "category": "Bedroom",
                        "gallery": "https://d2xf5gjipzd8cd.cloudfront.net/available/353312696/mca.jpg"
                    },
                    ...
                ],
                "rich_media": null,
                "location": [
                    {
                        "entity_id": "27562647",
                        "name": "Gran Vía",
                        "entity_type": "District"
                    },
                    ...
                ],
                "rating": {
                    "desc": "rating_very_good",
                    "value": 8.1
                },
                "offers": [
                    {
                        "cancellation_text": null,
                        "meal_plan": null,
                        "partner_id": "d_ct",
                        "deeplink": "www.skyscanner.net/None&max_price=199.0&channel=website",
                        "available": null,
                        "is_official": false,
                        "room_type": [
                            "generic_room"
                        ],
                        "price": 128,
                        "price_gbp": 128,
                        "strike_through": null,
                        "closed_user_groups": null,
                        "cancellation": null,
                        "dbook_link": "www.skyscanner.net/hotels/book/46942019/d_ct?adults=1&rooms=1&checkin=2019-06-18&checkout=2019-06-19&requestId=6431b3f0-09b8-4d8b-9808-0bc551f9725c&priceCurrency=GBP&appId=hate-squad&priceAmount=128"
                    },
                    ...
                ],
                "city": "27544850",
                "reviews_count": 3022,
                "reviews": {
                    "categories": [
                        {
                            "entries": [
                                "Great location",
                                "Fantastic position",
                                "Wonderfully located",
                                "Perfect for shopping"
                            ],
                            "name": "Location",
                            "score": 95,
                            "id": "14"
                        },
                        ...
                    ],
                    "guest_types": [
                        {
                            "perc": 65,
                            "value": "couple",
                            "score": 79
                        },
                        ...
                    ],
                    "count": 3022,
                    "badges": [
                        {
                            "badge_type": "hotel_type",
                            "subtext": "Top 11% in city",
                            "text": "Great city hotel"
                        },
                        ...
                    ],
                    "summary": "Very good city hotel. Good for sightseeing and located near shopping areas."
                },
                "policies": "https://dmf5e20brgddt.cloudfront.net/7657_2533_en-GB_policies_b2b",
                "hotel_id": "46942019",
                "chain_id": "90718893",
                "chain": "Meliã",
                "total_rooms": 175,
                "name_en": "Hotel Madrid Gran Via 25 Managed By Melia",
                "checkin_time": "14:00",
                "group_id": [
                    "90719217"
                ],
                "property_type": "Hotel",
                "checkout_time": "12:00",
                "description": "https://dmf5e20brgddt.cloudfront.net/e289_2533_en-GB_b2b",
                "district": "27562647",
                "stars": "3",
                "coordinates": [
                    -3.70228,
                    40.42003
                ],
                "address": {
                    "nation": "Spain",
                    "adm1": "Community of Madrid",
                    "city": "Madrid",
                    "district": "Gran Vía",
                    "street_address": "Gran Via 25",
                    "postcode": "28013"
                }
            },
            ...
        ],
        "price_includes": [
            "vat",
            "other_taxes"
        ]
    },
    "translations": {
        "CUG_create_account_to_unlock_deals_msg": "Create an account to unlock exclusive deals",
        "CUG_deal": "DEAL",
        ...
    },
    "meta": {
        "status": "COMPLETED",
        "completion_percentage": 100,
        "search_id": "dd30d77810d91ae4ca062378c31d09c9658e7fec85330fcd6b515b55b6c73d4b",
        "offers": 62,
        "request_id": "6431b3f0-09b8-4d8b-9808-0bc551f9725c"
    }
}

RESPONSE PARAMETERS

Element Detail
meta Contains metadata regarding the search cycle such as it's status
results An object containing the hotel and the enhancers if requested
translations Only with the translations enhanced. Dictionary with all literals that can be translated

Localisation

All Skyscanner services are localized by market, language, and currency, so these three parameters must be added to every request.

Locales

Retrieve the locales that we support to translate your content.

GET "https://partners.api.skyscanner.net/apiservices/
    reference/v1.0/locales?
    apiKey={apiKey}"

API endpoint

GET /reference/v1.0/locales

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Example response

{
  "Locales": [
    {
      "Code": "ar-AE",
      "Name": "العربية (الإمارات العربية المتحدة)"
    },
    {
      "Code": "az-AZ",
      "Name": "Azərbaycan­ılı (Azərbaycan)"
    },
    {
      "Code": "bg-BG",
      "Name": "български (България)"
    },
    {
      "Code": "ca-ES",
      "Name": "català (català)"
    },
  ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
Locales Contains the list of locales that we support with name and code.

Currencies

Retrieve the currencies that we support.

GET "https://partners.api.skyscanner.net/apiservices/
    reference/v1.0/currencies?
    apiKey={apiKey}"

API endpoint

GET /reference/v1.0/currencies

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Example response

{
  "Currencies": [
      {
          "Code": "USD",
          "Symbol": "$",
          "ThousandsSeparator": ",",
          "DecimalSeparator": ".",
          "SymbolOnLeft": true,
          "SpaceBetweenAmountAndSymbol": false,
          "RoundingCoefficient": 0,
          "DecimalDigits": 2
      },
  ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
Currencies The list of currencies that we support, with corresponding symbol and formatting information for internationalisation.

Markets

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.

GET "https://partners.api.skyscanner.net/apiservices/
    reference/v1.0/countries/
    {locale}?
    apiKey={apiKey}"

API endpoint

GET /reference/v1.0/countries/{locale}

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
locale
REQUIRED
The language you want the results in (ISO locale). See locales for locales that we support.
apiKey
REQUIRED
Your API Key.

Example response

{
  "Countries": [
    {
      "Code": "AD",
      "Name": "Andorra"
    },
    {
      "Code": "AE",
      "Name": "United Arab Emirates"
    },
    {
      "Code": "AF",
      "Name": "Afghanistan"
    },
  ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
Countries Contains the list of markets (array of countries as name-value pairs).

Places

Places can be of 4 different types:

  1. Country
  2. City
  3. Airport
  4. Anywhere (flights browse API)

You can use any of the following endpoints to get information about places:

List of places

Get a list of places that match a query string.

GET "https://partners.api.skyscanner.net/apiservices/
    autosuggest/v1.0/{country}/{currency}/{locale}?
    query={query}&
    apiKey={apiKey}"

API endpoint

GET /autosuggest/v1.0/{country}/{currency}/{locale}

Try it out

Run in Postman

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market/country code your user is in
currency
REQUIRED
The currency code you want the prices in
locale
REQUIRED
The locale code you want the results in (ISO locale)

REQUEST QUERY PARAMETERS

Parameter Description
query
REQUIRED
The query string.
apiKey
REQUIRED
Your API Key or token.
includeAirports
OPTIONAL
If set to true, airports will be included in the result. If set to false, airports will be excluded. By default, it is set to true.
includeCities
OPTIONAL
If set to true, cities will be included in the result. If set to false, cities will be excluded. By default, it is set to true.
includeCountries
OPTIONAL
If set to true, countries will be included in the result. If set to false, countries will be excluded. By default, it is set to true.

Example response for query=pari

{
  "Places": [
    {
      "PlaceId": "PARI-sky",
      "PlaceName": "Paris",
      "CountryId": "FR-sky",
      "RegionId": "",
      "CityId": "PARI-sky",
      "CountryName": "France"
    },
    {
      "PlaceId": "CDG-sky",
      "PlaceName": "Paris Charles de Gaulle",
      "CountryId": "FR-sky",
      "RegionId": "",
      "CityId": "PARI-sky",
      "CountryName": "France"
    },
    {
      "PlaceId": "ORY-sky",
      "PlaceName": "Paris Orly",
      "CountryId": "FR-sky",
      "RegionId": "",
      "CityId": "PARI-sky",
      "CountryName": "France"
    },
  ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
Places Contains the list of places that match the query string. The places can be countries, cities or airports.

Place Information

Get information about a specific country, city or airport using a Skyscanner Place ID. Alternatively, get information about the closest city using an IP address or lat-long coordinates.

API endpoint

GET /autosuggest/v1.0/{country}/{currency}/{locale}

Try it out

Run in Postman

GET "https://partners.api.skyscanner.net/apiservices/
    autosuggest/v1.0/{country}/{currency}/{locale}?
    id={place_id}&
    apiKey={apiKey}"

REQUEST PATH PARAMETERS

Parameter Description
country
REQUIRED
The market/country code your user is in
currency
REQUIRED
The currency code you want the prices in
locale
REQUIRED
The locale code you want the results in (ISO locale)

REQUEST QUERY PARAMETERS

Parameter Description
id
REQUIRED
Should be one of the following:
- The Skyscanner place id (e.g. "CDG-sky"). Will return information about the place specified.
- An IP address (e.g. "188.39.95.140-ip"). Will return information about the city of the nearest airport to the IP specified.
- Lat-long coordinates (e.g. "35.2794,139.0436-latlong"). Will return information about the city of the nearest airport to the coordinates specified.
apiKey
REQUIRED
Your API Key or token.
includeAirports
OPTIONAL
If set to true, airports will be included in the result. If set to false, airports will be excluded. By default, it is set to true.
includeCities
OPTIONAL
If set to true, cities will be included in the result. If set to false, cities will be excluded. By default, it is set to true.
includeCountries
OPTIONAL
If set to true, countries will be included in the result. If set to false, countries will be excluded. By default, it is set to true.

Example response for United Kingdom: id=uk

{
  "Places": [
    {
      "PlaceId": "UK-sky",
      "PlaceName": "United Kingdom",
      "CountryId": "UK-sky",
      "CityId": "-sky",
      "CountryName": "United Kingdom"
    }
  ]
}

Example response for Charles de Gaulle airport: id=cdg

{
  "Places": [
    {
      "PlaceId": "CDG-sky",
      "PlaceName": "Paris Charles de Gaulle",
      "CountryId": "FR-sky",
      "CityId": "PARI-sky",
      "CountryName": "France"
    }
  ]
}

Example response for user IP address 188.39.95.140: id=188.39.95.140-ip

{
  "Places": [
    {
      "PlaceId": "LOND-sky",
      "PlaceName": "London",
      "CountryId": "UK-sky",
      "CityId": "LOND-sky",
      "CountryName": "United Kingdom"
    }
  ]
}

RESPONSE PARAMETERS

Parameter Description
Places Contains the information about the place such as name (in chosen locale), city, country.

Geo Catalog

Get the full list of all the places that we support.

GET "https://partners.api.skyscanner.net/apiservices/
    geo/v1.0?
    apiKey={apiKey}"

API endpoint

GET /geo/v1.0

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.
languageid A locale in ISO format, for example fr-FR

Response extract:

{
  "Continents": [
    {
      "Countries": [
        {
          "CurrencyId": "AFN",
          "Regions": [],
          "Cities": [
            {
              "SingleAirportCity": true,
              "Airports": [
                {
                  "CityId": "BINA",
                  "CountryId": "AF",
                  "Location": "67.823611, 34.804167",
                  "Id": "BIN",
                  "Name": "Bamiyan"
                }
              ],
              "CountryId": "AF",
              "Location": "67.823611, 34.804167",
              "IataCode": "BIN",
              "Id": "BINA",
              "Name": "Bamiyan"
            },
            ...
          ]
        },
        ...
      ]
    },
    ...
  ]
 }

RESPONSE PARAMETERS

Parameter Description
Continents Contains the list of all the continents.
Countries Contains the list of all the countries.
Regions Contains the list of all the regions.
Cities Contains the list of all the cities.
Airports Contains the list of all the airports.

Hotels And Carhire Autosuggest

Retrieve a list of geographical locations which can be used with the hotels and car hire APIs.

GET "https://www.skyscanner.net/g/autosuggest/v3/hotels?
    q=lond&
    market=US&
    locale=en-US

REQUEST PARAMETERS

Parameter Description
q User query. If empty, will return most popular places for the market based on market distance and number of hotels
locale The locale you want the results in (ISO locale)
market The market your user is in
limit_geopolitical Only show results that are contained within any of the provided geopolitical entities (specified by its IDs, comma separated).
exclude_geopolitical Only show results that are NOT contained in any of the provided geopolitical entities (specified by its IDs, comma separated).

Example response for '?q=lond&locale=en-GB'

{
  "results": [
    {
      "id": "27544008",
      "localised_name": "London",
      "localised_type": "City",
      "type": "City",
      "geo_containers": [
        {
          "id": "44293288",
          "localised_name": "England",
          "localised_type": "Region",
          "type": "FirstLevelNationAdministrativeDivision"
        },
        {
          "id": "29475375",
          "localised_name": "United Kingdom",
          "localised_type": "Country",
          "type": "Nation"
        }
      ]
    },
    ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
results Contains a list of results for the query in order of relevance
id Can be used as an input to the Hotels or CarHire Pricing Services or to query geo
localised_name Entity name in the provided locale
localised_type Contains the type in the locale used in the query
type Identify the type of the entity (City, District, Hotel, ...)
geo_containers The list of parent locations that contain one another in order (e.g. England, United Kingdom for London)

Schemas

Example place codes:

EDIN-sky
CDG-iata

Each place can be referred to via different schemas, described below.

SCHEMAS

Parameter Description
sky Skyscanner code. The response from Autosuggest provides these ids.
iata / iso Airports and cities often use the internationally recognized IATA and ISO schemas.
For Flights we recommend that you use the Skyscanner code which is very similar but solves ambiguous cases where a city and one of its airports share the same code. For Car Hire please use the IATA code.
GeoNameCodes GeoNameCodes from the GeoNames schema (see geonames.org)
GeoNameIDs GeoNameIDs from the GeoNames schema (see geonames.org)

If the default Skyscanner schema is not used, the schema name must be appended to the place id as follows: placeCode-locationSchema

Booking Redirects

In addition to price information, your users will need a URL that redirects them to where they can book their tickets.

You can redirect your users directly to the supplier's website (airline or travel agent)

Example deeplink

"PricingOptions": [
        {
          "Agents": [
            4499211
          ],
          "QuoteAgeInMinutes": 0,
          "Price": 83.41,
          "DeeplinkUrl": "https://partners.api.skyscanner.net/apiservices/deeplink/v2?_cje=jzj5DawL5zJyT%2bnfe1..."
        },

When using flights live prices urls (or deeplinks) are provided in the response to redirect users to the third-party supplier's website with the details of the itinerary that was selected.

deeplink page

You can customize the redirect page by replacing the default logo with your logo. Please see How can I put my logo on the redirect page? for more information.

See how it looks with your logo

Referrals

The referral service 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 below).

API endpoint

The API is accessible at https://skyscanner.net/g/referrals/v1

There is one main endpoint with the following URL structure:

https://skyscanner.net/g/referrals/v1/{vertical}/{pagetype}?associateid={associateId}

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 and additional query parameters check the tables below.

TRY IT OUT

Run in Postman

REQUEST PARAMETERS

Parameter Description
vertical
REQUIRED
The vertical you want to redirect to. Allowed values: flights, cars
pagetype
OPTIONAL
Page type supported by each vertical. E.g. for flights -> day-view, browse-view... take a look at the next table
associateid
OPTIONAL
Associate partner id to attribute traffic to
utm_term
OPTIONAL
Used to send through a unique variable that you can track back to your campaigns.

PAGE TYPES

Vertical Pagetypes
flights home, day-view, calendar-month-view, browse-view, multicity, cheap-flights-to, flights-airline
cars home, day-view

Examples

An example including some of the parameters looks like:

Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

GET https://skyscanner.net/g/referrals/v1/flights/day-view/?origin=cdg&destination=edi&outboundDate=2019-10-14&utm_term=summer&associateid=MY_ID_123

GET https://skyscanner.net/g/referrals/v1/flights/calendar-month-view/?origin=cdg&destination=edi&iym=1910&utm_term=summer&associateid=MY_ID_123

GET https://skyscanner.net/g/referrals/v1/cars/day-view/?pickupPlace=BCN&dropoffPlace=BCN&pickupTime=2019-09-10T10:00&dropoffTime=2019-09-15T10:00&driverAge=42&associateid=MY_ID_123

Preferred airlines:
You can find IATA airline codes here

GET https://skyscanner.net/g/referrals/v1/flights/day-view?airlines=AA,!FB&market=UK&currency=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2020-10-14&inboundDate=2020-10-21

Preferred alliances:

GET https://skyscanner.net/g/referrals/v1/flights/day-view?alliances=oneworld,Star%20Alliance&market=UK&currency=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2020-10-14&inboundDate=2020-10-21

Departure times - in this example, the query parameter configures the filters to have the first leg's departure time as default (-), and the second leg between 0 (00:00) and 990 minutes (16:30).

GET https://skyscanner.net/g/referrals/v1/flights/day-view?departure-times=-%7C0-990&market=UK&currency=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2020-10-14&inboundDate=2020-10-21

Duration:

GET https://skyscanner.net/g/referrals/v1/flights/day-view?duration=1320&market=UK&currency=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2020-10-14&inboundDate=2020-10-21

Specific request query parameters are provided in the tables below.

RESPONSE PARAMETERS

A successful response contains no content and returns HTTP 301. The URL to redirect to is provided in the Location header of the response.

Flights Parameters

Flights - Referral

Page type Description
day-view Flights Day View Example Link
calendar-month-view Flights MonthView Example Link
browse-view Flights BrowseView Example Link
multicity Flights Multicity Example Link
home Skyscanner's Home Example Link
cheap-flights-to Cheap Flights To Example Link
flights-airline Flights Airline Example Link

For more details, please see our Examples

Cars Parameters

Cars - Referral

API endpoint Description
day-view CarHire DayView Example Link
home CarHire Home Example Link

Flights Day View supported parameters Schema

/flights/day-view

A schema definition for the flights day-view microsite supported parameters

Abstract Extensible Status Identifiable Custom Properties Additional Properties Defined In
Can be instantiated No Experimental No Forbidden Permitted

Flights Day View supported parameters Properties

For more details, please see our Examples

Property Type Required Nullable Default Defined by
adultsv2 integer Required No 1 Flights Day View supported parameters (this schema)
airlines string Optional No Flights Day View supported parameters (this schema)
alliances string Optional No Flights Day View supported parameters (this schema)
alternativedestinations string[] Optional No Flights Day View supported parameters (this schema)
alternativeorigins string[] Optional No Flights Day View supported parameters (this schema)
cabinclass enum Required No "economy" Flights Day View supported parameters (this schema)
childrenv2 string Optional No Flights Day View supported parameters (this schema)
currency string Optional No Flights Day View supported parameters (this schema)
departure-times string Optional No Flights Day View supported parameters (this schema)
destination string Required No Flights Day View supported parameters (this schema)
duration integer Optional No Flights Day View supported parameters (this schema)
inboundDate string Optional No Flights Day View supported parameters (this schema)
inboundaltsenabled boolean Optional No Flights Day View supported parameters (this schema)
infants integer Optional No Flights Day View supported parameters (this schema)
locale string Optional No Flights Day View supported parameters (this schema)
market string Optional No Flights Day View supported parameters (this schema)
origin string Required No Flights Day View supported parameters (this schema)
outboundDate string Required No Flights Day View supported parameters (this schema)
outboundaltsenabled boolean Optional No Flights Day View supported parameters (this schema)
preferDirects boolean Optional No Flights Day View supported parameters (this schema)
showDirectDays boolean Optional No true Flights Day View supported parameters (this schema)
rtn enum Optional No Flights Day View supported parameters (this schema)
sortby enum Optional No Flights Day View supported parameters (this schema)
* any Additional Yes this schema allows additional properties

adultsv2

Number of adult passengers. Adults have to be 16 years old or older.

adultsv2

adultsv2 Type

integer

airlines

A list of comma-separated IATA carrier codes to be passed to the dayview filters. For example: &airlines=AA,KL,LH. To unselect airline from the filters, the code must be specified with an exclamation mark. For example: &airlines=AA,!KL,!LH
You can search for IATA airline codes at the IATA website here

airlines

airlines Type

string

alliances

A comma-separated list of alliance names passed to the dayview filters. For example: &alliances=oneworld,Star%20Alliance

alliances

alliances Type

string

alternativedestinations

An array of location codes which will be used as alternative destinations

alternativedestinations

alternativedestinations Type

Array type: string[]

All items must be of the type: string

alternativeorigins

An array of location codes which will be used as alternative origins

alternativeorigins

alternativeorigins Type

Array type: string[]

All items must be of the type: string

cabinclass

Cabin class for the flight, possible values are: economy, premiumeconomy, business and first

cabinclass

The value of this property must be equal to one of the known values below.

cabinclass Known Values

Value Description
economy
premiumeconomy
business
first

childrenv2

Number of child passengers. The value must be in the format integer|integer.. where each number is the age of the child passenger

childrenv2

childrenv2 Type

string

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

The desired currency for the page. Examples: GBP, EUR, USD

currency

currency Type

string

departure-times

Sets the dayview departure time filters in minutes. For example: &departure-times=00-90,30-990 (first leg departs between 00 and 1:30 and second leg departs between 00:30 and 16:30).

departure-times

departure-times Type

string

destination

Location code for the destination

destination

destination Type

string

duration

Sets the dayview duration filters in minutes. For example: &duration=1320 (22 hours)

duration

duration Type

integer

inboundDate

Inbound date in the format YYYY-MM-DD

inboundDate

inboundDate Type

string

inboundaltsenabled

Including nearby airports as an inbound place

inboundaltsenabled

inboundaltsenabled Type

boolean

infants

Number of infant passengers. An infant is 1 year old or younger.

infants

infants Type

integer

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

origin

Location code for the origin

origin

origin Type

string

outboundDate

Outbound date in the format YYYY-MM-DD

outboundDate

outboundDate Type

string

outboundaltsenabled

Including nearby airports as an outbound place

outboundaltsenabled

outboundaltsenabled Type

boolean

preferDirects

Will search only for direct flights if the value is true

preferDirects

preferDirects Type

boolean

showDirectDays

Controls the visibility of the day view screen, which presents the user with options for different dates with direct flights, when there are no direct flights for the currently selected dates.

showDirectDays

showDirectDays Type

boolean

rtn

Trip type: 0 if oneway or 1 if return or multicity trip

rtn

The value of this property must be equal to one of the known values below.

rtn Known Values

Value Description
0
1

sortby

Sets the sorting order for the results. Possible values are: best, cheapest and fastest.

sortby

The value of this property must be equal to one of the known values below.

sortby Known Values

Value Description
best
cheapest
fastest

Flights Browse View supported parameters Schema

/flights/browse-view
Property Type Required Nullable Defined by
adultsv2 integer Optional No Flights Browse View supported parameters (this schema)
childrenv2 string Optional No Flights Browse View supported parameters (this schema)
currency string Optional No Flights Browse View supported parameters (this schema)
destination string Optional No Flights Browse View supported parameters (this schema)
inboundDate string Optional No Flights Browse View supported parameters (this schema)
infants integer Optional No Flights Browse View supported parameters (this schema)
iym string Optional No Flights Browse View supported parameters (this schema)
locale string Optional No Flights Browse View supported parameters (this schema)
market string Optional No Flights Browse View supported parameters (this schema)
origin string Required No Flights Browse View supported parameters (this schema)
outboundDate string Optional No Flights Browse View supported parameters (this schema)
oym string Optional No Flights Browse View supported parameters (this schema)
preferDirects boolean Optional No Flights Browse View supported parameters (this schema)
rtn enum Optional No Flights Browse View supported parameters (this schema)
* any Additional Yes this schema allows additional properties

adultsv2

Number of adult passengers. Adults have to be 16 years old or older.

adultsv2

adultsv2 Type

integer

childrenv2

Number of child passengers. The value must be in the format integer|integer.. where each number is the age of the child passenger

childrenv2

childrenv2 Type

string

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

destination

Location code for the destination

destination

destination Type

string

inboundDate

Inbound date in the format YYYY-MM-DD

inboundDate

inboundDate Type

string

infants

Number of infant passengers. An infant is 1 year old or younger.

infants

infants Type

integer

iym

Arrival date in the format: YYYY-MM

iym

iym Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

origin

Location code for the origin

origin

origin Type

string

outboundDate

Outbound date in the format YYYY-MM-DD

outboundDate

outboundDate Type

string

oym

Departure date in the format: YYYY-MM

oym

oym Type

string

preferDirects

Will search only for direct flights if the value is true

preferDirects

preferDirects Type

boolean

rtn

Trip type: 0 if oneway or 1 if return trip

rtn

The value of this property must be equal to one of the known values below.

rtn Known Values

Value Description
0
1

Flights Calendar Month View supported parameters Schema

/flights/calendar-month-view
Property Type Required Nullable Defined by
adultsv2 integer Optional No Flights Calendar Month View supported parameters (this schema)
childrenv2 string Optional No Flights Calendar Month View supported parameters (this schema)
currency string Optional No Flights Calendar Month View supported parameters (this schema)
destination string Required No Flights Calendar Month View supported parameters (this schema)
infants integer Optional No Flights Calendar Month View supported parameters (this schema)
iym string Required No Flights Calendar Month View supported parameters (this schema)
locale string Optional No Flights Calendar Month View supported parameters (this schema)
market string Optional No Flights Calendar Month View supported parameters (this schema)
origin string Required No Flights Calendar Month View supported parameters (this schema)
oym string Required No Flights Calendar Month View supported parameters (this schema)
preferDirects boolean Optional No Flights Calendar Month View supported parameters (this schema)
rtn enum Optional No Flights Calendar Month View supported parameters (this schema)
* any Additional Yes this schema allows additional properties

adultsv2

Number of adult passengers. Adults have to be 16 years old or older.

adultsv2

adultsv2 Type

integer

childrenv2

Number of child passengers. The value must be in the format integer|integer.. where each number is the age of the child passenger

childrenv2

childrenv2 Type

string

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

destination

Location code for the destination

destination

destination Type

string

infants

Number of infant passengers. An infant is 1 year old or younger.

infants

infants Type

integer

iym

Arrival date in the format: YYYY-MM

iym

iym Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

origin

Location code for the origin

origin

origin Type

string

oym

Departure date in the format: YYYY-MM

oym

oym Type

string

preferDirects

Will search only for direct flights if the value is true

preferDirects

preferDirects Type

boolean

rtn

Trip type: 0 if oneway or 1 if return trip

rtn

The value of this property must be equal to one of the known values below.

rtn Known Values

Value Description
0
1

Flights Day View for multicity search Schema

/flights/multicity
Property Type Required Nullable Default Defined by
adultsv2 integer Required No 1 Flights Day View for multicity search (this schema)
cabinclass enum Required No "economy" Flights Day View for multicity search (this schema)
childrenv2 string Optional No Flights Day View for multicity search (this schema)
currency string Optional No Flights Day View for multicity search (this schema)
date0 string Required No Flights Day View for multicity search (this schema)
date1 string Optional No Flights Day View for multicity search (this schema)
date2 string Optional No Flights Day View for multicity search (this schema)
date3 string Optional No Flights Day View for multicity search (this schema)
date4 string Optional No Flights Day View for multicity search (this schema)
date5 string Optional No Flights Day View for multicity search (this schema)
destination0 string Required No Flights Day View for multicity search (this schema)
destination1 string Optional No Flights Day View for multicity search (this schema)
destination2 string Optional No Flights Day View for multicity search (this schema)
destination3 string Optional No Flights Day View for multicity search (this schema)
destination4 string Optional No Flights Day View for multicity search (this schema)
destination5 string Optional No Flights Day View for multicity search (this schema)
infants integer Optional No Flights Day View for multicity search (this schema)
locale string Optional No Flights Day View for multicity search (this schema)
market string Optional No Flights Day View for multicity search (this schema)
origin0 string Required No Flights Day View for multicity search (this schema)
origin1 string Optional No Flights Day View for multicity search (this schema)
origin2 string Optional No Flights Day View for multicity search (this schema)
origin3 string Optional No Flights Day View for multicity search (this schema)
origin4 string Optional No Flights Day View for multicity search (this schema)
origin5 string Optional No Flights Day View for multicity search (this schema)
* any Additional Yes this schema allows additional properties

adultsv2

Number of adult passengers. Adults have to be 16 years old or older.

adultsv2

adultsv2 Type

integer

cabinclass

Cabin class for the flight, possible values are: economy, premiumeconomy, business and first

cabinclass

The value of this property must be equal to one of the known values below.

cabinclass Known Values

Value Description
economy
premiumeconomy
business
first

childrenv2

Number of child passengers. The value must be in the format integer|integer.. where each number is the age of the child passenger

childrenv2

childrenv2 Type

string

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

date0

Outbound date of the first flight in the format YYYY-MM-DD

date0

date0 Type

string

date1

Outbound date of the second flight in the format YYYY-MM-DD

date1

date1 Type

string

date2

Outbound date of the third flight in the format YYYY-MM-DD

date2

date2 Type

string

date3

Outbound date of the fourth flight in the format YYYY-MM-DD

date3

date3 Type

string

date4

Outbound date of the fifth flight in the format YYYY-MM-DD

date4

date4 Type

string

date5

Outbound date of the sixth flight in the format YYYY-MM-DD

date5

date5 Type

string

destination0

Location code for the destination of the first flight

destination0

destination0 Type

string

destination1

Location code for the destination of the second flight

destination1

destination1 Type

string

destination2

Location code for the destination of the third flight

destination2

destination2 Type

string

destination3

Location code for the destination of the fourth flight

destination3

destination3 Type

string

destination4

Location code for the destination of the fifth flight

destination4

destination4 Type

string

destination5

Location code for the destination of the sixth flight

destination5

destination5 Type

string

infants

Number of infant passengers. An infant is 1 year old or younger.

infants

infants Type

integer

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

origin0

Location code for the origin of the first flight

origin0

origin0 Type

string

origin1

Location code for the origin of the second flight

origin1

origin1 Type

string

origin2

Location code for the origin of the third flight

origin2

origin2 Type

string

origin3

Location code for the origin of the fourth flight

origin3

origin3 Type

string

origin4

Location code for the origin of the fifth flight

origin4

origin4 Type

string

origin5

Location code for the origin of the sixth flight

origin5

origin5 Type

string

Flights Home Page supported parameters Schema

/flights/home
Property Type Required Nullable Defined by
currency string Optional No Flights Home Page supported parameters (this schema)
locale string Optional No Flights Home Page supported parameters (this schema)
market string Optional No Flights Home Page supported parameters (this schema)
* any Additional Yes this schema allows additional properties

currency

The desired currency for the page. Examples: GBP, EUR, USD

currency

currency Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

Cheap Flights To supported parameters Schema

/flights/cheap-flights-to
Property Type Required Nullable Defined by
currency string Optional No Cheap Flights To supported parameters (this schema)
destination string Required No Cheap Flights To supported parameters (this schema)
locale string Optional No Cheap Flights To supported parameters (this schema)
market string Optional No Cheap Flights To supported parameters (this schema)
* any Additional Yes this schema allows additional properties

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

destination

Location code for the destination

destination

destination Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

Flights Airline supported parameters Schema

/flights/flights-airline
Property Type Required Nullable Defined by
airlineCode string Required No Flights Airline supported parameters (this schema)
airlineName string Optional No Flights Airline supported parameters (this schema)
currency string Optional No Flights Airline supported parameters (this schema)
locale string Optional No Flights Airline supported parameters (this schema)
market string Optional No Flights Airline supported parameters (this schema)
* any Additional Yes this schema allows additional properties

airlineCode

The airline code.

airlineCode

airlineCode Type

string

airlineName

The airline name.

airlineName

airlineName Type

string

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

Carhire Day View supported parameters Schema

/cars/day-view
Property Type Required Nullable Defined by
currency string Optional No Carhire Day View supported parameters (this schema)
driverAge integer Required No Carhire Day View supported parameters (this schema)
dropoffPlace string Optional No Carhire Day View supported parameters (this schema)
dropoffTime string Required No Carhire Day View supported parameters (this schema)
locale string Optional No Carhire Day View supported parameters (this schema)
market string Optional No Carhire Day View supported parameters (this schema)
pickupPlace string Required No Carhire Day View supported parameters (this schema)
pickupTime string Required No Carhire Day View supported parameters (this schema)
* any Additional Yes this schema allows additional properties

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market and currency as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

driverAge

Driver age between 21 and 99

driverAge

driverAge Type

integer

dropoffPlace

Pick up IATA code / hotel or city entity id

dropoffPlace

dropoffPlace Type

string

dropoffTime

Drop Off Datetime in ISO 8601 standard. I.e YYYY-MM-DDTHH:MM

dropoffTime

dropoffTime Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

pickupPlace

Pick up IATA code / hotel or city entity id

pickupPlace

pickupPlace Type

string

pickupTime

Pick Up Datetime in ISO 8601 standard. I.e YYYY-MM-DDTHH:MM

pickupTime

pickupTime Type

string

Carhire Home page supported parameters Schema

/cars/home
Property Type Required Nullable Defined by
currency string Optional No Carhire Home page supported parameters (this schema)
locale string Optional No Carhire Home page supported parameters (this schema)
market string Optional No Carhire Home page supported parameters (this schema)
* any Additional Yes this schema allows additional properties

currency

The desired currency for the page. Examples: GBP, EUR, USD
Please try to avoid using locale, market, and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

currency

currency Type

string

locale

The desired locale for the page. Examples: es-ES, en-GB, ru-RU
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

locale

locale Type

string

market

The market of the user. Examples: UK, US, ES
Please try to avoid using locale, market and currency, as these values will be governed by Skyscanner market detection logic on the Skyscanner site. If you believe you need to use these, please discuss with your account manager.

market

market Type

string

Response Codes

Our APIs use the following response codes:

RESPONSE CODES

Error Code Meaning
200 Success
204 No content - the session is still being created (wait and try again).
301 Moved Permanently – the result shows redirect location.
304 Not Modified – the results have not been modified since the last poll.
400 Bad Request -- Input validation failed.
403 Forbidden -- The API Key was not supplied, or it was invalid, or it is not authorized to access the service.
410 Gone – the session has expired. A new session must be created.
429 Too Many Requests – There have been too many requests in the last minute.
500 Server Error – An internal server error has occurred which has been logged.

HTTPS migration guide

As of April 2020 in order to improve the security of our Skyscanner Travel APIs, we're requiring all partners to only use the https protocol for making requests to our APIs.

What is changing?

Requests and response bodies will remain the same. The only change is that partners must always use the TLS https protocol for making requests to the APIs.

What do you need to do?

Partners should replace all references to the http protocol with https in all usages of our API URLs in your codebases.

What is the deadline for migration?

The deadline is 30th April 2020, but you should migrate as soon as possible to get the benefits of increased security with TLS.

Need help?

You can raise support tickets here