Flight Listings API

The Flight Listings API allows travellers on your website to search Expedia flight inventory by date, origin, destination, and other parameters to return a listing of available flights. Travellers will then be able to deeplink from your website to the Expedia website to complete their travel booking.

How to make a Flight Listings API call

Request Url

curl https://apim.expedia.com/flights/listings

Required Headers

Optional Headers

  • Accept-Encoding: gzip

Request Parameters

Minimum request parameters

  • Search Type - You can make different kinds of flights listings as follows:
    • One way search request: Only one segment is requested
    • Round trip search request: Two segments requested
    • Multi destination search request: Three to six segments requested
  • Traveler info - indicate the number of Travelers.
  • origin & destination - indicate from where the traveler depart and arrive
  • departureDate - indicate date on which customer wants to depart

ParameterSampleDescription
adult1Number of Adult Travelers.
senior1Number of Senior (age > 65) Travelers
segment<no>.originLAS/LasVegas3-letter IATA Airport code/Location name from where the passenger is departing.
segment<no>.destinationLAX/Los Angeles3-letter IATA Airport code/Location name from where the passenger is arriving.
segment<no>.departureDate2025-10-01Date, in ISO format [YYYY-MM-DD], on which customer wants to depart.
Warning

Note:

  • Either one adult or one senior per itinerary is mandatory.
  • Max number of travelers limited to 6

Example of Search Request

Request flight offers with all flight segments listed in a single API response.

The number of segment#.origin, segment#.destination, and segment#.departureDate elements indicate the type of flights requested (one way, roundtrip, or multi-destination).

One Way Search

curl https://apim.expedia.com/flights/listings?segment1.origin=LAS&segment1.destination=FLL&segment1.departureDate=2025-09-01&adult=1&senior=1&childrenAges=2,3 \
-H 'Accept: application/vnd.exp-flight.v3+json' \
-H 'Partner-Transaction-Id: ••••••' \
-H 'Key: ••••••' \
-H 'Authorization: ••••••'
Information

Note: One segment requested.

Round Trip Search

curl https://apim.expedia.com/flights/listings?segment1.origin=EWR&segment1.destination=LAX&segment1.departureDate=2022-09-01&segment2.origin=LAX&segment2.destination=EWR&segment2.departureDate=2022-09-05&adult=1 \
-H 'Accept: application/vnd.exp-flight.v3+json' \
-H 'Partner-Transaction-Id: ••••••' \
-H 'Key: ••••••' \
-H 'Authorization: ••••••'
Information

Note: Two segments requested.

Multiple destination Search

curl https://apim.expedia.com/flights/listings?segment1.origin=LAS&segment1.destination=ATL&segment1.departureDate=2022-09-01&segment2.origin=ATL&segment2.destination=ORD&segment2.departureDate=2022-09-05&segment3.origin=ORD&segment3.destination=SEA&segment3.departureDate=2022-09-10&segment4.origin=SEA&segment4.destination=LAS&segment4.departureDate=2022-09-15&adult=1 \
-H 'Accept: application/vnd.exp-flight.v3+json' \
-H 'Partner-Transaction-Id: ••••••' \
-H 'Key: ••••••' \
-H 'Authorization: ••••••'
Information

Note: Three to six segments can be requested.

Search for a family trip

curl https://apim.expedia.com/flights/listings?segment1.origin=LAS&segment1.destination=FLL&segment1.departureDate=2025-09-01&adult=1&senior=1&childrenAges=2,3&infantInLap=1&infantInSeat=1 \
-H 'Accept: application/vnd.exp-hotel.v3+json' \
-H 'Partner-Transaction-Id: ••••••' \
-H 'Key: ••••••' \
-H 'Authorization: ••••••'
Information

Note:

  • Comma-separated list of the ages of all child travelers (ages 2 - 17).
  • Children aged 12-17 will be priced as ADULT and the PricePerPassengerCategory Section in the API response, as this is the standard way that airlines categorize travelers.
  • infantInLap is the number of Infant travelers without a reserved seat whereas infantInSeat is with reserved seat. Age should be less than 2 for this category.
  • Max number of travelers limited to 6 (including infants in seats or laps)

