NAV Navbar
Logo

API Documentation

API endpoint

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

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

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

Authentication

Skyscanner uses API keys to allow access to the APIs. You can create API keys through your Skyscanner account. Simply click ‘Travel APIs’ and enter your app name.

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

Getting Started

Flights

Flights - Browse Prices

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

Flights - Live Prices

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

Car Hire

Car Hire Live Prices

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

Hotels

Hotels Live Prices

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

Flights Browse Prices

Browse Quotes

Retrieve the cheapest quotes from our cache prices.

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

API endpoint

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

TRY IT OUT

Run in Postman

HEADER VALUES

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”.
inboundPartialDate
OPTIONAL
The return date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”. Use empty string for oneway trip.
apiKey
REQUIRED
The API Key to identify the customer

The following tables show the level of precision supported for the origin and destination places, and the outbound and return dates:

diagram

diagram

Example response from US to anywhere:

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

RESPONSE PARAMETERS

Parameter Description
Quotes Contains the list of markets (array of countries as name-value pairs).
Places Contains the list of markets (array of countries as name-value pairs).
Carriers Contains the list of markets (array of countries as name-value pairs).
Currencies Contains the list of markets (array of countries as name-value pairs).

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 "http://partners.api.skyscanner.net/apiservices/browseroutes/v1.0/{country}/{currency}/{locale}/
  {originPlace}/
  {destinationPlace}/
  {outboundPartialDate}/
  {inboundPartialDate}?
  apiKey={apiKey}"
  -X GET
  -H "Accept: application/json"

API endpoint

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

TRY IT OUT

Run in Postman

HEADER VALUES

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”.
inboundPartialDate
OPTIONAL
The return date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”. Use empty string for oneway trip.
apiKey
REQUIRED
The API Key to identify the customer

The following tables show the level of precision supported for the origin and destination places, and the outbound and return dates:

diagram

diagram

Example response from US to anywhere:

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

RESPONSE PARAMETERS

Parameter Description
Routes Contains the list of routes available, assembled from the individual quotes.
Quotes Contains the list of markets (array of countries as name-value pairs).
Places Contains the list of markets (array of countries as name-value pairs).
Carriers Contains the list of markets (array of countries as name-value pairs).
Currencies Contains the list of markets (array of countries as name-value pairs).

Browse Dates

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

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

API endpoint

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

TRY IT OUT

Run in Postman

HEADER VALUES

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”.
inboundPartialDate
OPTIONAL
The return date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”. Use empty string for oneway trip.
apiKey
REQUIRED
The API Key to identify the customer

The following tables show the level of precision supported for the origin and destination places, and the outbound and return dates:

diagram

diagram

Example response from London to Paris:

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

RESPONSE PARAMETERS

Parameter Description
Dates The list of outbound and inbound dates for which quotes are available.
Quotes Contains the list of markets (array of countries as name-value pairs).
Places Contains the list of markets (array of countries as name-value pairs).
Carriers Contains the list of markets (array of countries as name-value pairs).
Currencies Contains the list of markets (array of countries as name-value pairs).

Browse Dates (grid)

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

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

API endpoint

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

TRY IT OUT

Run in Postman

HEADER VALUES

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”.
inboundPartialDate
OPTIONAL
The return date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”. Use empty string for oneway trip.
apiKey
REQUIRED
The API Key to identify the customer

The following tables show the level of precision supported for the origin and destination places, and the outbound and return dates:

diagram

diagram

Example response from US to anywhere:

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

RESPONSE PARAMETERS

Parameter Description
Dates Matrix of all the dates available with associated price.
Places Contains the list of markets (array of countries as name-value pairs).
Carriers Contains the list of markets (array of countries as name-value pairs).
Currencies Contains the list of markets (array of countries as name-value pairs).

Flights Live Prices

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

diagram

Creating the session

Request

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

API endpoint

POST /pricing/v1.0

TRY IT OUT

Run in Postman

or go to our test harness

HEADER VALUES

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

REQUEST PARAMETERS (FORM)

Parameter Description
country
REQUIRED
The market/country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”.
inboundDate
OPTIONAL
The return date. Format “yyyy-mm-dd”. Use empty string for oneway trip.
cabinClass
OPTIONAL
The cabin class. Can be “economy”, “premiumeconomy”, “business”, “first”
adults
REQUIRED
Number of adults (16+ years). Must be between 1 and 8.
children
OPTIONAL
Number of children (1-16 years). Can be between 0 and 8.
infants
OPTIONAL
Number of infants (under 12 months). Can be between 0 and 8.
apiKey
REQUIRED
Your API Key.

