Flights Price Insights API

Retrieve cheapest prices seen last by our travellers

Download RAML

API access control

All requests require apiKey and userTrackId request parameters. userTrackId is a unique identifier for the user.

In addition to the request parameters users must pass in the appropriate user-agent and x-original-client-ip in the request header. Any incorrect usage of User-Agents could lead to inaccuracies in click and impression tracking, which may impact invoicing.

The response will also return a set of cookies including a cluster cookie (which data center the requests should be made to) that will need to be passed to all subsequent requests. Most http clients and all browsers should properly accept cookies set from the server in the response with the "Set-Cookie" header, so your next web service calls should simply work.

Resources:

Routes

Get the cheapest route prices seen last by our travellers for a given flights search criteria.

Key behavior: This endpoint finds the single cheapest price for each unique route (e.g., LCY-FAO, LHR-FAO) within your entire date range. If you search for a full month, you'll get one result per route showing the absolute lowest price found anywhere in that month.

Example: Searching October 2025 for London to Faro might return 6 results (one for each London airport to Faro route), each showing the cheapest price found across all of October for that specific route.

POST
/i/api/affiliate/priceInsights/flights/v1/routes?apiKey=<string>&userTrackId=<string>
Request body
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01"
    }
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01",
        "toDepartureDate": "2025-03-01",
        "tripMinDuration": 3,
        "tripMaxDuration": 7
    },
    "roundTrip": true
}
{
    "origin": {
        "placeId": 175312
    },
    "dates": {
        "departureDate": "2025-06-01"
    }
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01",
        "toDepartureDate": "2025-03-01"
    },
    "roundTrip": true,
    "filters": {
        "priceMax": 1234,
        "stopsMax": 1,
        "cabin": "economy"
    },
    "aggregationType": "airline"
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "aggregationType": "airline"
}
Responses
200 - application/json
{
    "origin": {
        "placeId": 123567,
        "placeType": "airport",
        "name": "Boston Logan International Airport"
    },
    "destination": {
        "placeId": 654231,
        "placeType": "airport",
        "name": "San Francisco International Airport"
    },
    "results": [
        {
            "outboundLeg": {
                "origin": "BOS",
                "destination": "SFO",
                "airlineCodes": [
                    "SK",
                    "AA"
                ],
                "departureDateTime": "2025-06-12T12:00:00",
                "arrivalDateTime": "2025-06-19T12:00:00",
                "stops": 1,
                "timestamp": "2025-05-26T19:42:30"
            },
            "inboundLeg": {
                "origin": "SFO",
                "destination": "BOS",
                "airlineCodes": [
                    "AA"
                ],
                "departureDateTime": "2025-06-12T12:00:00",
                "arrivalDateTime": "2025-06-19T12:00:00",
                "stops": 0,
                "timestamp": "2025-05-26T19:42:30"
            },
            "deeplinkUrl": "https://www.kayak.com/in?a=kan_123_456&url=/flights/BOS-SFO/2025-06-12/2025-06-19?mc=USD&searchTrackingToken=qwerty",
            "price": {
                "price": 1234,
                "currency": "USD"
            },
            "cabin": "economy"
        }
    ],
    "airlines": [
        {
            "iataCode": "SK",
            "name": "SAS",
            "logoUrl": "https://www.kayak.com/sas.png"
        },
        {
            "iataCode": "AA",
            "name": "American Airlines",
            "logoUrl": "https://www.kayak.com/aa.png"
        }
    ],
    "airports": [
        {
            "name": "Boston Logan International Airport",
            "iataCode": "BOS",
            "cityName": "Boston",
            "countryName": "United States"
        },
        {
            "name": "San Francisco International Airport",
            "iataCode": "SFO",
            "cityName": "San Fransisco",
            "countryName": "United States"
        }
    ]
}
400 - application/json

Error codes:

  • VALIDATION_ERROR - The request failed one or more validation checks. Please review request and documentation
  • UNRECOGNIZED_LOCATION - Unknown location provided to the request
  • INVALID_DATES - Invalid dates provided to the request