Filter Parameters

We recommend using filters to only retrieve the data you need for better latency and smaller payloads
ParameterSampleDescription
cabinClasseconomyThe desired cabin classes that the user would like to see offers for.

Options can be:economy/first/business/premiumeconomy
numberOfStops1Filter for the number of stops the user would like to see offers for.
A value of 0 returns only non-stop flights in the search response, and a value of 1 returns offers with both 0 and 1 number of stops
This filter parameter works only for values 0 and 1. Any value greater than 1 will be ignored and all the results will be returned by the API irrespective of numberOfStops requested.
sortTypePriceSort the search results according to one selected category.
Options can be: Price/Duration
limit100The maximum number of Flight offers returned in the response. Must be an integer value greater than 0.
selectedCarriersAS,AAAdding comma-separated list of IATA or Expedia airline codes will provide preference to these requested carriers whenever available in the search results content. This however does not guarantee that only the selectedCarriers will come back in the search response. In case if the selected carriers are unavailable or have insufficient offer counts, other carrier offers gets backfilled.

A maximum of 6 carriers can be requested.

See 'Related Links' section for a full list of Expedia Airline Codes.
refundabletrueRefundable solutions will be returned if and only if we pass refundable as true in the request.(refundable=true).
filterNearByAirporttrueFilters nearby airports ensuring only results from the requests airport code are returned.

This request param is valid only for AirportCode-based searches.

Response

A successful response returns the following data:

{
	"Segments": [{
			"SegmentId": "MTRfUHVibGlzaGVk", 
			....
			"Legs": [{
				...
			}]
		},
		{
			"SegmentId": "MTQwX1B1Ymxpc2hlZA==",
			...
			"Legs": [{
			    ...
			}]
		}
	],
	"Offers": [{
			"OfferId": "v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI+AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI",
			...
			"Links": {
				"WebDetails": {
					"Method": "GET",
					"Href": "https://www.expedia.com/go/udp?CCheck=1&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|3&Class=3&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=80f50380-34fa-11e9-9415-0a6b914daa30&langid=1033&piid=v5-sos-42b700553889490c9e966329ac528b67-3-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM5NTQYi5ABIOVaKLSouwEwxqq7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI&Price=545.16&CurrencyCode=USD¤cy=USD&DepartureTLA=L1:LAS&ArrivalTLA=L1:FLL&DepartureDate=L1:2022-09-01&ArrivalDate=L1:2022-09-02&RefundableFlightsOnly=N"
				}
			},
			"SegmentIds": [
				"MTRfUHVibGlzaGVk"
			],
			"OfferPrice": {
			    ...
			},
			...
		},
		{
			"OfferId": "v5-sos-42b700553889490c9e966329ac528b67-39-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM0NzAYi5ABIOVaKLijuwEwv6a7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI+AQoiCiAIzpYBEgM0NzAYi5ABIOVaKLijuwEwv6a7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI",
			...
			"Links": {
				"WebDetails": {
					"Method": "GET",
					"Href": "https://www.expedia.com/go/udp?CCheck=1&NumAdult=1&NumSenior=1&NumChild=2&ChildrenAges=2|3&Class=3&Sort=10&TripType=OneWay&ProductType=air&eapid=0-1&ServiceVersion=V5&MessageGuid=80f50380-34fa-11e9-9415-0a6b914daa30&langid=1033&piid=v5-sos-42b700553889490c9e966329ac528b67-39-1~0.S~AQoCCAESBwjUBBABGAEgASAMIAcgDSAJKAJYAQ~AQoiCiAIzpYBEgM0NzAYi5ABIOVaKLijuwEwv6a7AThSQABYARIKCAEQARgBKgJOSxgEIgQIARABIgQIAhACIgQIAxABKAIoAygEMAI&Price=561.96&CurrencyCode=USD¤cy=USD&DepartureTLA=L1:LAS&ArrivalTLA=L1:FLL&DepartureDate=L1:2022-09-01&ArrivalDate=L1:2022-09-01&RefundableFlightsOnly=N"
				}
			},
			"SegmentIds": [
				"MTQwX1B1Ymxpc2hlZA=="
			],
			"OfferPrice": {
			    ...
			},
			...
		}
	],
	"SearchCities": [
	  ...
	],
	"ValidFormsOfPayment": {
		...
	},
	"TransactionId": "80f50380-34fa-11e9-9415-0a6b914daa30"
}
Information