Response

Example response with polling url:

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

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

RESPONSE PARAMETERS

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

Polling the results

Request

Example request with polling url:

Location "http://partners.api.skyscanner.net/apiservices/pricing/uk1/v1.0/
    {SessionKey}?apiKey={apiKey}
    &stops=0
    &duration=360
    &includeCarriers=ba;u2;af"

API endpoint

GET /pricing/v1.0/{SessionKey}

TRY IT OUT

Run in Postman

or go to our test harness

HEADER VALUES

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

REQUEST PARAMETERS (FORM)

Parameter Description
sortType
OPTIONAL
The parameter to sort results on. Can be carrier, duration, outboundarrivetime, outbounddeparttime, inboundarrivetime, inbounddeparttime, price*
sortOrder
OPTIONAL
The sort order. ‘asc’ or 'desc’
duration
OPTIONAL
Filter for maximum duration in minutes. Integer between 0 and 1800
includeCarriers
OPTIONAL
Filter flights by the specified carriers. Must be semicolon-separated IATA codes.
excludeCarriers
OPTIONAL
Filter flights by any but the specified carriers. Must be semicolon-separated IATA codes.
originAirports
OPTIONAL
Origin airports to filter on. List of airport codes delimited by ‘;’
destinationAirports
OPTIONAL
Destination airports to filter on. List of airport codes delimited by ‘;’
stops
OPTIONAL
Filter by number of stops.
0: direct flights only
1: flights with one stop only
to show all flights do not use (only supports values 0 and 1)
outboundDepartTime
OPTIONAL
Filter for outbound departure time by time period of the day (i.e. morning, afternoon, evening). List of day time period delimited by ‘;’ (acceptable values are M, A, E)
outboundDepartStartTime
OPTIONAL
Filter for start of range for outbound departure time. Format ‘hh:mm’.
outboundDepartEndTime
OPTIONAL
Filter for end of range for outbound departure time. Format ‘hh:mm’.
outboundArriveStartTime
OPTIONAL
Filter for start of range for outbound arrival time. Format ‘hh:mm’.
outboundArriveEndTime
OPTIONAL
Filter for end of range for outbound arrival time. Format ‘hh:mm’.
inboundDepartTime
OPTIONAL
Filter for inbound departure time by time period of the day (i.e. morning, afternoon, evening). List of day time period delimited by ‘;’ (acceptable values are M, A, E)
inboundDepartStartTime
OPTIONAL
Filter for start of range for inbound departure time. Format ‘hh:mm’.
inboundDepartEndTime
OPTIONAL
Filter for start of range for inbound departure time. Format ‘hh:mm’.
inboundArriveStartTime
OPTIONAL
Filter for start of range for inbound departure time. Format ‘hh:mm’.
inboundArriveEndTime
OPTIONAL
Filter for end of range for inbound arrival time. Format ‘hh:mm’.
apiKey
REQUIRED
Your API Key.

Pagination and payload

Example polling request with pagination:

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

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

REQUEST PARAMETERS (PAGINATION)

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

Keep requesting page 0 until you get UpdatesComplete with pageIndex=0 at half a second to one second interval.

For more information please see our FAQ

Once you get UpdatesComplete you may request any page and page size.

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


Response

Example polling request response:

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

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

RESPONSE PARAMETERS

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

ITINERARY PARAMETERS

