Piloterr

Expedia Flight

GET
/v2/expedia/flight

Search Expedia flights by airport route and dates, or by a flight search URL. Each offer includes the airline, times, stops, and displayed price.

Credit cost: 2 credits per call

Authorization

ApiKeyAuth
headerx-api-key<token>

Your API key. Include it in the x-api-key header for every request.

Query Parameters

query*string

A route or a full Expedia Flights-Search URL. Empty, a route without two airport codes, or a non-Expedia URL returns 400. A full URL is opened as given. price stays the label on the offer. pagination.next is null.

Route

JFK-LAX

Route with to

JFK to LAX
departure_date?string

Departure as YYYY-MM-DD for a route. Omit it and the route uses 2026-11-15. A value that is not YYYY-MM-DD returns 400. Ignored when query is a full URL.

2026-11-15
return_date?string

Return date as YYYY-MM-DD. Omit it for a one-way trip. A value that is not YYYY-MM-DD returns 400. Ignored when query is a full URL.

2026-11-22
adults?number

Adult passengers for a route. Omit it and the request uses 1. Ignored when query is a full URL.

1
cabin_class?string

Label copied onto every result as cabin_class. Omit it and each result uses economy. It does not add a cabin filter to the Expedia URL.

economy
region?string

Host for a route. Omit it for www.expedia.com. Allowed: us, ca, uk, au, fr, de, es, it, nl, mx. Any other value returns 400. Ignored when query is a full URL.

us

Response Body

Successful response

application/json
  1. response
results?array<>
pagination?
Example Request
curl -X GET 'https://api.piloterr.com/v2/expedia/flight?query=string'
Example Response
{  "results": [    {      "price": "$269",      "stops": "Nonstop",      "origin": "JFK",      "airline": "Delta",      "duration": "6h 13m",      "cabin_class": "economy",      "destination": "LAX",      "arrival_time": "6:33pm",      "departure_time": "3:20pm"    }  ],  "pagination": {    "next": null,    "page": 1,    "per_page": 1,    "total_pages": null,    "total_results": null  }}