Expedia Hotel Rates API
Get real-time room rates and availability for an Expedia hotel.
Copy for your AI agent
Paste into Claude, ChatGPT, Cursor or Copilot — endpoint, parameters, response fields and a curl example in Markdown.
MCP tool
Use expedia_hotel_rates with the same property ID and stay dates. MCP children_ages is a JSON integer array (for example [5, 8]), not the REST comma-separated string. Omit it or use [] for adults-only rates. Expedia discovery and reviews remain REST-only.
Overview
Real-time Pricing
Returns live room rates, rate plans, nightly and total prices, strikeout prices, and availability status. A sold_out: false response includes at least one available priced offer. Explicit sold-out stays are successful results; malformed availability returns a non-2xx error.
The Expedia Hotel Rates endpoint returns room types with rate plans for a given property and date range. Each room includes features, and each rate plan includes nightly rate, total price, strikeout price, payment model, and availability.
Endpoint URL
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| property_id | string | Required | Expedia property ID (numeric string, e.g., "10507369") |
| check_in | string | Required | Check-in date in YYYY-MM-DD format |
| check_out | string | Required | Check-out date in YYYY-MM-DD format (must be after check-in) |
| adults | integer | Optional | Number of adults, 1-10 (default: 2) |
| children_ages | string | Optional |
Comma-separated ages for up to 6 children, each from 0 to 17 (for example, 5,8). Spaces around ages are accepted. Omit or leave blank for adults only.
|
| currency | string | Optional | Currency code, e.g., USD, EUR, GBP, THB (default: USD). Accepted but currency conversion is not yet confirmed for all currencies. |
Errors
Invalid child ages return HTTP 400 Problem Details with error_code set to INVALID_CHILDREN_AGES. This includes negative ages, ages above 17, non-integers, empty comma-separated items, or more than 6 ages.
Response Structure
Top-Level Fields
property_id- Expedia property IDcheck_in- Check-in datecheck_out- Check-out dateadults- Number of adultscurrency- Currency codesold_out- Whether the property is sold outlowest_price- Lowest available price (formatted string)lowest_price_amount- Lowest price as a numberrooms- Array of room types
Room Object
room_id- Room type identifierroom_name- Room type namefeatures- Array of room features (e.g., "Free WiFi", "Breakfast included")rate_plans- Array of rate plans for this room
Rate Plan Object
rate_plan_id- Rate plan identifierdeal- Deal badge text (e.g., "Member Price")payment_model- Payment model (e.g., "PAY_LATER", "PAY_NOW")nightly_rate- Nightly rate (formatted string)nightly_rate_amount- Nightly rate as a numbertotal_price- Total price (formatted string)total_price_amount- Total price as a numberstrikeout_price- Original price before discountstrikeout_price_amount- Original price as a numbertotal_with_taxes_and_fees- Total including taxes and feesavailable- Whether this rate plan is availablerooms_left- Scarcity message (e.g., "Only 3 left")
Finding the Property ID
Finding the Property ID
The property ID can be found in Expedia hotel URLs after the "h" prefix.
The property ID appears in Expedia URLs. For example:
https://www.expedia.com/h10507369.Hotel-Information
The property ID is 10507369 (the number after "h").
Vrbo listings work too: pass the internal property_id from Vrbo search or extract-id (for example 124565672), not the public listing ID in the Vrbo URL. Use the rate plan's total price for the stay; it can include rental fees, so do not compute it as nightly rate times nights.