Element Description
OutboundLegId Id of the Outbound Leg
InboundLegId Id of the Inbound Leg
PricingOptions pricing options with agent(s)
the quote age
price (total for all passengers)
deeplink to the agent (the absolute URL needed to make the booking). The deeplink URL is not supplied for multi-booking itineraries.
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 (multiple bookings or 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, in order to pick the flight that best suits their needs.

Get booking details

Request

curl "http://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"

In cases where more than one booking is required (for example when buying from 2 or more different airlines or travel agents) or for group pricing, a Booking Details request must be made to get the list of all the deeplinks or update the deeplink with additional information such as number of passengers.

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

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

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

API endpoint

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

TRY IT OUT

Run in Postman

or go to our test harness

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

REQUEST BODY (from live pricing response)

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

Response

Example response:

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

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

RESPONSE PARAMETERS

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

Polling the booking details

Request

curl "http://partners.api.skyscanner.net/apiservices/pricing/uk1/v1.0/
    {SessionKey}/booking/
    {OutboundLegId};{InboundLegId}
    ?apiKey={apiKey}"
    -X GET

API endpoint

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

TRY IT OUT

Run in Postman

or go to our test harness

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

REQUEST BODY (from live pricing response)

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

Response

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

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

RESPONSE PARAMETERS

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

Car Hire Live Prices

Retrieve live prices for car hire providers.

The live updates are performed asynchronously so you need to create a session and then poll for updates. Please note that it may take up to a minute to update all the results. After you create a session, you will immediately get the results of the first poll.

The Create Session request (HTTP GET) contains all query parameters, such as pickup and dropoff locations. The URL which should be used to poll the session is returned in the HTTP Response Header “Location”.

The Poll Session (HTTP GET) should be used to poll the session at a suitable interval (e.g. every 1-3 seconds) whilst there are still updates pending.

Creating the session

curl "http://partners.api.skyscanner.net/apiservices/carhire/liveprices/v2/
  {market}/{currency}/{locale}/
  {pickupplace}/{dropoffplace}/
  {pickupdatetime}/{dropoffdatetime}/
  {driverage}?apiKey={apiKey}&userip={userip}}"
  -X GET
  -H "Content-Type: application/x-www-form-urlencoded"
  -H "Accept: application/jsonp"

Request

API endpoint

GET /carhire/liveprices/v2/{market}/{currency}/{locale}/{pickupplace}/{dropoffplace}/{pickupdatetime}/{dropoffdatetime}/{driverage}

TRY IT OUT

Run in Postman

or go to the test harness

HEADER VALUES

Header Value
Content-Type
REQUIRED
application/x-www-form-urlencoded
Accept
OPTIONAL
application/json, application/jsonp or application/xml
The default response format is XML

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
pickupPlace
REQUIRED
The pickup location. IATA code or a latitude,longitude pair formatted as lat,lon-latlong e.g. /55.95,-3.37-latlong/
dropoffPlace
REQUIRED
The dropoff location. IATA code or a latitude,longitude pair formatted as lat,lon-latlong e.g. /55.95,-3.37-latlong/
pickupDateTime
REQUIRED
Date and time for pickup. Formatted as ISO Date and Time format: YYYY-MM-DDThh:mm
dropoffDateTime
OPTIONAL
Date and time for dropoff. Formatted as ISO Date and Time format: YYYY-MM-DDThh:mm
driverAge
REQUIRED
Must be between 21 and 75 (inclusive).
userIp
REQUIRED
The IP address of the end user (IPv4 only). Format: 188.39.95.93
apiKey
REQUIRED
Your API key

Response

Example response with polling url in the header:

Location "/apiservices/carhire/liveprices/v2/eyJvIjpbImRhdGFhcGkiLCJHQiIsImVuLUdCIiwiR0JQIiwiRURJIiwiMjAxNy0wNy0wMVQxMDowMDowMCIsIjIwMTctMDctMDdUMTc6MDA6MDAiLCJFREkiLDM1LCIxMjcuMC4wLjEiXSwibiI6LTI1OTAzfQ2?apikey=_aiX_D_g9kkg_cu_2ybJepzeH7dUcY0gh8q-oXHKdD0RuHu1itrfqIeyKIaVJ5m8vkR5euhcsN4XDFGFk1ofaDw%3D%3D&deltaExcludeWebsites=easc%2Cecon"

A successful session creation will immediately 302 to the first poll. This poll will respond as follows, with the URL to subsequently poll the session included in the Location header.

RESPONSE PARAMETERS

Element Detail
Location Header Contains the URL for polling the results.

Polling the results

Polling the session will return the details of all possible car hire quotes that satisfy the request query parameters. Prices will be obtained for the car hire quotes during the session. The calling application should poll the session in 1-3 second intervals until all updates are complete (all returned websites have inProgress equal to false), and all prices have been populated. This can take from a few seconds to a minute depending on the query.

Please allow at least one second between polls.

A note about delta results

In your polling requests you may specify a parameter called ‘deltaExcludeWebsites’. This is a CSV or semicolon-separated list of website IDs. The server will set this in the Location headers to exclude whatever websites have finished sending results (inProgress equal to false). Excluding any given provider will remove its cars and website information from your result. Merely supplying&deltaExcludeWebsites= removes all images, the query, and the car classes lookup. The Location header in the first poll will include this parameter, even if it’s an empty string, in order that you don’t fetch that information multiple times.