403 - application/json

Request is not allowed

404 - application/json

Resource was not found

429 - application/json

Rate limit exceeded

Calendar

Get the cheapest route prices per day/month for a given date range.

Key behavior:

  • This endpoint finds the cheapest price for each individual day (or month) within your date range. Instead of one result per route, you get multiple results showing the best price available on each specific date.
  • Results can be either predicted (using our price prediction models) or cached (based on actual prices seen by our travellers). Predicted results are marked with predicted: true in the response.
    • Predictions are only available for noStops:false and airport to airport searches.

Example: Searching October 2025 for London to Faro will return up to 31 results per route (one for each day of October), showing the cheapest price available on each specific day. This typically produces significantly more results than the routes endpoint.

Why more results: While routes endpoint shows "cheapest in October overall", calendar endpoint shows "cheapest on Oct 1st, cheapest on Oct 2nd, cheapest on Oct 3rd..." for each route.

POST
/i/api/affiliate/priceInsights/flights/v1/calendar?apiKey=<string>&userTrackId=<string>
Request body
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-12",
    "dateTo": "2025-12",
    "noStops": true
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-06",
    "dateTo": "2025-12",
    "roundTrip": true
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-12",
    "dateTo": "2025-12",
    "cabin": "business"
}
Responses
200 - application/json
{
    "origin": {
        "placeId": 123567,
        "placeType": "airport",
        "name": "Boston Logan International Airport"
    },
    "destination": {
        "placeId": 654231,
        "placeType": "airport",
        "name": "San Francisco International Airport"
    },
    "results": [
        {
            "aggregationKey": "2025-06",
            "outboundLeg": {
                "origin": "BOS",
                "destination": "LAX",
                "departureDate": "2025-07-04",
                "timestamp": "2025-01-26T19:42:30",
                "noStops": true
            },
            "inboundLegs": [
                {
                    "origin": "LAX",
                    "destination": "BOS",
                    "departureDate": "2025-07-07",
                    "timestamp": "2025-01-26T19:42:30",
                    "price": {
                        "price": 377,
                        "currency": "USD"
                    },
                    "deeplinkUrl": "https://www.kayak.com/in?a=api-affiliate&url=%2Fflights%2FBOS-LAX%2F2025-07-04%2F2025-07-07%3FsearchTrackingToken%3DPI%257CMzc3LjB8Wk9PTXwxNzM4MTU0NjgxOTI4fG51bGwsMA%253D%253D&mc=USD",
                    "noStops": true
                }
            ],
            "predicted": false,
            "cabin": "economy"
        }
    ],
    "airports": [
        {
            "iataCode": "BOS",
            "name": "Boston Logan Intl Airport",
            "cityName": "Boston",
            "countryName": "United States"
        },
        {
            "iataCode": "LAX",
            "name": "Los Angeles",
            "cityName": "Los Angeles",
            "countryName": "United States"
        }
    ]
}
400 - application/json

Error codes:

  • VALIDATION_ERROR - The request failed one or more validation checks. Please review request and documentation
  • UNRECOGNIZED_LOCATION - Unknown location provided to the request
  • INVALID_DATES - Invalid dates provided to the request
403 - application/json

Request is not allowed

404 - application/json

Resource was not found

429 - application/json

Rate limit exceeded

Types:

RoutesRequest

Properties
origin
Required
destination

If not provided, search will be to "anywhere"

dates

If not provided, the search is for "anytime"

roundTrip
Default: false

If true, the search is for a round trip and departureDate parameter is required

filters

Filters to apply to the search results

aggregationType

Aggregates results by the specified type

currencyCode

If not provided, the domain's default currency will be used

Example:
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01"
    }
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01",
        "toDepartureDate": "2025-03-01",
        "tripMinDuration": 3,
        "tripMaxDuration": 7
    },
    "roundTrip": true
}
{
    "origin": {
        "placeId": 175312
    },
    "dates": {
        "departureDate": "2025-06-01"
    }
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dates": {
        "departureDate": "2025-12-01",
        "toDepartureDate": "2025-03-01"
    },
    "roundTrip": true,
    "filters": {
        "priceMax": 1234,
        "stopsMax": 1,
        "cabin": "economy"
    },
    "aggregationType": "airline"
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "aggregationType": "airline"
}