Note:

You can use the link to redirect a traveler to Expedia.

Error Response

{
    "Errors": [
        {
            "Code": "INVALID_DEPARTURE_DATE",
            "Description": "Departure date is missing or invalid in segment 1"
        }
    ],
    "TransactionId": "7d806ae9-1466-4e4b-9ed8-4102c830db03"
}

Full list of possible error codes and error details:

Common Error Codes

HTTP Status CodeError CodeError ResponseCause
200FLIGHT_NOT_AVAILABLERequested flight is not availableIn an anchored search, If selected segments having offer is expired while next segment anchored search.
200CHILD_PRICED_AS_ADULT1 child of age group 12-17 in the request are priced as adult in the responseAny child in the age of 12-17 will be priced as adult and this warning message will be given back for notifying the same.
200INVALID_WD_PASSENGER_COMBINATIONWeb link does not support search with infant in lap and infant in seat togetherWhen WD link is requested it will be returned only when infant in seat and infant in lap is not requested together.
200INVALID_WD_PASSENGER_COUNTWeb link does not support search with more than 6 passengersWhen WD link is requested, the deeplink will be returned only when the number of passengers requested is less than or equal to 6.
200NO_RESULTS_FOUNDNo flights solutions found for the request.No flights for a requested criteria from supply.
409NO_RESULTS_FOUNDNo flights solutions found for the request.There are no flights for a requested criteria during flight search API.
500SERVER_ERRORAn error has occurred while processing the requestThere is a server-side issue that has resulted in a failure.
400INVALID_ACCEPT_HEADERPlease provide a valid Accept headerThe accept header provided is not as per the documentation.
400INVALID_PARTNER_TRANSACTION_IDPartner Transaction ID is missing, please provide Partner Transaction IDA Partner-Transaction-Id value must be included in the query header.
400MISSING_ADULT_OR_SENIORInvalid Passenger Information : Must specify at least 1 adult or senior passengerAdult and senior count are both 0, but with Child/Infant in lap/Infant in seat
400INFANT_IN_LAP_ACCOMPANIED_BY_ADULT_OR_SENIORInvalid Passenger Information : Each infant in lap must be accompanied by an adult or seniorInfant on lap is not accompanied with enough adult or senior
400INVALID_CHILD_AGEInvalid Passenger Information : The age of child must be between 2 and 17 years oldChildren ages is given as less than 2 or greater than 17
400INVALID_PASSENGER_COUNTInvalid Passenger Information : Total number of passengers must be between 1 and 9 inclusiveMax number of travelers exceeded 9 (including infants in seats or laps). Passenger limit will be 6 if 'WD' link is requested during search.
400ORIGIN_REQUIREDOrigin is empty in flight segment 1. Please provide a valid airport code or cityOrigin is given as empty
400INVALID_ORIGINInvalid origin. The specified origin CCC in flight segment 1 is unrecognizedInvalid entry given as origin
400DESTINATION_REQUIREDDestination is empty in flight segment 1. Please provide a valid airport code or cityDestination is given as empty
400INVALID_DESTINATIONInvalid destination. The specified destination ORR in flight segment 1 is unrecognizedInvalid entry given as destination
400INVALID_DEPARTURE_DATEDeparture date is missing or invalid in segment 1Empty/invalid departure date is given
400INVALID_DEPARTURE_TIMEDeparture time is missing or invalid in segment 1Empty/invalid departure time is given
400DEPARTURE_TIME_DEPARTURE_TIMESPAN_NOT_ALLOWED_TOGETHEREither Departure time or departure time span is allowedDeparture time and Departure time span given in the same search
400DEPARTURE_DATE_OUT_OF_RANGEDeparture date of segment 1 must be greater than 6 hours from nowWhen departure date is given as previous date
400DEPARTURE_DATE_OUT_OF_RANGEDeparture date of segment 1 must be less than 330 days from nowDeparture date is given 330 days after current date
400INVALID_LOCALEInvalid locale provided. Please provide a valid localeLocale is given as invalid/empty value
400INVALID_ADULT_COUNTInvalid adult count provided. Please provide a valid adult countEmpty/invalid adult count
400INVALID_SENIOR_COUNTInvalid senior count provided. Please provide a valid senior countEmpty/invalid senior count
400INVALID_CHILD_COUNTInvalid child count provided. Please provide a valid senior countEmpty/invalid child count
400INVALID_INFANT_IN_LAP_COUNTInvalid infant in lap count provided. Please provide a valid senior countEmpty/invalid infant in lap count
400INVALID_INFANT_IN_SEAT_COUNTInvalid infant in seat count provided. Please provide a valid senior countEmpty/invalid infant in seat count
400INVALID_SELECTED_CARRIERSInvalid Air Carrier : Specified air carrier code ASA is not valid. Please specify a proper two character IATA codeSelected carrier is given as invalid (Eg: ASA)
400INVALID_SELECTED_CARRIERSSelected carriers is not given. Please specify valid carriers.SelectedCarriers is given as empty
400INVALID_SELECTED_CARRIERSSpecified air carrier codes of exceeds maximum limit of 6SelectedCarriers filtering is given more than 6 carriers
400INVALID_NUMBER_OF_STOPSInvalid number of stops provided. Please provide a valid number of stopsNumber of stops with input other than integers like 0,1,2 etc or leaving it empty
400INVALID_SORT_TYPEInvalid sort type. Allowed values are [Price]Input of sort type other than the defined one. Currently V3 supports sort type as Price
400INVALID_NUMBER_OF_FLIGHTSInvalid number of flights provided. Please provide a valid number of flightsInputs other than Integers or empty
400INVALID_ACCOUNT_CODESInvalid account codes are provided. Please specify a valid account codeInvalid/empty account code provided
400INVALID_AGENTInvalid value for agent. Please provide the value as true or false.Value of agent is given input other than true or false or given as empty
400INVALID_LINKSLinks is not given. Please specify valid Links.Value of links is not given/invalid name given as input to links
400INVALID_DEPARTURE_DATEDeparture date of segment 2 must be after departure date of segment 1Departure date of round trip/multi city is given as an earlier date
400ORIGIN_DESTINATION_SAMESpecified origin and destination are same. Please provide different origin and destinationOrigin and destination is given as same
400MISSING_MANDATORY_SEGMENT_DETAILSMissing segment details.Specify all mandatory segment details.Segment details are missing
400INVALID_DEPARTURE_TIMESPANDeparture time span is missing or invalid in segment 1Invalid input for DepartureTimeSpan
400INVALID_CABIN_CLASSInvalid cabin class. Allowed values are [economy | first | business | premiumeconomy]Invalid input for cabinClass
400INVALID_ANCHORAnchorBy 'value given in anchorBy' is in an invalid formatInvalid information given for parameter anchorBy.

Valid values are:
segment1 | segment2 | segment3 | segment4 | segment5

Only one value may be used at a time.
400SELECTED_FLIGHT_DETAILS_NOT_AVAILABLESelected flight details are not specified in the requestThe value of anchorBy is greater than segment1 and selectedOffer is not given in Request.

The API is stateless, so if the previously selected legs are not carried forward in the request, then there is no way for the API to know which selections have already been made.

Understanding how handle errors: Error Handling.

Next Steps

  • Here, you can explore the endpoint definitions for this API, then go to the API Explorer to try out all the XAP endpoints, download OpenAPI specs, or download Postman collections. Testing with one or all of these options will give you an understanding of how the examples and schema definitions compare to the actual output. Go to the API Explorer to find out more.
  • Deeplink customers to the Expedia website where they can book selected hotel. You will also be able to earn commission on any bookings that your customers make using our XAP API solution.
Did you find this page helpful?
How can we improve this content?
Thank you for helping us improve!