curl "http://partners.api.skyscanner.net/apiservices/carhire/liveprices/v2/{sessionKey}?apiKey={apiKey}&deltaExcludeWebsites={a,b,c...}""

Request

API ENDPOINT

GET /carhire/liveprices/v2/{sessionKey}

TRY IT OUT

Run in Postman

or go to the test harness

REQUEST PARAMETERS

Parameter Description
deltaExcludeWebsites
OPTIONAL
A list of website IDs whose results you want to discard, or an empty string. CSV or semicolon-separated values.
apiKey
REQUIRED
Your API key

Example response with polling url in the header:

{
  "submitted_query": {
    "market": "GB",
    "currency": "GBP",
    "locale": "en-GB",
    "pickup_place": "EDI",
    "dropoff_place": "EDI",
    "pickup_date_time": "2017-07-01T10:00",
    "drop_off_date_time": "2017-07-07T17:00",
    "driver_age": "35"
  },
  "cars": [
    {
      "sipp": "CDMD",
      "image_id": 523911,
      "price_all_days": 262.6,
      "seats": 5,
      "doors": 5,
      "bags": 3,
      "manual": true,
      "air_conditioning": true,
      "mandatory_chauffeur": false,
      "website_id": "argu",
      "vehicle": "Opel Astra or similar",
      "deeplink_url": "http://partners.api.skyscanner.net/apiservices/deeplink/v2?_c[...]",
      "car_class_id": 3,
      "location": {
        "pick_up": {
          "address": "CAR RENTAL CENTRE EDINBURGH APT 176 JUBILEE ROAD, EDINBURGH, EH12 9FT",
          "distance_to_search_location_in_km": 0.0992002183,
          "geo_info": [
            55.95,
            -3.362
          ]
        }
      },
      "value_add": {
        "fuel": {
          "type": "diesel",
          "policy": "full_to_full",
          "fair": true
        },
        "insurance": {
          "theft_protection": true,
          "third_party_cover": true,
          "free_collision_waiver": true
        },
        "free_cancellation": true,
        "free_breakdown_assistance": true,
        "additional_drivers": {
          "paid": {
            "currency_id": "GBP",
            "price": 84
          }
        },
        "included_mileage": {
          "unlimited": true
        }
      }
    },
  ...
  ],
  "websites": [
    {
      "id": "erac",
      "name": "Enterprise",
      "image_url": "http://logos.skyscnr.com/images/websites/erac.png",
      "in_progress": false,
      "optimised_for_mobile": true
    },
  ...
  ],
  "images": [
    {
      "id": 356029,
      "url": "http://logos.skyscnr.com/images/carhire/sippmaps/citroen_berlingo.jpg"
    },
  ...
  ],
  "car_classes": [
    {
      "id": 1,
      "sort_order": 0,
      "name": "Mini"
    },
    ...
  ]
}

Response

Parameter Description
submitted_query Contains the URL for polling the results.
cars The list of available cars. See Car Details below.
websites A reference list of websites where the cars can be hired, including website logo url. The boolean field “in_progress” indicates whether or not there are still updates pending for that website.
images Contains the images of the car types.
car_classes Contains the URL for polling the results.

CAR DETAILS

Parameter Description
sipp SIPP code (see codes guide)
image_id reference to the images set
price_all_days total price
seats number of seats
doors number of doors
bags number of bags
manual Boolean
air_conditioning Boolean
mandatory_chauffeur Boolean. Indicates whether the vehicle comes with a driver. This is particularly frequent in countries like India where it is common for a driver to be supplied with a car.
website_id reference to the website set
vehicle vehicle (name and type)
deeplink_url contains the URL to deeplink through to the partner website. Please add the no-follow attribute when you link to the deeplink. See How do I add the nofollow attribute? in the FAQ section.
car_class_id reference to the car_classes set
location location containing address, lat/lon and distance to search location for pick up and drop off places (drop off can be not available even though the query contains a drop off place)
value_add See below

CAR VALUE_ADD