CalendarRequest

Properties
origin
Required
destination
Required
dateFrom
Required

The start date for the search range

dateTo
Required

The end date for the search range (inclusive)

Maximum months range for "day" aggregation is 2 months Maximum months range for "month" aggregation is 12 months

currencyCode

If not provided, the domain's default currency will be used

roundTrip
Default: false

If true, the search is for a round trip

noStops
Default: false

If true, only non-stop flights are returned. Price prediction is disabled for this option.

excludePredictions
Default: false

If true, predictions are excluded from the results and only cached data is used

aggregationType
Default: day

Aggregates results by the specified time period (day/month)

cabin

Filter results by cabin

Example:
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-12",
    "dateTo": "2025-12",
    "noStops": true
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-06",
    "dateTo": "2025-12",
    "roundTrip": true
}
{
    "origin": {
        "placeId": 175312
    },
    "destination": {
        "placeId": 175706
    },
    "dateFrom": "2025-12",
    "dateTo": "2025-12",
    "cabin": "business"
}

PlaceRequest

Place object containing location details for origin/destination

Properties
placeId

Place id of the location

iataCode

Non metro-airport code. If referring to a metro area, use placeId instead.

RoutesAggregationTypeenum

The type of aggregation to use for the results:

  • airline - Aggregates results by airline

airline

CalendarAggregationTypeenum

The type of aggregation to use for the results:

  • day - Aggregates results by day
  • month - Aggregates results by month

day | month

DatesRequest

Object containing query date parameters.

Properties
departureDate
Required

The departure date.

toDepartureDate

The end of the date range (inclusive) for departure, for flexible dates. If not provided, then specific date (departureDate) is used. Maximum difference between departureDate and toDepartureDate is 30 days.

returnDate

The return date. Required for round-trip searches

toReturnDate

The end of the date range (inclusive) for return, for flexible dates. If not provided, then specific date (returnDate) is used. Maximum difference between returnDate and toReturnDate is 30 days.

tripMinDuration

The minimum amount of days for round-trip flexible trips. Ignored for one-way searches

tripMaxDuration

The maximum amount of days for round-trip flexible trips. Ignored for one-way searches

SearchFiltersRequest

Properties
priceMax

The inclusive price to consider (maximum) in specified currency. If currencyCode is not provided, the domain's default currency will be used

stopsMax

The maximum number of stops:

  • 0 - direct flights only
  • 1 - max 1 stop
  • 2 - 2 or more stops (all flights)
cabin

Filter results by cabin

RoutesResponse

Properties
origin
Required
destination

Not present if the search is for a "anywhere" destination

results
Required

Array of flight results

airlines
Required

List of airlines used in the results

airports
Required

List of airports used in the results

Example:
{
    "origin": {
        "placeId": 123567,
        "placeType": "airport",
        "name": "Boston Logan International Airport"
    },
    "destination": {
        "placeId": 654231,
        "placeType": "airport",
        "name": "San Francisco International Airport"
    },
    "results": [
        {
            "outboundLeg": {
                "origin": "BOS",
                "destination": "SFO",
                "airlineCodes": [
                    "SK",
                    "AA"
                ],
                "departureDateTime": "2025-06-12T12:00:00",
                "arrivalDateTime": "2025-06-19T12:00:00",
                "stops": 1,
                "timestamp": "2025-05-26T19:42:30"
            },
            "inboundLeg": {
                "origin": "SFO",
                "destination": "BOS",
                "airlineCodes": [
                    "AA"
                ],
                "departureDateTime": "2025-06-12T12:00:00",
                "arrivalDateTime": "2025-06-19T12:00:00",
                "stops": 0,
                "timestamp": "2025-05-26T19:42:30"
            },
            "deeplinkUrl": "https://www.kayak.com/in?a=kan_123_456&url=/flights/BOS-SFO/2025-06-12/2025-06-19?mc=USD&searchTrackingToken=qwerty",
            "price": {
                "price": 1234,
                "currency": "USD"
            },
            "cabin": "economy"
        }
    ],
    "airlines": [
        {
            "iataCode": "SK",
            "name": "SAS",
            "logoUrl": "https://www.kayak.com/sas.png"
        },
        {
            "iataCode": "AA",
            "name": "American Airlines",
            "logoUrl": "https://www.kayak.com/aa.png"
        }
    ],
    "airports": [
        {
            "name": "Boston Logan International Airport",
            "iataCode": "BOS",
            "cityName": "Boston",
            "countryName": "United States"
        },
        {
            "name": "San Francisco International Airport",
            "iataCode": "SFO",
            "cityName": "San Fransisco",
            "countryName": "United States"
        }
    ]
}

