GET

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

GET https://api.stayapi.com/v1/expedia/hotel/rates

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 ID
  • check_in - Check-in date
  • check_out - Check-out date
  • adults - Number of adults
  • currency - Currency code
  • sold_out - Whether the property is sold out
  • lowest_price - Lowest available price (formatted string)
  • lowest_price_amount - Lowest price as a number
  • rooms - Array of room types

Room Object

  • room_id - Room type identifier
  • room_name - Room type name
  • features - 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 identifier
  • deal - 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 number
  • total_price - Total price (formatted string)
  • total_price_amount - Total price as a number
  • strikeout_price - Original price before discount
  • strikeout_price_amount - Original price as a number
  • total_with_taxes_and_fees - Total including taxes and fees
  • available - Whether this rate plan is available
  • rooms_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.

Request
curl -X GET "https://api.stayapi.com/v1/expedia/hotel/rates?property_id=10507369&check_in=2027-05-01&check_out=2027-05-03&adults=2&children_ages=5%2C8" \
  -H "x-api-key: YOUR_API_KEY"
Response
{
  "property_id": "10507369",
  "check_in": "2027-05-01",
  "check_out": "2027-05-03",
  "adults": 2,
  "currency": "USD",
  "sold_out": false,
  "lowest_price": "$189",
  "lowest_price_amount": 189.0,
  "rooms": [
    {
      "room_id": "314898187",
      "room_name": "Aloft King Room",
      "features": [
        "1 King Bed",
        "Free WiFi",
        "City view"
      ],
      "rate_plans": [
        {
          "rate_plan_id": "381851541",
          "deal": "Member Price",
          "payment_model": "PAY_LATER",
          "nightly_rate": "$189 per night",
          "nightly_rate_amount": 189.0,
          "total_price": "$378",
          "total_price_amount": 378.0,
          "strikeout_price": "$420",
          "strikeout_price_amount": 420.0,
          "total_with_taxes_and_fees": 438.48,
          "available": true,
          "rooms_left": "Only 3 left"
        }
      ]
    }
  ]
}
Browse documentation