Parameter Description
fuel containing 'type’ (one of “petrol”, “diesel”, “lpg”, “electric” or null); 'policy’ (one of “full_to_full”, “quarter_to_quarter”, “half_to_half”, “free_full_tank”, “half_to_empty”, “quarter_to_empty” or null); 'fair’ (boolean)
free_equipments subset of [radio, gps, roof_rack, ski_rack, snow_chains, snow_tyres, baby_seat, child_seat, booster_seat]
insurance containing 'theft_protection’ (boolean or null), 'third_party_cover’ (boolean or null), 'free_collision_waiver’ (boolean or null), 'free_damage_refund’ (boolean or null)
young_driver_surcharge Boolean or null
one_way_surcharge Boolean or null
free_cancellation Boolean or null
free_breakdown_assistance Boolean or null
additional_drivers containing 'free’ (int of how many free drivers); paid (containing currency_id and price); original_price (containing currency_id and price)
included_mileage containing 'unlimited’ (boolean or null); 'unit’ (can be “km” or “mile”); 'included’ (int how many km/miles included in the booking)

Hotels Live Prices

Localisation

All Skyscanner services are localised 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 "http://partners.api.skyscanner.net/apiservices/
    reference/v1.0/locales?
    apiKey={apiKey}"

API endpoint

GET /reference/v1.0/locales

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Example response

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

RESPONSE PARAMETERS

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

Currencies

Retrieve the currencies that we support.

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

API endpoint

GET /reference/v1.0/currencies

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Example response

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

RESPONSE PARAMETERS

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

Markets

Retrieve the market countries that we support.

Most suppliers (airlines, travel agents and car hire dealers) set their fares based on the market (or country of purchase). It is therefore necessary to specify the market country in every query.

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

API endpoint

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

Try it out

Run in Postman

REQUEST PARAMETERS

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

Example response

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

RESPONSE PARAMETERS

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

Places

Places can be of 4 different types:

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

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

Geo Catalog

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

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

API endpoint

GET /geo/v1.0

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
apiKey
REQUIRED
Your API Key.

Response extract:

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

RESPONSE PARAMETERS

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

List of places

Get a list of places that match a query string.

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

API endpoint

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

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market/country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
query
REQUIRED
The query string, must be at least 2 characters long.
apiKey
REQUIRED
Your API Key.

Example response for query=pari

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

RESPONSE PARAMETERS

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

Place Information

Get information about a country, city or airport using its ID.

API endpoint

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

Try it out

Run in Postman

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market/country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
id
REQUIRED
The place id (e.g. “CDG-sky”) or the user’s ip address (e.g. “188.39.95.140-ip”)
apiKey
REQUIRED
Your API Key

Example response for United Kingdom: id=uk

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

Example response for Charles de Gaulle airport: id=cdg

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

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

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

RESPONSE PARAMETERS

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

Schemas

Example place codes:

EDIN-sky
CDG-iata
-37.4849,144.5747-latlong

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

SCHEMAS

Parameter Description
sky Skyscanner code. The response from Autosuggest provides these ids.
iata / iso Airports and cities often use the internationally recognized IATA and ISO schemas.
For Flights we recommend that you use the Skyscanner code which is very similar but solves ambiguous cases where a city and one of its airports share the same code. For Car Hire please use the IATA code.
latlong Latitude and longitude of the place in the following form: “latitude,longitude”. The nearest city with airport will be used.
ip IP of a user. The nearest city with airport will be used. Format: 188.39.95.93
GeoNameCodes GeoNameCodes from the GeoNames schema (see geonames.org)
GeoNameIDs GeoNameIDs from the GeoNames schema (see geonames.org)

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

Car Hire and Hotels

Retrieve a list of hotels and/or geographical locations which can then be used witht the hotels and car hire APIs. In the case of car hire, use this if you want downtown (non-airport) searches.

GET "http://partners.api.skyscanner.net/hotels/autosuggest/v2/{country}/{currency}/{locale}/{query}?
    apiKey={apiKey}"

API endpoint

GET /hotels/autosuggest/v2/

Try it out

Run in Postman

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
query
REQUIRED
The query string, must be at least 2 characters long.
apiKey
REQUIRED
The API Key to identify the customer

Example response for ‘pari’

{
  "places": [
    {
      "place_id": 1,
      "city_name": "Paris",
      "admin_level1": "Île-de-France",
      "country_name": "France"
    },
    {
      "place_id": 2,
      "admin_level1": "Île-de-France",
      "country_name": "France"
    },
  ...
  ],
  "results": [
    {
      "display_name": "Paris",
      "parent_place_id": 1,
      "individual_id": "27539733",
      "geo_type": "City",
      "localised_geo_type": "City",
      "is_bookable": false
    },
    {
      "display_name": "Paris 08 Élysée",
      "parent_place_id": 1,
      "individual_id": "27562771",
      "geo_type": "District",
      "localised_geo_type": "District",
      "is_bookable": false
    },
    ...
  ]
}

