API Reference Tutorial Airline
API Reference Tutorial Airline
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.
In order to use our APIs you need to contact us to request an API key via the following form.
If you need more help you can find more information and answers to questions in our FAQ which we continuously update.
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.
Make sure that you are accessing the APIs through HTTPS
Be careful when sharing API keys. Do not publish them in public code repositories or add them to client-side API calls. When you need to make a client-side call (e.g. redirect) please ensure that you
use your short API key (the first 16 characters of your key). Please note that *not* all API endpoints support short API keys.
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
RESPONSE
_dR-ShOTX6w2SeENoXhHTsT9Z5N4UNqwReQqU_F8WkbgMDIuZx7ud7boHnngf4fT9bpPDFJh7nxB3hWsAT8x76w==
Please don't forget to encode the token with a URL encoder to escape special characters before sending it as a value for apiKey URL parameter.
Getting Started
Flights
Flights - Browse Prices
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.
Live prices Returns live prices from all our suppliers for the requested flight itinerary (in the selected market).
Given the large number of suppliers that we query for quotes, the Live Pricing may take up to a minute to return all the results.
Unless you require exact prices, we recommend you start with the cache
prices API.
Hotels
Hotels Live Prices
Live prices
Returns live prices from all our suppliers for hotel deals (in the selected market).
NEW
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
HEADER VALUES
Header Value
Accept
application/json or application/xml
Parameter Description
country
currency
locale
originPlace
destinationPlace
outboundPartialDate
inboundPartialDate
The return date (see dates). Use empty string for oneway trip.
OPTIONAL
Parameter Description
apiKey
The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.
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.
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,
"Type": "Country",
"SkyscannerCode": "AE"
},
...
],
"Carriers": [
"CarrierId": 29,
},
"CarrierId": 173,
},
...
],
"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.
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
HEADER VALUES
Header Value
Accept
application/json or application/xml
Parameter Description
country
currency
locale
originPlace
destinationPlace
outboundPartialDate
inboundPartialDate
The return date (see dates). Use empty string for oneway trip.
OPTIONAL
Parameter Description
apiKey
The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.
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.
"Routes": [
"OriginId": 1811,
"DestinationId": 1845,
"QuoteIds": [
1,
],
"Price": 326,
"QuoteDateTime": "2016-11-13T01:30:00"
},
"OriginId": 1811,
"DestinationId": 929,
"QuoteIds": [
],
"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,
"Type": "Country",
"SkyscannerCode": "AE"
},
...
],
"Carriers": [
"CarrierId": 29,
},
"CarrierId": 173,
},
...
],
"Currencies": [
"Code": "EUR",
"Symbol": "€",
"ThousandsSeparator": " ",
"DecimalSeparator": ",",
"SymbolOnLeft": false,
"SpaceBetweenAmountAndSymbol": true,
"RoundingCoefficient": 0,
"DecimalDigits": 2
RESPONSE PARAMETERS
Parameter Description
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
HEADER VALUES
Header Value
Accept
application/json or application/xml
Parameter Description
country
currency
locale
originPlace
destinationPlace
outboundPartialDate
inboundPartialDate
The return date (see dates). Use empty string for oneway trip.
OPTIONAL
Parameter Description
apiKey
The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.
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.
Example response from London to Paris:
"Dates": {
"OutboundDates": [
"PartialDate": "2016-11",
"QuoteIds": [
1,
2,
3,
4,
],
"Price": 66,
"QuoteDateTime": "2016-11-08T17:28:00"
},
...
],
"InboundDates": [
"PartialDate": "2016-11",
"QuoteIds": [
],
"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,
"Type": "Country",
"SkyscannerCode": "AE"
},
...
],
"Carriers": [
"CarrierId": 29,
},
"CarrierId": 173,
},
...
],
"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.
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
HEADER VALUES
Header Value
Accept
application/json or application/xml
Parameter Description
country
The market country your user is in
REQUIRED
currency
locale
originPlace
destinationPlace
outboundPartialDate
inboundPartialDate
The return date (see dates). Use empty string for oneway trip.
OPTIONAL
Parameter Description
apiKey
The table below shows the level of precision supported for the origin and destination places. For more information on these, see places.
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.
Example response from US to anywhere:
"Dates": [
null,
"DateString": "2017-01"
},
"DateString": "2017-02"
},
"DateString": "2017-03"
},
...
],
...
],
"Places": [
"PlaceId": 837,
"Type": "Country",
"SkyscannerCode": "AE"
},
...
],
"Carriers": [
"CarrierId": 29,
},
"CarrierId": 173,
},
...
],
"Currencies": [
"Code": "EUR",
"Symbol": "€",
"ThousandsSeparator": " ",
"DecimalSeparator": ",",
"SymbolOnLeft": false,
"SpaceBetweenAmountAndSymbol": true,
"RoundingCoefficient": 0,
"DecimalDigits": 2
RESPONSE PARAMETERS
Parameter Description
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
Origins and Destinations can also be more general than airports in Browse Requests:
Origin/Destination Example
The format of the Outbound/Inbound Dates used in Browse Requests should be one of the following:
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
¤cy=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
HEADER VALUES
Header Value
Content-Type
application/x-www-form-urlencoded
REQUIRED
X-Forwarded-For
user's IP address
REQUIRED
Accept
application/json or application/xml
Parameter Description
country
currency
locale
originPlace
destinationPla
ce
The destination place (see places)
REQUIRED
outboundDate
inboundDate
The return date. Format "yyyy-mm-dd". Use empty string for oneway trip.
OPTIONAL
cabinClass
adults
children
infants
includeCarrier
s
Only return results from those carriers. Comma-separated list of carrier ids.
OPTIONAL
excludeCarrier
s
Filter out results from those carriers. Comma-separated list of carrier ids.
OPTIONAL
groupPricing
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
OPTIONAL it is set to false .
apiKey
RESPONSE
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.
Please refer to our response codes in case of unsuccessful response.
RESPONSE PARAMETERS
Element Detail
Location Header Contains the URL for polling the results in the newly created session
Use the polling endpoint provided in the successful response of the create request.
API endpoint
GET /pricing/v1.0/{SessionKey}
Please note that the actual polling endpoint will be provided in the successful response of the Creating the session request.
TRY IT OUT
HEADER VALUES
Header Value
Accept
application/json or application/xml
Parameter Description
sortType
The parameter to sort results on. Can be carrier, duration, outboundarrivetime, outbounddeparttime, inboundarrivetime, inbounddeparttime, price
OPTIONAL
sortOrder
duration
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
OPTIONAL flights from the response or if it’s too high it might simply return all flights with no filtering applied
includeCarrier
s
Filter flights by the specified carriers. Must be semicolon-separated IATA codes.
OPTIONAL
excludeCarrier
s
Filter flights by any but the specified carriers. Must be semicolon-separated IATA codes.
OPTIONAL
originAirports
Origin airports to filter on. List of airport codes delimited by ‘;’
OPTIONAL
destinationAir
ports
Destination airports to filter on. List of airport codes delimited by ‘;’
OPTIONAL
stops
0 for direct flights only
outboundDepart
Time
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)
OPTIONAL
outboundDepart
StartTime Filter for start of range for outbound departure time. Format ‘hh:mm’. Time is inclusive.
OPTIONAL
outboundDepart
EndTime Filter for end of range for outbound departure time. Format ‘hh:mm’. Time is inclusive.
OPTIONAL
inboundDepartT
ime
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)
OPTIONAL
Parameter Description
inboundDepartS
tartTime Filter for start of range for inbound departure time. Format ‘hh:mm’. Time is inclusive.
OPTIONAL
inboundDepartE
ndTime
Filter for end of range for inbound departure time. Format ‘hh:mm’. Time is inclusive.
OPTIONAL
apiKey
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.
Parameter Description
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.
While the status is UpdatesPending, you should request only page 0 because the contents of each page are liable to change until updates are complete.
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
"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,
],
"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:
the price
the quote age
the agent selling the itinerary
the deeplink to the agent
RESPONSE PARAMETERS
Parameter Description
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.
Agents Details of the agents who sell the tickets. Can be an airline or a travel agent.
You must keep polling the results until you get 'UpdatesComplete'. The results may take up to a minute to update.
ITINERARY PARAMETERS
Element Description
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.
Please add the no-follow attribute when you link to the deeplink. See How do I add the nofollow attribute? in the FAQ section.
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.
"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
REQUEST PARAMETERS
Parameter Description
apiKey
Parameter Description
OutboundLegId
InboundLegId
adults
children
infants
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.
Please refer to our response codes in case of unsuccessful response.
RESPONSE PARAMETERS
Element Detail
Location Header Contains the URL for polling the booking details results
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}
Please note that the actual polling endpoint will be provided in the successful response of the Get booking details request.
TRY IT OUT
REQUEST PARAMETERS
Parameter Description
apiKey
Parameter Description
OutboundLegId
InboundLegId
adults
children
infants
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,
},
],
"Places": [
"Id": 13554,
"ParentId": 4698,
"Code": "LHR",
"Type": "Airport",
},
...
],
"Carriers": [
"Id": 881,
"Code": "BA",
"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:
the price
the quote age
the agent selling the itinerary
the deeplink to the agent
RESPONSE PARAMETERS
Parameter Description
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.
Agents Details of the agents who sell the tickets. Can be an airline or a travel agent.
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:
x-user-agent: Required. Indicates which is the device related to the client. The format for that header is device;B2B, where device can be:
T for tablet
D for desktop
M for mobile
N if you are not able to detect the device type
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 PE
NDING 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
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}
¤cy={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
HEADER VALUES
Header Value
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
entity_id
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve for each hotel
image_resolution
Resolution options
image_type
The format of the images
boost_official_partner
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
s
default: 0
OPTIONAL
sort
Sort by a given attribute. By default the relevance sorting is applied
OPTIONAL One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
OPTIONAL
price_max
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
OPTIONAL
price_buckets
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
OPTIONAL
Parameter Description
price_bucket_step
Fix step for the buckets. Need to be used together with price_buckets, default step will be dynamic
OPTIONAL
price_bucket_number
This parameter allows you to set the price buckets number, default: 5
OPTIONAL
price_buckets_strategy
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)
OPTIONAL
price_buckets_min
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
OPTIONAL
price_buckets_max
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
OPTIONAL
district
stars
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
OPTIONAL
city
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
OPTIONAL entity ids
chain
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
OPTIONAL
amenities
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
OPTIONAL
cancellation
OR filter. Return only results where a cancellation policies matches. Options are:
meal_plan
OR filter. Return only results where a meal plan matches. Options are:
property_type
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
OPTIONAL
guest_rating
OR filter. Return only results where a guest rating matches. The values must be TravelAPI ids
OPTIONAL
guest_type
OR filter. Return only results where a guest type matches. The values must be TravelAPI ids
OPTIONAL
hotel_name
limit
Number of results to retrieve
offset
How many results to skip from the first position. Useful for paginating
OPTIONAL default: 0
partners_per_hotel
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
OPTIONAL default: 3
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.
partners: Returns information about the active partners in the system. is_official, the logo, the name and the website_id.
enhanced
images: Returns images for the hotels. With the partner website_id and the urls.
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.
detailed_reviews: Returns information from the hotel reviews provided by Trustyou (http://www.trustyou.com/)
index
Mark the times of the same requests sent to bellboy, start from 1, default: 0
OPTIONAL
(B2B partner needn't set the value) Hotel sorting score calculation options
mr4: RelevanceContainerScoring,
mr5: IronRankScoring,
sorting_version
mr6: IronCatRankScoring,
mr7: HotelBookingModelScoring,
mr8: IronTrainModelScoring,
default: mr4
t_version
(B2B partner needn't set the value) Used for ABTesting, default is ''
OPTIONAL
app_name
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
OPTIONAL
appVersion
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''
OPTIONAL
search_id
(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 ''
OPTIONAL
Parameter Description
cug_segments
(B2B partner needn't set the value) Only v3 supports, it allows you to add special cug segments for user. Options are:
cug
(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.
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",
},
"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
},
"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_datetim
"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",
"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_deal": "OFFRE",
...
RESPONSE PARAMETERS
Element Detail
meta Contains metadata regarding the search cycle such as it's status
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}
¤cy={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
HEADER VALUES
Header Value
apikey
This header is required to be on every single request any client does (it could also be accepted via query parameter)
REQUIRED
Header Value
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
location
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve per each hotel
image_resolution
Resolution options
image_type
The format of the images
boost_official_partner
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
s
default: 0
OPTIONAL
sort
Sort by a given attribute. By default the relevance sorting is applied
OPTIONAL One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
OPTIONAL
price_max
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
OPTIONAL
price_buckets
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
OPTIONAL
district
stars
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
OPTIONAL
city
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
OPTIONAL entity ids
chain
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
OPTIONAL
amenities
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
OPTIONAL
cancellation
OR filter. Return only results where a cancellation policies matches. Options are:
meal_plan
OR filter. Return only results where a meal plan matches. Options are:
property_type
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
OPTIONAL
hotel_name
limit
Number of results to retrieve
offset
How many results to skip from the first position. Useful for paginating
OPTIONAL default: 0
partners_per_hotel
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
OPTIONAL default: 3
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.
enhanced
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.
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.
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
meta Contains metadata regarding the search cycle such as it's status
translations Only with the translations enhanced. Dictionary with all literals that can be translated
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}
¤cy={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
HEADER VALUES
Header Value
apikey
This header is required to be on every single request any client does (it could also be accepted via query parameter)
REQUIRED
Header Value
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
entity_id
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve per each hotel
image_resolution
Resolution options
image_type
The format of the images
boost_official_partner
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
s
default: 0
OPTIONAL
sort
Sort by a given attribute. By default the relevance sorting is applied
OPTIONAL One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
OPTIONAL
price_max
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
OPTIONAL
price_buckets
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
OPTIONAL
district
stars
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
OPTIONAL
city
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
OPTIONAL entity ids
chain
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
OPTIONAL
amenities
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
OPTIONAL
cancellation
OR filter. Return only results where a cancellation policies matches. Options are:
meal_plan
OR filter. Return only results where a meal plan matches. Options are:
property_type
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
OPTIONAL
hotel_name
limit
Number of results to retrieve
offset
How many results to skip from the first position. Useful for paginating
OPTIONAL default: 0
partners_per_hotel
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners. Map only supports 1 partner per hotel
OPTIONAL default: 1
This parameter allows you to add additional content to the default response. The available options are:
enhanced
filters: Returns extra object in the response including the filters like stars, district, city, etc.
OPTIONAL 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
Bounding Box coordinates in which to look for hotels as bbox=left,bottom,right,top
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": [
"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"
],
"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&deeplin
"closed_user_groups": null
],
"stars": "4",
"rating": {
"value": 7.7,
"desc": "rating_good"
},
...
],
"location": [
"entity_id": "29475375",
"entity_type": "Nation"
},
"translations": {
"CUG_deal": "DEAL",
...
RESPONSE PARAMETERS
Element Detail
meta Contains metadata regarding the search cycle such as it's status
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.
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}
¤cy={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
HEADER VALUES
Header Value
apikey
This header is required to be on every single request any client does (it could also be accepted via query parameter)
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
location
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve per each hotel
image_resolution
Resolution options
image_type
The format of the images
boost_official_partner
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
default: 0
OPTIONAL
Parameter Description
sort
Sort by a given attribute. By default the relevance sorting is applied
OPTIONAL One of: relevance, -relevance, price, -price, distance, -distance, rating, -rating, stars, -stars
price_min
Filter. Return only hotels where the cheaper price is at least price_min (included). Cannot be used together with price_buckets
OPTIONAL
price_max
Filter. Return only hotels where the cheaper price is at most price_max (included). Cannot be used together with price_buckets
OPTIONAL
price_buckets
OR filter. Return only hotels with offers inside the specified buckets. Cannot be used together with price_min/price_max
OPTIONAL
district
stars
OR filter. Return only results where a star category matches. The values must be TravelAPI ids
OPTIONAL
city
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
OPTIONAL entity ids
chain
OR filter. Return only results where a hotel chains matches. The values must be TravelAPI ids
OPTIONAL
amenities
AND filter. Return only results where all amenities match. The values must be TravelAPI ids
OPTIONAL
cancellation
OR filter. Return only results where a cancellation policies matches. Options are:
meal_plan
OR filter. Return only results where a meal plan matches. Options are:
property_type
OR filter. Return only results where an accommodation type matches. The values must be TravelAPI ids
OPTIONAL
hotel_name
limit
Number of results to retrieve
offset
How many results to skip from the first position. Useful for paginating
OPTIONAL default: 0
partners_per_hotel
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners. Map only supports 1 partner per hotel
OPTIONAL default: 1
This parameter allows you to add additional content to the default response. The available options are:
enhanced
filters: Returns extra object in the response including the filters like stars, district, city, etc.
OPTIONAL 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
Bounding Box coordinates in which to look for hotels as bbox=left,bottom,right,top
Note: The OR and AND filters allow multiple values coma separated. For example: &amenities=Lift,Bar
RESPONSE
RESPONSE PARAMETERS
Element Detail
meta Contains metadata regarding the search cycle such as it's status
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}
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}
¤cy={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
HEADER VALUES
Header Value
apikey
This header is required to be on every single request any client does (it could also be accepted via query parameter)
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
hotel_id
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve for each hotel
image_resolutio
Resolution options
n
high or low, default: high
OPTIONAL
image_type
The format of the images
boost_official_p
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
artners
default: 0
OPTIONAL
partners_per_ho
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
tel
default: 3
OPTIONAL
Parameter Description
enhanced
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.
OPTIONAL translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
entity_id
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
OPTIONAL entity_id param fulfilled with the Paris entity_id in order to reuse the prices.
index
Mark the times of the same requests sent to bellboy, start from 1, default: 0
OPTIONAL
t_version
(B2B partner needn't set the value) Used for ABTesting, default is ''
OPTIONAL
app_name
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
OPTIONAL
appVersion
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''
OPTIONAL
search_id
(B2B partner needn't set the value) Elasticsearch ID, the value can be got from search response or first request response, default is ''
OPTIONAL
cug_segments
(B2B partner needn't set the value) Only v3 supports, it allows you to add special cug segments for user. Options are:
ignore_cache
(B2B partner needn't set the value) This parameter allows you to bypass Elasticsearch and Redis cache. Options are:
RESPONSE
Example response:
"meta": {
"completion_percentage": 100,
"search_id": "ca7a935824954024c5228394530677d66ecb7d5b24973a4d8afda9b911c4fb0f",
"status": "COMPLETED",
"offers": 14,
"request_id": "39bb7709-2707-4ad5-8b74-7193810224fe"
},
"translations": {
"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",
"entity_id": "27562647"
},
...
],
"hotel": {
"chain_id": "90718893",
"checkin_time": "14:00",
"district": "27562647",
"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_dat
"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,
"stars": "3",
"amenities": [
"Bar",
"FrontDesk24hService",
"Restaurant",
...
],
"chain": "Meliã",
"address": {
"postcode": "28013",
"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",
},
...
],
"categories": [
"score": 95,
"entries": [
"Emplacement parfait",
"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
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}
¤cy={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
HEADER VALUES
Header Value
apikey
This header is required to be on every single request any client does (it could also be accepted via query parameter)
REQUIRED
Indicates which is the device and the platform related to the client. The format for that header is device;B2B , where:
Device is:
x-user-agent
T for tablet
M for mobile
URI PARAMETERS
Parameter Description
hotel_ids
version
API version
REQUIRED
QUERY PARAMETERS
Parameter Description
market
Matching [A-Z]{2}
REQUIRED
locale
Matching [a-z]{2}-[A-Z]{2}
REQUIRED
currency
Currency code
REQUIRED
checkin_date
YYYY-MM-DD
REQUIRED
checkout_date
YYYY-MM-DD
REQUIRED
rooms
Number of rooms
REQUIRED default: 1
adults
Number of adults
REQUIRED default: 2
apikey
images
Maximum number of images to retrieve per each hotel
image_resolution
Resolution options
image_type
The format of the images
boost_official_partners
Indicates whether prices from official partners must be shown in the first place [1] or not [0]
OPTIONAL default: 0
partners_per_hotel
Maximum numbers of partners to retrieve per each hotel. Note that 0 means all the available partners
OPTIONAL default: 3
Parameter Description
enhanced
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.
OPTIONAL translations: Returns a dictionary with all literals and their corresponding translations using the request locale.
app_name
(B2B partner needn't set the value) This parameter allows you to set the app name, default is ''
OPTIONAL
appVersion
(B2B partner needn't set the value) This parameter allows you to set the app version, default is ''
OPTIONAL
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",
...
],
"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",
"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",
],
"name": "Location",
"score": 95,
"id": "14"
},
...
],
"guest_types": [
"perc": 65,
"value": "couple",
"score": 79
},
...
],
"count": 3022,
"badges": [
"badge_type": "hotel_type",
},
...
],
"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,
"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",
"city": "Madrid",
"postcode": "28013"
},
...
],
"price_includes": [
"vat",
"other_taxes"
},
"translations": {
"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
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
REQUEST PARAMETERS
Parameter Description
apiKey
Example response
"Locales": [
"Code": "ar-AE",
"Name": "
")العربية (اإلمارات العربية المتحدة
},
"Code": "az-AZ",
"Name": "Azərbaycan
ılı (Azərbaycan)"
},
"Code": "bg-BG",
},
"Code": "ca-ES",
},
...
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
REQUEST PARAMETERS
Parameter Description
apiKey
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
REQUEST PARAMETERS
Parameter Description
locale
The language you want the results in (ISO locale). See locales for locales that we support.
REQUIRED
apiKey
Example response
"Countries": [
"Code": "AD",
"Name": "Andorra"
},
"Code": "AE",
},
"Code": "AF",
"Name": "Afghanistan"
},
...
RESPONSE PARAMETERS
Parameter Description
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:
our Autosuggest endpoint to obtain a list of places and corresponding IDs that match a query string
our Autosuggest endpoint to get information about a specific place given its ID (for example, city name and country name for an airport)
our Geo catalog to get the full list of places that we support (please contact us to request access)
The country and language must be included in the Autosuggest query so that the most relevant results can be returned in the correct language.
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
Parameter Description
country
currency
locale
Parameter Description
query
apiKey
includeAirports
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 .
OPTIONAL
includeCities
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 .
OPTIONAL
includeCountries
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 .
OPTIONAL
"Places": [
"PlaceId": "PARI-sky",
"PlaceName": "Paris",
"CountryId": "FR-sky",
"RegionId": "",
"CityId": "PARI-sky",
"CountryName": "France"
},
"PlaceId": "CDG-sky",
"CountryId": "FR-sky",
"RegionId": "",
"CityId": "PARI-sky",
"CountryName": "France"
},
"PlaceId": "ORY-sky",
"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.
If you are using this endpoint from client-side code, we recommend using a token as value for apiKey request parameter. This way you will overcome the potential security risk of exposing account API
keys.
See token generation section for more details.
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
GET "https://partners.api.skyscanner.net/apiservices/
autosuggest/v1.0/{country}/{currency}/{locale}?
id={place_id}&
apiKey={apiKey}"
Parameter Description
country
currency
locale
Parameter Description
id
- The Skyscanner place id (e.g. "CDG-sky"). Will return information about the place specified.
REQUIRED - 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
includeAirports
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 .
OPTIONAL
includeCities
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 .
OPTIONAL
includeCountries
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 .
OPTIONAL
"Places": [
"PlaceId": "UK-sky",
"CountryId": "UK-sky",
"CityId": "-sky",
"Places": [
"PlaceId": "CDG-sky",
"CountryId": "FR-sky",
"CityId": "PARI-sky",
"CountryName": "France"
"Places": [
"PlaceId": "LOND-sky",
"PlaceName": "London",
"CountryId": "UK-sky",
"CityId": "LOND-sky",
RESPONSE PARAMETERS
Parameter Description
Places Contains the information about the place such as name (in chosen locale), city, country.
You can use this endpoint to retrieve the user's location from their IP address:
https://partners.api.skyscanner.net/apiservices/autosuggest/v1.0/UK/GBP/en-GB?id=188.39.95.140-ip&apikey=<apiKe
y>
Geo Catalog
Please contact us to request access.
GET "https://partners.api.skyscanner.net/apiservices/
geo/v1.0?
apiKey={apiKey}"
API endpoint
GET /geo/v1.0
Try it out
REQUEST PARAMETERS
Parameter Description
apiKey
Response extract:
"Continents": [
"Countries": [
"CurrencyId": "AFN",
"Regions": [],
"Cities": [
"SingleAirportCity": true,
"Airports": [
"CityId": "BINA",
"CountryId": "AF",
"Id": "BIN",
"Name": "Bamiyan"
],
"CountryId": "AF",
"IataCode": "BIN",
"Id": "BINA",
"Name": "Bamiyan"
},
...
},
...
},
...
RESPONSE PARAMETERS
Parameter Description
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
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).
"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_type": "Country",
"type": "Nation"
},
...
RESPONSE PARAMETERS
Parameter Description
id Can be used as an input to the Hotels or CarHire Pricing Services or to query geo
Parameter Description
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
SCHEMAS
Parameter Description
sky Skyscanner code. The response from Autosuggest provides these ids.
Airports and cities often use the internationally recognized IATA and ISO schemas.
iata / iso 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.
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.
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.
logo url
test
Skyscanner has no control over the third-party website. In some cases, the selected itinerary will be ready to book. In other cases, the search criteria will be pre-populated but the end-user will have to
search through the results to find their itinerary.
Please do not cache the deeplinks as they are only valid while your session is active. Once the session has timed out you will need to create a new session and refresh all the results and deeplink urls.
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 the sections below.
API endpoint
https://skyscanner.net/g/referrals/v1/{vertical}/{pagetype}?adId=1100662&campaignId=13416&mediaPartnerId={yourmediapartnerID}
The endpoint serves only GET requests and responds with HTTP status 301 redirecting to the desired Skyscanner page.
For the different possible values of the parameters and additional query parameters check the tables below.
We use Impact to track the redirects and associate them with the referral source.
You will need to include the 3 Impact tracking parameters as query parameters in your requests. Please
check the TRACKING QUE
RY PARAMETERS section below for more details on the parameters. Although the
parameters are optional, the redirects will not be correctly tracked without them.
If you already have your tracking integration using the legacy associateid parameter, we will still
support this and map the legacy parameter to the new Impact parameters automatically. However, we
discourage
using it for new referral links, as it will become fully deprecated eventually.
TRY IT OUT
REQUEST PARAMETERS
Parameter Description
vertical
The vertical you want to redirect to. Allowed values: flights, cars
REQUIRED
pagetype
Page type supported by each vertical. E.g. for flights -> day-view, browse-view... take a look at the next table
REQUIRED
PAGE TYPES
Vertical Pagetypes
Parameter Description
mediaPartnerId
adId
This is an Impact ID used to identify your ad type. This should always be set to 1100662 .
REQUIRED
campaignId
This is an Impact ID used to identify our Skyscanner Programme. This should always be set to 13416 .
REQUIRED
utm_term
Additional alphanumeric tracking parameter you can add to your text links for additional tracking. This will be reported on Impact as Sub Id 2.
OPTIONAL
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=2022-02-07&utm_term=summer&mediaPartnerId=2796596&campaignId=13416&adId=1100662
GET https://skyscanner.net/g/referrals/v1/flights/calendar-month-view/?origin=cdg&destination=edi&iym=1910&utm_term=summer&mediaPartnerId=2796596&campaignId=13416&adId=1100662
GET https://skyscanner.net/g/referrals/v1/cars/day-view/?pickupPlace=BCN&dropoffPlace=BCN&pickupTime=2022-02-01T10:00&dropoffTime=2022-02-07T10:00&driverAge=42&mediaPartnerId=2796596&campaignI
d=13416&adId=1100662
Preferred airlines:
You can find IATA airline codes here
GET https://skyscanner.net/g/referrals/v1/flights/day-view?airlines=AA,!FB&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2022-02-01&inboundDate=2022-02-07
Preferred alliances:
GET https://skyscanner.net/g/referrals/v1/flights/day-view?alliances=oneworld,Star%20Alliance&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2022-02-01&inboundDate
=2022-02-07
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¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2022-02-01&inboundDate=2022-02-
07
Duration:
GET https://skyscanner.net/g/referrals/v1/flights/day-view?duration=1320&market=UK¤cy=GBP&locale=en-GB&origin=cdg&destination=edi&outboundDate=2022-02-01&inboundDate=2022-02-07
RESPONSE PARAMETERS
Please refer to our response codes in case of unsuccessful response.
Flights Parameters
Flights - Referral
Cars Parameters
Cars - Referral
Hotels Parameters
Hotels - Referral
/flights/home
A schema definition for the flights home page microsite supported parameters
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/flights/day-view
ORIGIN
origin
is required
cannot be null
ORIGIN TYPE
string Origin
ORIGIN CONSTRAINTS
unknown format: the value of this string must follow the format: place
DESTINATION
destination
is required
DESTINATION TYPE
string Destination
DESTINATION CONSTRAINTS
unknown format: the value of this string must follow the format: place
OUTBOUNDDATE
outboundDate
is required
cannot be null
OUTBOUNDDATE TYPE
OUTBOUNDDATE CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymmdd
INBOUNDDATE
inboundDate
is optional
cannot be null
INBOUNDDATE TYPE
INBOUNDDATE CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymmdd
ADULTSV2
adultsv2
is required
cannot be null
ADULTSV2 TYPE
ADULTSV2 CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
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
is optional
Type: string Child passengers. Add a child and specify the age (must be from 2 to 15).
cannot be null
CHILDRENV2 TYPE
string Child passengers. Add a child and specify the age (must be from 2 to 15).
CHILDRENV2 CONSTRAINTS
unknown format: the value of this string must follow the format: delimited-ages
INFANTS
is optional
cannot be null
INFANTS TYPE
CABINCLASS
Cabin class for the flight, possible values are: economy, premiumeconomy, business and first
cabinclass
is required
cannot be null
CABINCLASS TYPE
CABINCLASS CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"economy"
"premiumeconomy"
"business"
"first"
"economy"
RTN
rtn
is optional
cannot be null
RTN TYPE
RTN CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"0"
"1"
PREFERDIRECTS
preferDirects
is optional
cannot be null
PREFERDIRECTS TYPE
SHOWDIRECTDAYS
showDirectDays
is optional
cannot be null
SHOWDIRECTDAYS TYPE
true
OUTBOUNDALTSENABLED
outboundaltsenabled
is optional
cannot be null
OUTBOUNDALTSENABLED TYPE
INBOUNDALTSENABLED
inboundaltsenabled
is optional
cannot be null
INBOUNDALTSENABLED TYPE
ALTERNATIVEORIGINS
alternativeorigins
is optional
Type: string[]
cannot be null
ALTERNATIVEORIGINS TYPE
string[]
ALTERNATIVEDESTINATIONS
alternativedestinations
is optional
Type: string[]
cannot be null
ALTERNATIVEDESTINATIONS TYPE
string[]
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
SORTBY
Sets the sorting order for the results. Possible values are: best, cheapest and fastest.
sortby
is optional
cannot be null
SORTBY TYPE
string Sorting
SORTBY CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"best"
"cheapest"
"fastest"
AIRLINES
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 exclamation mark. For
example: &airlines=AA,!KL,!LH
airlines
is optional
cannot be null
AIRLINES TYPE
AIRLINES CONSTRAINTS
unknown format: the value of this string must follow the format: airlines
ALLIANCES
Comma separated list of alliance names passed to the dayview filters. For example: &alliances=OneWorld,Star%20Alliance. Valid values are 'OneWorld', 'Star Alliance', 'SkyTeam' and 'Value Alliance'
alliances
is optional
ALLIANCES TYPE
ALLIANCES CONSTRAINTS
unknown format: the value of this string must follow the format: alliances
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
is optional
cannot be null
DEPARTURE-TIMES TYPE
DEPARTURE-TIMES CONSTRAINTS
unknown format: the value of this string must follow the format: departure-times
DURATION
Sets the dayview duration filters in minutes. For example: &duration=1320 (22 hours)
duration
is optional
cannot be null
DURATION TYPE
/flights/browse-view
A schema definition for the flights browse view microsite supported parameters
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
ORIGIN
origin
is required
cannot be null
ORIGIN TYPE
string Origin
ORIGIN CONSTRAINTS
unknown format: the value of this string must follow the format: place
DESTINATION
destination
is optional
cannot be null
DESTINATION TYPE
string Destination
DESTINATION CONSTRAINTS
unknown format: the value of this string must follow the format: place
OUTBOUNDDATE
outboundDate
is optional
cannot be null
OUTBOUNDDATE TYPE
OUTBOUNDDATE CONSTRAINTS
unknown format: the value of this string must follow the format: date-as-provided
INBOUNDDATE
inboundDate
is optional
cannot be null
INBOUNDDATE TYPE
INBOUNDDATE CONSTRAINTS
unknown format: the value of this string must follow the format: date-as-provided
ADULTSV2
adultsv2
is optional
cannot be null
ADULTSV2 TYPE
ADULTSV2 CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
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
is optional
Type: string Child passengers. Add a child and specify the age (must be from 2 to 15).
cannot be null
CHILDRENV2 TYPE
string Child passengers. Add a child and specify the age (must be from 2 to 15).
CHILDRENV2 CONSTRAINTS
unknown format: the value of this string must follow the format: delimited-ages
INFANTS
infants
is optional
cannot be null
INFANTS TYPE
OYM
oym
is optional
cannot be null
OYM TYPE
OYM CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymm
IYM
iym
is optional
cannot be null
IYM TYPE
IYM CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymm
RTN
rtn
is optional
cannot be null
RTN TYPE
RTN CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"0"
"1"
PREFERDIRECTS
preferDirects
is optional
cannot be null
PREFERDIRECTS TYPE
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/flights/calendar-month-view
A schema definition for the flights calendar month view microsite supported parameters
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
ORIGIN
origin
is required
cannot be null
ORIGIN TYPE
string Origin
ORIGIN CONSTRAINTS
unknown format: the value of this string must follow the format: place
DESTINATION
destination
is required
cannot be null
DESTINATION TYPE
string Destination
DESTINATION CONSTRAINTS
unknown format: the value of this string must follow the format: place
OYM
oym
is optional
OYM TYPE
OYM CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymm
IYM
iym
is optional
cannot be null
IYM TYPE
IYM CONSTRAINTS
unknown format: the value of this string must follow the format: date-yymm
ADULTSV2
adultsv2
is optional
cannot be null
ADULTSV2 TYPE
ADULTSV2 CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
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
is optional
Type: string Child passengers. Add a child and specify the age (must be from 2 to 15).
cannot be null
CHILDRENV2 TYPE
string Child passengers. Add a child and specify the age (must be from 2 to 15).
CHILDRENV2 CONSTRAINTS
unknown format: the value of this string must follow the format: delimited-ages
INFANTS
infants
is optional
cannot be null
INFANTS TYPE
RTN
rtn
is optional
cannot be null
RTN TYPE
enum: the value of this property must be equal to one of the following values:
Value Explanation
"0"
"1"
PREFERDIRECTS
preferDirects
is optional
cannot be null
PREFERDIRECTS TYPE
SELECTEDODAY
selectedoday
is optional
cannot be null
SELECTEDODAY TYPE
SELECTEDODAY CONSTRAINTS
unknown format: the value of this string must follow the format: selected-date
SELECTEDIDAY
selectediday
is optional
cannot be null
SELECTEDIDAY TYPE
SELECTEDIDAY CONSTRAINTS
unknown format: the value of this string must follow the format: selected-date
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/flights/multicity
A schema definition for the flights day-view microsite supported query parameters
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
ORIGIN0
origin0
is required
cannot be null
ORIGIN0 TYPE
ORIGIN0 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE0
date0
is required
cannot be null
DATE0 TYPE
DATE0 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION0
destination0
is required
cannot be null
DESTINATION0 TYPE
DESTINATION0 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ORIGIN1
origin1
is optional
cannot be null
ORIGIN1 TYPE
ORIGIN1 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE1
date1
is optional
Type: string Outbound Date of the second flight
cannot be null
DATE1 TYPE
DATE1 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION1
destination1
is optional
cannot be null
DESTINATION1 TYPE
DESTINATION1 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ORIGIN2
origin2
is optional
cannot be null
ORIGIN2 TYPE
ORIGIN2 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE2
date2
is optional
cannot be null
DATE2 TYPE
DATE2 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION2
destination2
is optional
cannot be null
DESTINATION2 TYPE
DESTINATION2 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ORIGIN3
origin3
is optional
ORIGIN3 TYPE
ORIGIN3 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE3
date3
is optional
cannot be null
DATE3 TYPE
DATE3 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION3
destination3
is optional
cannot be null
DESTINATION3 TYPE
DESTINATION3 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ORIGIN4
origin4
is optional
cannot be null
ORIGIN4 TYPE
ORIGIN4 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE4
date4
is optional
cannot be null
DATE4 TYPE
DATE4 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION4
destination4
is optional
cannot be null
DESTINATION4 TYPE
DESTINATION4 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ORIGIN5
origin5
is optional
cannot be null
ORIGIN5 TYPE
ORIGIN5 CONSTRAINTS
unknown format: the value of this string must follow the format: place
DATE5
date5
is optional
cannot be null
DATE5 TYPE
DATE5 CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
DESTINATION5
destination5
is optional
cannot be null
DESTINATION5 TYPE
DESTINATION5 CONSTRAINTS
unknown format: the value of this string must follow the format: place
ADULTSV2
adultsv2
is required
cannot be null
ADULTSV2 TYPE
ADULTSV2 CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
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
is optional
Type: string Child passengers. Add a child and specify the age (must be from 2 to 15).
cannot be null
CHILDRENV2 TYPE
string Child passengers. Add a child and specify the age (must be from 2 to 15).
CHILDRENV2 CONSTRAINTS
unknown format: the value of this string must follow the format: delimited-ages
INFANTS
infants
is optional
cannot be null
INFANTS TYPE
CABINCLASS
Cabin class for the flight, possible values are: economy, premiumeconomy, business and first
cabinclass
is required
cannot be null
CABINCLASS TYPE
CABINCLASS CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"economy"
"premiumeconomy"
"business"
"first"
"economy"
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/flights/cheap-flights-to
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
DESTINATION
destination
is required
cannot be null
DESTINATION TYPE
string Destination
DESTINATION CONSTRAINTS
unknown format: the value of this string must follow the format: place
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/flights/flights-airline
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
AIRLINECODE
airlineCode
is required
cannot be null
AIRLINECODE TYPE
string The airline code.
AIRLINECODE CONSTRAINTS
unknown format: the value of this string must follow the format: airline-code
AIRLINENAME
airlineName
is optional
cannot be null
AIRLINENAME TYPE
AIRLINENAME CONSTRAINTS
unknown format: the value of this string must follow the format: airline-name
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/cars/home
A schema definition for the carhire home page microsite supported parameters
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/cars/day-view
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
PICKUPPLACE
pickupPlace
is required
cannot be null
PICKUPPLACE TYPE
string Pickup
PICKUPPLACE CONSTRAINTS
unknown format: the value of this string must follow the format: carhire-place
DROPOFFPLACE
dropoffPlace
is optional
cannot be null
DROPOFFPLACE TYPE
DROPOFFPLACE CONSTRAINTS
unknown format: the value of this string must follow the format: carhire-place
PICKUPTIME
pickupTime
is required
cannot be null
PICKUPTIME TYPE
PICKUPTIME CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-ddThh:mm
DROPOFFTIME
dropoffTime
is required
DROPOFFTIME TYPE
DROPOFFTIME CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-ddThh:mm
DRIVERAGE
driverAge
is required
cannot be null
DRIVERAGE TYPE
DRIVERAGE CONSTRAINTS
unknown format: the value of this string must follow the format: driver-age
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/hotels/home-view
CHECKIN
checkin
is optional
cannot be null
CHECKIN TYPE
CHECKIN CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
CHECKOUT
checkout
is optional
cannot be null
CHECKOUT TYPE
CHECKOUT CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
ADULTS
Number of adults. Adults number should be greater than or equal to the rooms number.
adults
is optional
cannot be null
ADULTS TYPE
ROOMS
Number of rooms. Rooms number should be less than or equal to the adults number.
rooms
is optional
Type: integer Number of rooms
cannot be null
ROOMS TYPE
SKYSCANNER_NODE_CODE
skyscanner_node_code
is optional
cannot be null
SKYSCANNER_NODE_CODE TYPE
string Destination
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/hotels/day-view
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
ENTITY_ID
The ID of the geo location for which the search will be performed.
entity_id
is required
cannot be null
ENTITY_ID TYPE
string Destination ID
ENTITY_ID CONSTRAINTS
unknown format: the value of this string must follow the format: entity-id
CHECKIN
checkin
is optional
cannot be null
CHECKIN TYPE
CHECKIN CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
CHECKOUT
checkout
is optional
cannot be null
CHECKOUT TYPE
CHECKOUT CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
ADULTS
Number of adults. Adults number should be greater than or equal to the rooms number.
adults
is optional
Type: integer Number of adults in the room. Adult's number should be greater than or equal to the rooms number.
cannot be null
ADULTS TYPE
integer Number of adults in the room. Adult's number should be greater than or equal to the rooms number.
ADULTS CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
ROOMS
Number of rooms. Rooms number should be less than or equal to the adults number.
rooms
is optional
Type: integer Number of rooms. Room's number should be less than or equal to the adults number.
cannot be null
ROOMS TYPE
integer Number of rooms. Room's number should be less than or equal to the adults number.
ROOMS CONSTRAINTS
minimum: the value of this number must greater than or equal to: 1
SORT
Defines the order in which search results will appear. Options are: price, -price, distance, -rating, stars, -stars.
sort
is optional
cannot be null
SORT TYPE
string Sorting
SORT CONSTRAINTS
enum: the value of this property must be equal to one of the following values:
Value Explanation
"price"
"-price"
"distance"
"-hotel_rating"
"stars"
"-stars"
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
/hotels/hotel-details
Abstract Extensible Status Identifiable Custom Properties Additional Properties Access Restrictions
HOTELID
hotelId
is required
HOTELID TYPE
string Hotel ID
HOTELID CONSTRAINTS
unknown format: the value of this string must follow the format: hotel-id
CHECKIN
checkin
is optional
cannot be null
CHECKIN TYPE
CHECKIN CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
CHECKOUT
checkout
is optional
cannot be null
CHECKOUT TYPE
CHECKOUT CONSTRAINTS
unknown format: the value of this string must follow the format: date-yyyy-mm-dd
ADULTS
Number of adults
adults
is optional
cannot be null
ADULTS TYPE
ROOMS
Number of rooms
rooms
is optional
cannot be null
ROOMS TYPE
MARKET
market
is optional
cannot be null
MARKET TYPE
string Market
MARKET CONSTRAINTS
unknown format: the value of this string must follow the format: market
LOCALE
The desired locale for the page. Examples: es-ES, en-GB, ru-RU
locale
is optional
cannot be null
LOCALE TYPE
string Locale
LOCALE CONSTRAINTS
unknown format: the value of this string must follow the format: locale
CURRENCY
The desired currency for the page. Examples: GBP, EUR, USD
currency
is optional
cannot be null
CURRENCY TYPE
string Currency
CURRENCY CONSTRAINTS
unknown format: the value of this string must follow the format: currency
Response Codes
Our APIs use the following response codes:
RESPONSE CODES
200 Success
204 No content - the session is still being created (wait and try again).
304 Not Modified – the results have not been modified since the last poll.
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.
304
You may occasionally get a 304 status response. Please note that this is not an error and simply indicates that your cache has not expired and that there were no changes to the response. For more
information please read our FAQ
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.
Need help?
You can raise support tickets here