Expedia API: Search flights
Finds Expedia flights between cities or airports on selected dates, with per-traveler USD prices. Round trips combine outbound and return choices; for round trips only the cheapest outbound choices are paired with their returns.
Unofficial. Not affiliated with or endorsed by Expedia.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Cabin optional
cabin Cabin class, e.g. business.
economy (default)
One of
economy,premium_economy,business,first.- Adults optional
adults Number of adult travelers, e.g. 2.
1 (default)
Whole number from 1 to 9.
- Origin, required
origin Departure city or airport, e.g. Chicago or ORD.
Chicago
2 characters or more.
- Destination, required
destination Arrival city or airport, e.g. Denver or DEN.
Denver
2 characters or more.
- Max Results optional
max_results Maximum flight options to return, e.g. 20.
20 (default)
Whole number from 1 to 50.
- Return Date optional
return_date Return date for a round trip (YYYY-MM-DD), e.g. 2026-11-17.
Not set
- Nonstop Only optional
nonstop_only Only show nonstop flights, e.g. true.
false (default)
True or false.
- Departure Date, required
departure_date Departure date (YYYY-MM-DD), e.g. 2026-11-10.
2026-11-10
Input as JSON
{ "origin": "Chicago", "destination": "Denver", "departure_date": "2026-11-10"}Output
{ "flight_options": [ { "stops": 0, "airlines": [ "Frontier Airlines" ], "currency": "USD", "page_link": "https://www.expedia.com/Flights-Search?leg1=from%3AChicago%2Cto%3ADenver%2Cdeparture%3A11%2F10%2F2026TANYT&mode=search&trip=oneway&airProductToken=AQowCi4IxnISBDE0ODMYrhwgg2ko7uOcAzCe5ZwDOEVAAFgBagRQQ18xcgdHMjFFWFMzEgoIARABGAEqAkY5GAEiBAgBEAEoAigDKAQwDQ" , "travel_time": "2 h 56 min", "arrival_time": "2026-11-10T08:26:00-07:00", "stop_airports": [], "departure_time": "2026-11-10T06:30:00-06:00", "flight_numbers": [ "F91483" ], "travel_time_minutes": 176, "arrival_airport_code": "DEN", "arrival_airport_name": "Denver Intl.", "departure_airport_code": "ORD", "departure_airport_name": "O'Hare Intl.", "price_per_traveler_usd": 76 }, { "stops": 1, "airlines": [ "Frontier Airlines" ], "currency": "USD", "page_link": "https://www.expedia.com/Flights-Search?leg1=from%3AChicago%2Cto%3ADenver%2Cdeparture%3A11%2F10%2F2026TANYT&mode=search&trip=oneway&airProductToken=AQpiCi8IxnISBDMyNDEYrhwgo7EBKOjlnAMwluecAzhFQABYAWoEUENfMXIHUjIxVlhQMgovCMZyEgQ0MDY5GKOxASCDaSjX55wDMN3onAM4RUABWAFqBFBDXzFyB1IyMVZYUDISCggBEAEYASoCRjkYA…" , "travel_time": "6 h 13 min", "arrival_time": "2026-11-10T15:53:00-07:00", "stop_airports": [ "DFW" ], "departure_time": "2026-11-10T10:40:00-06:00", "flight_numbers": [ "F93241", "F94069" ], "travel_time_minutes": 373, "arrival_airport_code": "DEN", "arrival_airport_name": "Denver Intl.", "departure_airport_code": "ORD", "departure_airport_name": "O'Hare Intl.", "price_per_traveler_usd": 102 }, { "stops": 1, "airlines": [ "Frontier Airlines" ], "currency": "USD", "page_link": "https://www.expedia.com/Flights-Search?leg1=from%3AChicago%2Cto%3ADenver%2Cdeparture%3A11%2F10%2F2026TANYT&mode=search&trip=oneway&airProductToken=AQpgCi4IxnISBDMxMzUYrhwgiDgou-ecAzD56JwDOEVAAFgBagRQQ18xcgdSMjFWWFAyCi4IxnISBDI5OTUYiDggg2ko_-qcAzCe7JwDOEVAAVgBagRQQ18xcgdSMjFWWFAyEgoIARABGAEqAkY5GAEiB…" , "travel_time": "10 h 11 min", "arrival_time": "2026-11-10T23:22:00-07:00", "stop_airports": [ "IAH" ], "departure_time": "2026-11-10T14:11:00-06:00", "flight_numbers": [ "F93135", "F92995" ], "travel_time_minutes": 611, "arrival_airport_code": "DEN", "arrival_airport_name": "Denver Intl.", "departure_airport_code": "ORD", "departure_airport_name": "O'Hare Intl.", "price_per_traveler_usd": 108 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"expedia.com/search_flights","input":{"origin":"Chicago","destination":"Denver","departure_date":"2026-11-10"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "expedia.com/search_flights" , "input": { "origin": "Chicago", "destination": "Denver", "departure_date": "2026-11-10" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "expedia.com/search_flights" , "input": { "origin": "Chicago", "destination": "Denver", "departure_date": "2026-11-10" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run expedia.com/search_flights# with {"origin":"Chicago","destination":"Denver","departure_date":"2026-11-10"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "origin", "destination", "departure_date" ], "properties": { "cabin": { "enum": [ "economy", "premium_economy", "business", "first" ], "type": "string", "default": "economy", "description": "Cabin class, e.g. business." }, "adults": { "type": "integer", "default": 1, "maximum": 9, "minimum": 1, "description": "Number of adult travelers, e.g. 2." }, "origin": { "type": "string", "minLength": 2, "description": "Departure city or airport, e.g. Chicago or ORD." }, "destination": { "type": "string", "minLength": 2, "description": "Arrival city or airport, e.g. Denver or DEN." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum flight options to return, e.g. 20." }, "return_date": { "type": "string", "description": "Return date for a round trip (YYYY-MM-DD), e.g. 2026-11-17." }, "nonstop_only": { "type": "boolean", "default": false, "description": "Only show nonstop flights, e.g. true." }, "departure_date": { "type": "string", "description": "Departure date (YYYY-MM-DD), e.g. 2026-11-10." } }}Output schema
{ "type": "object", "required": [ "flight_options" ], "properties": { "flight_options": { "type": "array", "items": { "type": "object", "required": [ "airlines", "flight_numbers", "departure_airport_name", "departure_airport_code", "arrival_airport_name", "arrival_airport_code", "departure_time", "arrival_time", "travel_time", "travel_time_minutes", "stops", "stop_airports", "price_per_traveler_usd", "currency", "page_link" ], "properties": { "stops": { "type": "integer" }, "airlines": { "type": "array", "items": { "type": "string" } }, "currency": { "type": "string", "description": "USD." }, "page_link": { "type": "string", "format": "uri" }, "travel_time": { "type": "string" }, "arrival_time": { "type": "string", "format": "date-time" }, "return_stops": { "type": [ "integer", "null" ] }, "stop_airports": { "type": "array", "items": { "type": "string" } }, "departure_time": { "type": "string", "format": "date-time" }, "flight_numbers": { "type": "array", "items": { "type": "string" } }, "return_airlines": { "type": [ "array", "null" ], "items": { "type": "string" } }, "return_travel_time": { "type": [ "string", "null" ] }, "return_arrival_time": { "type": [ "string", "null" ], "format": "date-time" }, "travel_time_minutes": { "type": "integer" }, "arrival_airport_code": { "type": "string" }, "arrival_airport_name": { "type": "string" }, "return_stop_airports": { "type": [ "array", "null" ], "items": { "type": "string" } }, "return_departure_time": { "type": [ "string", "null" ], "format": "date-time" }, "return_flight_numbers": { "type": [ "array", "null" ], "items": { "type": "string" } }, "departure_airport_code": { "type": "string" }, "departure_airport_name": { "type": "string" }, "price_per_traveler_usd": { "type": "number", "description": "Total fare in USD per traveler." }, "return_travel_time_minutes": { "type": [ "integer", "null" ] }, "return_arrival_airport_code": { "type": [ "string", "null" ] }, "return_arrival_airport_name": { "type": [ "string", "null" ] }, "return_departure_airport_code": { "type": [ "string", "null" ] }, "return_departure_airport_name": { "type": [ "string", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
expedia.com/search_flights- Returns
- airlines, flight numbers, airports, local departure and arrival times, travel time, stops, price per traveler, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method expedia.com/search_flights with the inputs above.
Ask your agent
- Find me round-trip flights from Boston to Lisbon leaving 2026-05-14 and coming back 2026-05-24 for 2 adults, economy, with prices per person.
- What nonstop flights are there from SFO to JFK on March 3, 2026? Show airlines, flight numbers, departure times and fares.
- Check Expedia for business class one-way flights from Seattle to Tokyo on 2026-09-08, top 10 options.
- I need flights Atlanta to Cancun, departing June 20 2026, returning June 27 2026, 4 adults, nonstop only please.
- Pull up Expedia premium economy fares from LAX to London Heathrow on 2026-12-18, one way, with stops and total travel time.
See more
All Expedia methodsFinds Expedia hotels in a destination for given dates, with public USD prices, reviews, property class, refund status and links. Nightly prices are per room; totals include all requested rooms, taxes and fees.
expedia.com/search_hotelsFinds priced flights between two cities or airports on Trip.com for the chosen dates, cheapest first; round trips pair each outbound flight with its available returns.
trip.com/search_flightsFinds Google Flights options for a route and date with prices, local times, stops and emissions. Round-trip searches list outbound choices with their displayed round-trip fares.
google.com/search_flightsLists cheap round-trip destinations from a city on Google Travel Explore, sorted by fare, optionally within a region, travel month, trip length and nonstop only. Links search Google Flights for the shown dates.
google.com/list_cheap_destinationsFinds dated FlixBus trip options between two cities, with stops, local times, availability and displayed per-person prices, including partner operators on some routes.
flixbus.com/search_bus_tripsFinds the lowest Google Flights fare for each departure date in a month between two places, for one-way trips or a fixed trip length, with the cheapest option and any price insight shown.
google.com/get_cheapest_datesFinds hotels in a city on Trip.com for given dates, with prices, guest ratings, reviews and booking links. Only the initial public listing is read, so large limits may return fewer hotels.
trip.com/search_hotelsCompares Kayak hotel nightly rates across booking sites for a city or neighborhood and stay dates (two adults, one room).
kayak.com/search_hotels