RESPONSE PARAMETERS

Parameter Description
places Contains a list of places that represent lookup geographic places (e.g. cities, countries) for the query.
results Contains a list of results for the query with:
- geo_type to identify the type (City, District, Hotel, …)
- localised_geo_type which contains the geo_type in the locale used in the query
- display_name
- individual_id which can be used as an input to the Hotels Pricing Service
- parent_place_id which can be used to lookup the place information

Booking Redirects

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

You can either:

To Skyscanner

Flights

Link to the Skyscanner website with the details of the search query pre-populated. This provides a more straightforward option for partners who do not require a full implementation of a travel search product within their applications.

If the query isn’t specific enough to link to a specific ‘day view’ page, it will link to a more general browse page, where the user will be asked to refine the search criteria (by date, origin and/or destination).

GET "http://partners.api.skyscanner.net/apiservices/
    referral/v1.0/{country}/{currency}/{locale}/
    {originPlace}/{destinationPlace}/
    {outboundPartialDate}/{inboundPartialDate}
    ?apiKey={shortApiKey}"

API endpoint

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

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
originPlace
REQUIRED
The origin place (see places)
destinationPlace
REQUIRED
The destination place (see places)
outboundPartialDate
REQUIRED
The outbound date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”.
inboundPartialDate
OPTIONAL
The return date. Format “yyyy-mm-dd”, “yyyy-mm” or “anytime”. Use empty string for oneway trip.
shortApiKey
REQUIRED
The first 16 characters of your API Key

EXAMPLE REDIRECT

http://partners.api.skyscanner.net/apiservices/referral/v1.0/GB/GBP/en-GB/EDI/CDG/2017-12-12/2017-12-20?apiKey=prtl674938798674


Car Hire

Link to the Skyscanner website with the details of the car hire search query pre-populated.

GET "http://partners.api.skyscanner.net/apiservices/
    referral/v1.0/{country}/{currency}/{locale}/
    {pickupPlace}/{dropoffPlace}/
    {pickupDateTime}/{dropoffDateTime}
    ?product=carhire
    &pickUpTime={pickupTime}&dropOffTime={dropoffTime}
    &driverAge={driverAge}
    &apiKey={shortApiKey}"

API endpoint

/referral/v1.0/{country}/{currency}/{locale}/{pickupPlace}/{dropoffPlace}/{pickupDateTime}/{dropoffDateTime}

REQUEST PARAMETERS

Parameter Description
country
REQUIRED
The market country your user is in
currency
REQUIRED
The currency you want the prices in
locale
REQUIRED
The locale you want the results in (ISO locale)
pickupPlace
REQUIRED
The pickup location. IATA code or a latitude,longitude pair formatted as lat,lon-latlong e.g. /55.95,-3.37-latlong/
dropoffPlace
REQUIRED
The dropoff location. IATA code or a latitude,longitude pair formatted as lat,lon-latlong e.g. /55.95,-3.37-latlong/
pickupDateTime
REQUIRED
Date for pickup. Formatted as ISO Date and Time format: YYYY-MM-DD
dropoffDateTime
OPTIONAL
Date for dropoff. Formatted as ISO Date and Time format: YYYY-MM-DD
shortApiKey
REQUIRED
The first 16 characters of your API Key
driverAge
REQUIRED
Must be between 21 and 75 (inclusive).
product
REQUIRED
Must be set to carhire
pickUpTime
OPTIONAL
Time for pickup. Formatted as ISO Date and Time format: hh:mm
dropOffTime
OPTIONAL
Time for pickup. Formatted as ISO Date and Time format: hh:mm

EXAMPLE REDIRECT

http://www.api.prod.skyscanner.local/apiservices/referral/v1.0/UK/GBP/en-GB/LHR/EDI/2017-04-02/2017-04-16?product=carhire&pickUpTime=10:00&dropOffTime=12:00&driverAge=27?apiKey=prtl674938798674

To the supplier

Example deeplink

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

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

deeplink page

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

See how it looks with your logo

Response Codes

Our APIs use the following response codes:

RESPONSE CODES

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