Shopping
The Shopping API provides you with access to live rates and availability for 700,000 global accommodations.
Overview
The Shopping API returns rates and availability on all room types for specified properties (maximum of 250 properties per request). The response includes rate details such as promos, whether the rate is refundable, cancellation penalties, and a full price breakdown to meet the price display requirements for your market.
Multiple rooms of the same type may be requested by including multiple instances of the occupancy
parameter. If the same occupancy is requested multiple times in the same request, the response will only contain a single set of rates for that occupancy. No more than 8 rooms may be requested at a time. If you need to book more than 8 rooms at once, please consult with your account manager about our group booking partnership.
Loyalty points
Loyalty points are available with Rapid, partners will be able to identify and showcase loyalty eligibility prior to the capture of the membership details using the value_adds
field in the Shop response.
Note: Loyalty points are only available on corporate negotiated rates.
Example:
Hotel rates eligible for loyalty points will have the following parameter in the search response under the amenities
node:
{
"id": "2096",
"name": "Eligible for hotel loyalty points"
}
Travel purpose
The travel_purpose
parameter allows you to designate your travel as business or leisure. Starting February 1, 2024 partners who are eligible to shop for business rates will need to use travel_purpose=business
in the Shop request to receive business rates in the Shop response. If no travel_purpose
parameter is given in the request then leisure will be assumed and no business rates will be returned.
Example
Specifying that the traveler is intending to travel for business purposes is as easy as adding 24 characters to the Availability API request.
&travel_purpose=business
Strikethrough pricing
- The
strikethrough
field provides the tax exclusive total price before any hotel-funded discounts are applied. This field should be used in locales, such as the United States, that typically show the base price without taxes and fees on search results. - The
inclusive_strikethrough
field presents the total price, before discounts, with taxes and fees included. This field is designed to allow you to more clearly display the discount that applies in locales that present all inclusive pricing, i.e. base, taxes, and fees. The field returns a value in both the billable and requested currencies.
Example
[
{
"property_id": "19248",
"rooms": [
{
"id": "123abc",
"room_name": "Fancy Queen Room",
"rates": [
{
"id": "333abc",
...
"occupancy_pricing": {
"2": {
"nightly": [ ... ],
"stay": [ ... ],
"totals": {
"inclusive": { ... },
"exclusive": { ... },
"inclusive_strikethrough": {
"billable_currency": {
"value": "726.63",
"currency": "CAD"
},
"request_currency": {
"value": "549.60",
"currency": "USD"
}
},
"strikethrough": {
"billable_currency": {
"value": "650.00",
"currency": "CAD"
},
"request_currency": {
"value": "491.64",
"currency": "USD"
}
},
"marketing_fee": { ... },
"gross_profit": { ... },
"minimum_selling_price": { ... },
"property_fees": { ... }
},
"fees": { ... }
}
}
}
]
}
]
}
]
Promotion and discount price display
When displaying a discount saving amount based off a promotion or strikethrough provided in the Availability and Price Check APIs, certain points of sale require details to be provided about the Standard Rate Price (i.e. the price the discount is calculated from). Please refer to the statements below on what terminology to use.
EU: Provide clear details about the standard rate price, e.g. "This price is the standard rate provided by the property based on your search."
Italy: Use the following wording: "Questo prezzo è basato sulla tariffa generalmente applicabile fornita dalla struttura per questa camera e per queste date".
Unavailable reason
The unavailable_reason
feature allows you to request actionable information on why a property is fully unavailable for a set stay (stay dates and occupancies). The optional request parameter include=unavailable_reason
must be included when shopping to receive this information in the response. However, not every unavailable property will have an actionable reason for not being bookable. Those properties will not be returned in the response.
The Shop response can include a mixture of available and unavailable properties. The unavailable properties will include a property_id
, score
, and an unavailable_reason
section that includes a code
with a short explanation for the property being unavailable (given in English) and data
for additional information that could be adjusted in the request to make the property/rooms/rate plans available. For example, if an unavailable_reason
code
was adults_exceed_threshold
the 2 in data
would mean 2 adults is the maximum number allowed for that room/rate and any occupancy greater than 2 would return an error.
Note: Multiple restrictions can apply for a property but only one unavailable_reason
will be returned.
Example
[
{
"property_id": "824739",
"score": 12345,
"unavailable_reason": {
"code": "adults_exceed_threshold",
"data": "2"
}
}
]
See here for full list of codes returned.
Amenity filters
Optionally, you can filter properties returned in the Rapid Shop response using the amenity_category
request parameter along with one or more specific amenities.
See the amenity categories section of the Content reference lists here for a list of amenities that can be used to filter the response.
Examples
Single amenity filter:
&amenity_category=free_breakfast
Multiple amenity filter:
&amenity_category=free_breakfast&amenity_category=free_airport_transfer&amenity_category=casino
Rate limiting
Traffic optimization is achieved by applying rate limits to partners. These rate limits ensure the continued delivery of a stable and maintainable service to partners while also guaranteeing the efficient use of Expedia Group systems. For Shop traffic, the significant factors for determining load are the number of properties, the number of rooms, and length of stays being searched in each request.
For more information on rate limiting, see here.
Price Check
Confirms the price returned by the Shop response. Use this API to verify a previously-selected rate is still valid before booking. If the price is matched, the response returns a link to request a booking. If the price has changed, the response returns new price details and a booking link for the new price. If the rate is no longer available, the response will return a new Shop request link to search again for different rates.
Payment Options
Returns the accepted payment options. Use this API to power your check-out page and display valid forms of payment, ensuring a smooth booking. Rates offered as property collect will return card types accepted by the property. All other rate types will return Expedia's accepted payment options.
Important notes
language
only uses hyphenated pairs of two-digit language and country codes. Review our supported languages before integrating any codes.- The two-digit
country
codes set the traveler's point of sale, they do not affect localized content. - No static data (names, star ratings, geography information, etc.) is returned. Only availability and rate-related data is provided.
- Tokenized request links will expire after a short period. If a token link returns an HTTP 503 error, the link has likely expired. Obtain a new price check or deposit link from a fresh Shop response and attempt again. Do not store link values for long term re-use.
- Rapid API allows properties to update their content at any time. We require your best effort to provide the most up-to-date information to customers. The Shop API provides the most current information for available rooms and rates. To obtain additional property-level, room-level, and rate-level information not returned in this response, use our Property Content API.
- APIs provide prices based on one room only, multiple room bookings require an additional calculation by yourself. As a part of launch requirements, your integration should display the detailed price breakdown to end users at certain steps in the booking journey. The breakdown can be found behind this secured documentation link.
To perform test requests against this service, see our test request documentation.
API details
Explore the shopping-related endpoint definitions on this page, then use the API Explorer or another testing software to get an understanding of how the examples and schema definitions compare to the actual output.
Additional resources
Whether you're looking to try out all the Rapid API endpoints or to download its OpenAPI specs or our Postman collection, we have you covered.