RouteResultResponse

Flight result object containing inbound and outbound flight legs details, deeplink URL and price.

Properties
aggregationKey

Aggregation key for the result, if aggregationType is set.

  • For airline aggregation, the key is the airline IATA code. If flight legs contains multiple airline codes, the aggregation key will be "MULT" (multiple airlines).
outboundLeg
Required

Outbound flight leg details

inboundLeg

Inbound flight leg details. Only present if the flight is round trip.

deeplinkUrl
Required

Generated deeplink URL using inbound and outbound flights legs details. It's important to redirect users to this deeplink as it contains some tracking information, thus ensuring that the user's click is tracked correctly. If the user needs to be directed to the UWL instead, the hostname www.kayak.com can be replaced with the UWL's hostname.

Example:
https://www.kayak.com/in?a=kan_123_456&url=/flights/BOS-SFO/2024-06-12/2024-06-19?searchTrackingToken=qwerty&ffcurrency=USD
price
Required

The price in the requested currency

cabin

Cabin class.

FlightLegResponse

Flight result object containing flight details

Properties
origin
Required

Origin airport IATA code

destination
Required

Destination airport IATA code

airlineCodes
Required

List of airline IATA codes flight leg is operated by

departureDateTime
Required

Local departure date/time

Example:
2025-08-30T08:00:00
arrivalDateTime
Required

Local arrival date/time

Example:
2025-08-30T10:00:00
stops
Required

Number of stops

layoverDuration

Total layover duration in minutes for the flight leg

timestamp
Required

Timestamp of the time the result was captured

CalendarFlightLegResponse

Flight result object containing flight details for calendar search

Properties
origin
Required

Origin airport IATA code

destination
Required

Destination airport IATA code

departureDate
Required

Departure date

timestamp
Required

Timestamp of the time the result was captured:

  • For predicted results, this is the time the prediction was made
  • For cached results, this is the time the result was seen by our travellers
price

The price in the requested currency

  • For round-trip flights, it's present only on inbound flight leg as it covers combined price for both legs
  • For ony-way flights, it's present on outbound flight leg
noStops

If true, the flight is non-stop. Not present if the result is predicted

deeplinkUrl

Generated deeplink URL using inbound and outbound flights legs details

  • For round-trip flights, it's present only on inbound flight leg as it combines both legs
  • For ony-way flights, it's present on outbound flight leg
Example:
https://www.kayak.com/in?a=api-affiliate&url=%2Fflights%2FBOS-LAX%2F2025-06-21%2F2025-07-01%3FsearchTrackingToken%3DPI%257CNDYyLjB8Wk9PTXwxNzM4MTU0NjgxOTkzfG51bGwsMA%253D%253D&mc=USD

CalendarResponse

Properties
origin
Required
destination
Required
results
Required

Array of flight results per day/month

airports
Required

List of airports used in the results

