# Expedia API

> Expedia returns hotel prices, reviews, and flight options, available as a workflow and API.

Search hotels returns prices, reviews, ratings, and refund status; it needs a destination, check-in date, and check-out date. Search flights returns fares, schedules, airlines, and stops; it needs an origin, destination, and departure date.

- Page: https://fous.com/workflows/expedia
- Handle: `@expedia`
- Category: [Travel](https://fous.com/workflows/category/travel)
- Source website: https://expedia.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Expedia.

## Methods

### Search flights

Operation `search_flights`, version 1. 1 credit per call.

Find Expedia flights between cities or airports on selected dates, with per-traveler prices. Round trips combine outbound and return choices; their outbound and return listings may be limited to the first page.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `cabin` | string | no | `"business"` | Cabin class, e.g. business. |
| `adults` | integer | no | `2` | Number of adult travelers, e.g. 2. |
| `origin` | string | yes | `"ORD"` | Departure city or airport, e.g. Chicago or ORD. |
| `destination` | string | yes | `"DEN"` | Arrival city or airport, e.g. Denver or DEN. |
| `max_results` | integer | no | `2` | Maximum flight options to return, e.g. 20. |
| `return_date` | string | no | `"2026-11-17"` | Return date for a round trip, e.g. 2026-11-17. |
| `nonstop_only` | boolean | no | `true` | Only show nonstop flights, e.g. true. |
| `departure_date` | string | yes | `"2026-11-10"` | Departure date, e.g. 2026-11-10. |

**Input schema**

```json
{
  "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.",
      "examples": [
        "business"
      ]
    },
    "adults": {
      "type": "integer",
      "default": 1,
      "maximum": 9,
      "minimum": 1,
      "description": "Number of adult travelers, e.g. 2.",
      "examples": [
        2
      ]
    },
    "origin": {
      "type": "string",
      "title": "From",
      "minLength": 2,
      "description": "Departure city or airport, e.g. Chicago or ORD.",
      "examples": [
        "ORD",
        "Chicago",
        "JFK"
      ]
    },
    "destination": {
      "type": "string",
      "title": "To",
      "minLength": 2,
      "description": "Arrival city or airport, e.g. Denver or DEN.",
      "examples": [
        "DEN",
        "Denver",
        "LAX"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum flight options to return, e.g. 20.",
      "x-fous-developer": true,
      "examples": [
        2,
        3,
        50
      ]
    },
    "return_date": {
      "type": "string",
      "format": "date",
      "description": "Return date for a round trip, e.g. 2026-11-17.",
      "examples": [
        "2026-11-17"
      ]
    },
    "nonstop_only": {
      "type": "boolean",
      "default": false,
      "description": "Only show nonstop flights, e.g. true.",
      "examples": [
        true
      ]
    },
    "departure_date": {
      "type": "string",
      "format": "date",
      "description": "Departure date, e.g. 2026-11-10.",
      "examples": [
        "2026-11-10",
        "2026-11-18"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "origin": "ORD",
      "destination": "DEN",
      "max_results": 2,
      "return_date": "2026-11-17",
      "departure_date": "2026-11-10"
    },
    {
      "origin": "Chicago",
      "destination": "Denver",
      "departure_date": "2026-11-10"
    },
    {
      "cabin": "business",
      "adults": 2,
      "origin": "JFK",
      "destination": "LAX",
      "max_results": 3,
      "departure_date": "2026-11-18"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `flight_options` | array |  |  |
| `flight_options[].stops` | integer | `0` |  |
| `flight_options[].airlines` | array |  |  |
| `flight_options[].currency` | string | `"USD"` | USD. |
| `flight_options[].page_link` | string | `"https://www.expedia.com/Flights-Search?leg1=from%3AORD%2Cto%3ADEN%2Cdeparture%3A11%2F10%2F2026TANYT&mode=search&trip=ro` |  |
| `flight_options[].travel_time` | string | `"2 h 56 min"` |  |
| `flight_options[].arrival_time` | string | `"2026-11-10T08:26:00-07:00"` |  |
| `flight_options[].return_stops` | integer or null | `0` |  |
| `flight_options[].stop_airports` | array |  |  |
| `flight_options[].departure_time` | string | `"2026-11-10T06:30:00-06:00"` |  |
| `flight_options[].flight_numbers` | array |  |  |
| `flight_options[].return_airlines` | array or null |  |  |
| `flight_options[].return_travel_time` | string or null | `"2 h 26 min"` |  |
| `flight_options[].return_arrival_time` | string or null | `"2026-11-18T00:21:00-06:00"` |  |
| `flight_options[].travel_time_minutes` | integer | `176` |  |
| `flight_options[].arrival_airport_code` | string | `"DEN"` |  |
| `flight_options[].arrival_airport_name` | string | `"Denver Intl."` |  |
| `flight_options[].return_stop_airports` | array or null |  |  |
| `flight_options[].return_departure_time` | string or null | `"2026-11-17T20:55:00-07:00"` |  |
| `flight_options[].return_flight_numbers` | array or null |  |  |
| `flight_options[].departure_airport_code` | string | `"ORD"` |  |
| `flight_options[].departure_airport_name` | string | `"O'Hare Intl."` |  |
| `flight_options[].price_per_traveler_usd` | number | `152` | Total fare in USD per traveler. |
| `flight_options[].return_travel_time_minutes` | integer or null | `146` |  |
| `flight_options[].return_arrival_airport_code` | string or null | `"ORD"` |  |
| `flight_options[].return_arrival_airport_name` | string or null | `"O'Hare Intl."` |  |
| `flight_options[].return_departure_airport_code` | string or null | `"DEN"` |  |
| `flight_options[].return_departure_airport_name` | string or null | `"Denver Intl."` |  |

**Example input**

```json
{
  "origin": "ORD",
  "destination": "DEN",
  "max_results": 2,
  "return_date": "2026-11-17",
  "departure_date": "2026-11-10"
}
```

**Example output**

```json
{
  "flight_options": [
    {
      "stops": 0,
      "airlines": [
        "Frontier Airlines"
      ],
      "currency": "USD",
      "page_link": "https://www.expedia.com/Flights-Search?leg1=from%3AORD%2Cto%3ADEN%2Cdeparture%3A11%2F10%2F2026TANYT&mode=search&trip=roundtrip&leg2=from%3ADEN%2Cto%3AORD%2Cdeparture%3A11%2F17%2F2026TANYT&airProductTo…",
      "travel_time": "2 h 56 min",
      "arrival_time": "2026-11-10T08:26:00-07:00",
      "return_stops": 0,
      "stop_airports": [],
      "departure_time": "2026-11-10T06:30:00-06:00",
      "flight_numbers": [
        "F91483"
      ],
      "return_airlines": [
        "Frontier Airlines"
      ],
      "return_travel_time": "2 h 26 min",
      "return_arrival_time": "2026-11-18T00:21:00-06:00",
      "travel_time_minutes": 176,
      "arrival_airport_code": "DEN",
      "arrival_airport_name": "Denver Intl.",
      "return_stop_airports": [],
      "return_departure_time": "2026-11-17T20:55:00-07:00",
      "return_flight_numbers": [
        "F93174"
      ],
      "departure_airport_code": "ORD",
      "departure_airport_name": "O'Hare Intl.",
      "price_per_traveler_usd": 152,
      "return_travel_time_minutes": 146,
      "return_arrival_airport_code": "ORD",
      "return_arrival_airport_name": "O'Hare Intl.",
      "return_departure_airport_code": "DEN",
      "return_departure_airport_name": "Denver Intl."
    }
  ]
}
```

### Search hotels

Operation `search_hotels`, version 1. 1 credit per call.

Find Expedia hotels in a destination for your 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. Property class may be unavailable.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"price_low_to_high"` | Order results, for example price_low_to_high. |
| `rooms` | integer | no | `2` | Number of rooms, for example 1. |
| `adults` | integer | no | `3` | Adults traveling, for example 2. |
| `check_in` | string | yes | `"2026-12-03"` | Arrival date, for example 2026-11-12. |
| `check_out` | string | yes | `"2026-12-05"` | Departure date, for example 2026-11-15. |
| `destination` | string | yes | `"Las Vegas"` | City or area to search, for example Orlando. |
| `max_results` | integer | no | `8` | Maximum hotels to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "destination",
    "check_in",
    "check_out"
  ],
  "properties": {
    "sort": {
      "enum": [
        "recommended",
        "price_low_to_high",
        "guest_rating"
      ],
      "type": "string",
      "default": "recommended",
      "description": "Order results, for example price_low_to_high.",
      "examples": [
        "price_low_to_high",
        "guest_rating"
      ]
    },
    "rooms": {
      "type": "integer",
      "default": 1,
      "maximum": 8,
      "minimum": 1,
      "description": "Number of rooms, for example 1.",
      "examples": [
        2
      ]
    },
    "adults": {
      "type": "integer",
      "default": 2,
      "maximum": 10,
      "minimum": 1,
      "description": "Adults traveling, for example 2.",
      "examples": [
        3
      ]
    },
    "check_in": {
      "type": "string",
      "format": "date",
      "description": "Arrival date, for example 2026-11-12.",
      "examples": [
        "2026-12-03",
        "2026-11-12"
      ]
    },
    "check_out": {
      "type": "string",
      "format": "date",
      "description": "Departure date, for example 2026-11-15.",
      "examples": [
        "2026-12-05",
        "2026-11-15"
      ]
    },
    "destination": {
      "type": "string",
      "description": "City or area to search, for example Orlando.",
      "examples": [
        "Las Vegas",
        "Orlando"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum hotels to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        8,
        25
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "price_low_to_high",
      "rooms": 2,
      "adults": 3,
      "check_in": "2026-12-03",
      "check_out": "2026-12-05",
      "destination": "Las Vegas",
      "max_results": 8
    },
    {
      "check_in": "2026-11-12",
      "check_out": "2026-11-15",
      "destination": "Orlando"
    },
    {
      "sort": "guest_rating",
      "check_in": "2026-11-12",
      "check_out": "2026-11-15",
      "destination": "Orlando",
      "max_results": 25
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `hotels` | array |  |  |
| `hotels[].name` | string | `"Bposhtels Las Vegas"` |  |
| `hotels[].currency` | string | `"USD"` |  |
| `hotels[].star_rating` | number or null | `2.5` |  |
| `hotels[].total_price` | number or null | `158` |  |
| `hotels[].expedia_link` | string |  |  |
| `hotels[].guest_rating` | number or null | `7.8` |  |
| `hotels[].review_count` | integer or null | `335` |  |
| `hotels[].neighbourhood` | string or null | `"Las Vegas"` |  |
| `hotels[].nightly_price` | number or null | `27` |  |
| `hotels[].fully_refundable` | boolean | `true` |  |
| `hotels[].guest_rating_label` | string or null | `"Good"` |  |
| `hotels[].expedia_property_id` | string or null | `"47040632"` |  |

**Example input**

```json
{
  "sort": "price_low_to_high",
  "rooms": 2,
  "adults": 3,
  "check_in": "2026-12-03",
  "check_out": "2026-12-05",
  "destination": "Las Vegas",
  "max_results": 8
}
```

**Example output**

```json
{
  "hotels": [
    {
      "name": "Bposhtels Las Vegas",
      "currency": "USD",
      "star_rating": 2.5,
      "total_price": 158,
      "expedia_link": "https://www.expedia.com/Las-Vegas-Hotels-BHostels-Las-Vegas.h47040632.Hotel-Information?chkin=2026-12-03&chkout=2026-12-05&x_pwa=1&rfrr=HSR&pwa_ts=1790684699761&referrerUrl=aHR0cHM6Ly93d3cuZXhwZWRpYS5…",
      "guest_rating": 7.8,
      "review_count": 335,
      "neighbourhood": "Las Vegas",
      "nightly_price": 27,
      "fully_refundable": true,
      "guest_rating_label": "Good",
      "expedia_property_id": "47040632"
    },
    {
      "name": "Thunderbird Hotel",
      "currency": "USD",
      "star_rating": 2.5,
      "total_price": 312,
      "expedia_link": "https://www.expedia.com/Las-Vegas-Hotels-Thunderbird-Hotel.h13220099.Hotel-Information?chkin=2026-12-03&chkout=2026-12-05&x_pwa=1&rfrr=HSR&pwa_ts=1790684699778&referrerUrl=aHR0cHM6Ly93d3cuZXhwZWRpYS5j…",
      "guest_rating": 7.2,
      "review_count": 1005,
      "neighbourhood": "Las Vegas",
      "nightly_price": 52,
      "fully_refundable": false,
      "guest_rating_label": "Good",
      "expedia_property_id": "13220099"
    },
    {
      "name": "Longhorn Casino & Hotel",
      "currency": "USD",
      "star_rating": 2.5,
      "total_price": 274,
      "expedia_link": "https://www.expedia.com/Las-Vegas-Hotels-Longhorn-Casino-Hotel.h12384405.Hotel-Information?chkin=2026-12-03&chkout=2026-12-05&x_pwa=1&rfrr=HSR&pwa_ts=1790684699763&referrerUrl=aHR0cHM6Ly93d3cuZXhwZWRp…",
      "guest_rating": 8.2,
      "review_count": 1515,
      "neighbourhood": "Sunrise Manor",
      "nightly_price": 53,
      "fully_refundable": true,
      "guest_rating_label": "Very Good",
      "expedia_property_id": "12384405"
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@expedia",
  "visibility": "public",
  "operation": "search_flights",
  "version": 1,
  "input": {
    "origin": "ORD",
    "destination": "DEN",
    "max_results": 2,
    "return_date": "2026-11-17",
    "departure_date": "2026-11-10"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@expedia\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_flights\",\n  \"version\": 1,\n  \"input\": {\n    \"origin\": \"ORD\",\n    \"destination\": \"DEN\",\n    \"max_results\": 2,\n    \"return_date\": \"2026-11-17\",\n    \"departure_date\": \"2026-11-10\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@expedia",
  "visibility": "public",
  "operation": "search_flights",
  "version": 1,
  "input": {
    "origin": "ORD",
    "destination": "DEN",
    "max_results": 2,
    "return_date": "2026-11-17",
    "departure_date": "2026-11-10"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@expedia","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Compare hotel prices and guest ratings across destinations.
- Find refundable hotel stays for specific dates.
- Compare flight prices, travel times, and stops.
- Review airlines and airports for flight options.

## FAQ

### Is Fous affiliated with Expedia?

No. Fous is not affiliated with Expedia. This workflow reads the public expedia.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a Expedia account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from expedia.com when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### What hotels are available for my dates?

Search hotels finds stays for a destination and date range, with prices, reviews, property details, and refund status.

### Which flights connect my origin and destination?

Search flights finds options for an origin, destination, and departure date, with fares, schedules, airlines, and stops.

## Related

- [Trip.com API](https://fous.com/workflows/trip-com.md): Trip.com offers hotel and flight bookings, with hotel listings limited to initial public results and prices and fares subject to change.
- [Kayak API](https://fous.com/workflows/kayak.md): Kayak compares flight and hotel prices across booking sites and current rental car offers; hotel rates assume two adults per room and cover public location pages, while prices and availability can change at booking.
- [Agoda API](https://fous.com/workflows/agoda.md): Agoda finds stays and room prices for selected dates; displayed prices exclude taxes and fees, and availability, prices, and cancellation terms may change before booking.
- [Google Hotels API](https://fous.com/workflows/google-hotels.md): Google Hotels finds stays, guest details and reviews, and compares booking-site totals, cancellation and links for up to six adults; prices and availability can change, and some prices or topic ratings may be unavailable.
- [Priceline API](https://fous.com/workflows/priceline.md): Priceline finds travel deals and returns publicly priced hotel options with ratings, USD prices and cancellation details, plus rental-car offers whose prices may change at checkout.
- [Booking.com API](https://fous.com/workflows/booking-com.md): Booking.com helps find stays, property details and public guest reviews; prices and cancellation terms depend on selected dates, and displayed prices may exclude taxes and fees.
- [Tripadvisor API](https://fous.com/workflows/tripadvisor.md): Tripadvisor provides traveler-ranked first-page city listings of attractions, restaurants and hotels, plus latest reviews; hotel prices and booking sites depend on supplied stay dates and availability.
- [Google Flights API](https://fous.com/workflows/google-flights.md): Google Flights returns route schedules, public fares, monthly lowest prices, and flight or destination options with times, stops, emissions, and fares that may change.
- [All Travel workflows](https://fous.com/workflows/category/travel)