Example:
{
    "origin": {
        "placeId": 123567,
        "placeType": "airport",
        "name": "Boston Logan International Airport"
    },
    "destination": {
        "placeId": 654231,
        "placeType": "airport",
        "name": "San Francisco International Airport"
    },
    "results": [
        {
            "aggregationKey": "2025-06",
            "outboundLeg": {
                "origin": "BOS",
                "destination": "LAX",
                "departureDate": "2025-07-04",
                "timestamp": "2025-01-26T19:42:30",
                "noStops": true
            },
            "inboundLegs": [
                {
                    "origin": "LAX",
                    "destination": "BOS",
                    "departureDate": "2025-07-07",
                    "timestamp": "2025-01-26T19:42:30",
                    "price": {
                        "price": 377,
                        "currency": "USD"
                    },
                    "deeplinkUrl": "https://www.kayak.com/in?a=api-affiliate&url=%2Fflights%2FBOS-LAX%2F2025-07-04%2F2025-07-07%3FsearchTrackingToken%3DPI%257CMzc3LjB8Wk9PTXwxNzM4MTU0NjgxOTI4fG51bGwsMA%253D%253D&mc=USD",
                    "noStops": true
                }
            ],
            "predicted": false,
            "cabin": "economy"
        }
    ],
    "airports": [
        {
            "iataCode": "BOS",
            "name": "Boston Logan Intl Airport",
            "cityName": "Boston",
            "countryName": "United States"
        },
        {
            "iataCode": "LAX",
            "name": "Los Angeles",
            "cityName": "Los Angeles",
            "countryName": "United States"
        }
    ]
}

CalendarResultResponse

Properties
aggregationKey
Required

Aggregation key for the result.

  • For day aggregation, the key is the date in "YYYY-MM-DD" format.
  • For month aggregation, the key is the month in "YYYY-MM" format.
outboundLeg
Required

Outbound flight leg details

inboundLegs
Required

Inbound flight leg details. Empty for one-way flights.

  • With "day" aggregation, it's an array of inbound flight legs for different return days within requested date range.
  • With "month" aggregation, it's an array of inbound flight legs for different return months within requested date range.
predicted
Required

If true, the result price is predicted

cabin

Cabin class.

AirlineResponse

Properties
iataCode
Required

IATA Code for the airline

name
Required

Name of the airline

logoUrl

URL to the airline's logo

AirportResponse

Properties
name
Required

Airport name

iataCode
Required

IATA code of airport

cityName
Required

City name of airport

countryName
Required

Country name of airport

PlaceResponse

Properties
placeId
Required

Place id

name
Required

Place name

placeType
Required

PlaceTypeenum

Place type

airport | city | country | region

ErrorResponse

Response returned when an error occurs, accompanied with a HTTP error code

Properties
url
Required

URL of failed request

errors
Required

List of errors

Example:
{
    "url": "<<resourcePathName>>",
    "errors": [
        {
            "code": "ANONYMOUS_ACCESS_DENIED",
            "description": "anonymous access to kayak API denied."
        }
    ]
}

Error

Representation of an error, includes an error code and error description

Properties
code
Required

Error code. Known error codes include:

  • INTERNAL_ERROR: An internal error has occurred
description

Error message, for client consumption

AirportCode

An IATA (International Air Transport Association) code that identifies an airport (3 characters code).

Pattern: ^.{3}$

Example:
CPH

AirlineCode

An IATA (International Air Transport Association) code that identifies an airline (2 characters code).

Pattern: ^.{2}$

Example:
LH

PriceResponse

Properties
price
Required
currency
Required
Example:
{
    "price": 1234,
    "currency": "EUR"
}

CurrencyCode

ISO 4217 code identifier for currency. Currency codes are composed of a country's two-character Internet country code plus a third character denoting the currency unit.

Pattern: [A-Z]{3}

Example:
USD

Cabinenum

Cabin of the flight:

  • economy - Economy
  • business - Business
  • first - First
  • premium - Premium economy
  • mixed - Mixed cabins
  • student - Student

economy | business | first | premium | mixed | student

year-month

Pattern: ^[0-9]{4}-(0[1-9]|1[0-2])$

Example:
2025-06

The KAYAK Affiliate Network lets you link from any brand you likeEnhance and monetize your travel content with flights, hotels, cars and more!

KAYAK logo
HotelsCombined logo
Momondo logo
Cheapflights logo
Cookie preferences