Features
Explore the capabilities of the Merchandising API
Campaign Content endpoint
You can use the Campaign Content endpoint to search upcoming campaigns using request parameters including:
- Bookable date range
- Stay date range
- At or above values for minimum review score, minimum star rating, and/or minimum discount
You will receive a response with all the campaign details for:
- Limited time offer (LTO) campaigns per super region with a booking window within the next 6 months
- All available evergreen campaigns
- Any LTO campaigns with a booking window beyond 6 months from the API request date. However, the following fields will be excluded in the API response for these campaigns until the booking window falls within the upcoming 6 month window:
- Booking and travel dates
- Min and max discount %
The following campaign information will be available in the Campaign Content response:
- Campaign ID
- Campaign name
- Bookable date range, stay date range, and any blackout dates
- Limited time offer or evergreen distinction
- Values for minimum review score, minimum star rating, and/or minimum discount
- Curated Expedia-provided campaign assets such as campaign thematic images, destination imagery, suggested copy, etc.
Request
Request parameters
Query Parameter | Type | Required? | Description | Example |
---|---|---|---|---|
campaign_id | String | No | Search for campaigns that are a part of the requested campaign ID(s). | 123456, 345678 |
bookable_start | String | No | Search for campaigns with a bookable start date after this parameter. | 45654 |
bookable_end | String | No | Search for campaigns with a bookable end date before this parameter. | 45654 |
stay_start | String | No | Search for campaigns with a stay start date after this parameter. | 45654 |
stay_end | String | No | Search for campaigns with a stay start date before this parameter. | 45654 |
blockout_dates | Boolean | No | Determine if campaigns are returned that allow blockout dates. | True, False |
min_star_rating | String | No | Search for campaigns that are at or above the requested minimum star rating. | 4.5 |
min_review_rating | String | No | Search for campaigns that are at or above the requested minimum review score. | 4.7 |
min_discount | String | No | Search for campaigns that have a discount minimum of the requested value or higher. | 10 |
lifetime | String | No | Search for campaigns that are of the desired duration type. | evergreen , limited_time_offer |
product_line | String | No | Search for campaigns that are a part of the specified product line(s). | hotel , hotel_package , hotel_cross_sell |
chain_id | String | No | Search for campaigns that are in the requested chain(s). | 123456 |
include | String | No | Select which fields to return in the response body. | include=campaign_name , include=theme |
language | String | Yes | Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. | en-US |
billing_terms | String | No | This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. | For profile selection. |
partner_point_of_sale | String | No | This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. | For profile selection. |
payment_terms | String | No | This parameter is to specify what terms should be used when being paid for a booking. If this field is needed, the value for this will be provided to you separately. | For profile selection. |
platform | String | No | This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. | For profile selection. |
Response
The Campaign Content endpoint can help you leverage Expedia-curated assets to create traveler-facing merchandising experiences such as promotional emails, app widgets, website banners, etc.
You can use the property_count
field in the Campaign Content response to determine the most up-to-date number of participating properties. Property participation in merchandising campaigns is dynamic, so we recommend you assess the property_count
approximately 4-6 weeks before a campaign starts to get a more accurate sense of how many properties will be providing deals as part of the campaign.
Promotions endpoint
You can use the Promotions endpoint to easily filter and search for deals using request parameters such as:
- Campaign ID and/or Property ID
- Bookable date range
- Stay date range
- At or above values for minimum review score, minimum star rating, and/or minimum discount
- Limited time vs evergreen distinction
- Member-only and mobile-only deal flags
- Super region or specific destinations
- Machine learning relevancy score sort order
The below details will be returned in the Promotions API response:
- Deal ID, corresponding campaign ID, and property ID
- Bookable date range, stay date range, blackout dates, and advance purchase window
- Limited time vs. evergreen distinction
- Machine learning-powered relevancy scores unique to your business for the deals, properties, and destinations returned in the response
- Specific destinations and chain ID information
- Tokenized link to the existing Rapid Property Content API to pull property-level imagery to feature in your merchandising experiences
Request
Request parameters
Query Parameter | Type | Required? | Description | Examples |
---|---|---|---|---|
promotion_id | String(s) | No | Search for the requested promotion ID(s). | 123456, 345678 |
campaign_id | String(s) | No | Search for promotions that are a part of the requested campaign ID(s). | 123456, 345678 |
property_id | String(s) | No | Search for promotions for the requested property ID(s). | 123456, 345678 |
lifetime | String | No | Search for promotions with the specified promotion duration (LTO or evergreen). | evergreen , limited_time_offer |
promotion_criteria | String(s) | No | Search for promotions based on the criteria passed. flat and value_add are currently not supported but would be future search criteria. | percentage,20 , flat,200 , value_add,true |
min_star_rating | String | No | Search for promotions that are at or above the requested minimum star rating. | 4.5 |
min_review_rating | String | No | Search for promotions that are at or above the requested minimum review score. | 4.7 |
min_stay | String | No | Search for promotions that have a minimum stay length of the passed value or higher. | 3 |
min_advance_purchase_days | String | No | Search for promotions that have a minimum number of days advanced purchase for a property booking. | 5 |
bookable_start | String | No | Search for promotions that are bookable within the passed start date parameter, inclusively. | 45777 |
bookable_end | String | No | Search for promotions that are bookable within the passed parameter end date, inclusively. | 45792 |
stay_start | String | No | Search for promotions that have stay dates starting inclusively with this field. | 45780 |
stay_end | String | No | Search for promotions that have stay dates ending inclusively with this field. | 45783 |
mobile_limited | Boolean | No | Search for promotions that are limited to mobile PoS. | true , false |
product_line | String(s) | No | Search for promotions that are a part of the specified product line(s). | hotel , package , cross_sell |
region_id | String(s) | No | Search for promotions that are in the requested region(s). | 123456 |
chain_id | String(s) | No | Search for promotions that are in the requested chain(s). | 123456 |
market_region | String(s) | No | Search for promotions that are in the requested market region(s). | AMER, APAC, EMEA |
category_id | String(s) | No | The category ID for the property correlating to the category of property. | 44 |
supply_source | String(s) | No | Search for promotions that are for the specific supply source. | expedia , vrbo |
members_only | Boolean | No | Search for promotions that are members-only deals. A value of true returns only promotions that are members-only. A value of false returns promotions that are not members-only. Absence of this value returns all deals regardless of members-only distinction. | TRUE |
include | String(s) | No | Select which fields to return in the response body. | deal_id , campaign_id , discount percentage |
sort_by | String | Yes | Selects the relevancy to sort results by. | promotion , property , destination |
language | String | Yes | Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. Currently only used for generating links to other APIs. | en-US |
billing_terms | String | No | This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. | N/A |
partner_point_of_sale | String | No | This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. | N/A |
payment_terms | String | No | This parameter is to specify what terms should be used when being paid for a booking. If this field is needed, the value for this will be provided to you separately. | N/A |
platform | String | No | This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. | N/A |
Response
You can easily search and filter the Promotions response for more targeted deals, so you have full control over what deals you surface to travelers. You can also curate these deals to build your own campaign themes instead of using Expedia-defined campaigns and associated assets.
You can use the include
request parameter on the Promotions endpoint to customize the size of the response you receive. So instead of receiving all response fields, if you only need a few fields returned, you can add those specific field names in the include
parameter.
You can use the property_count
field in the Campaign Content response to determine the most up-to-date number of participating properties. Property participation in merchandising campaigns is dynamic, so we recommend you assess the property_count
approximately 4-6 weeks before the campaign starts to get a more accurate sense of how many properties will be providing deals as part of the campaign.
Like the Campaign Content guidance, we recommend making your Promotions requests as close to the campaign bookable start date as possible to ensure you have the most up-to-date deals.
If you’re interested in building destination-based merchandising campaigns, you can make a region-specific Promotions API request using the relevant region_id
from the Rapid Geography API.
Machine learning recommendations in the Promotions response
The Machine learning-powered relevancy scores delivered in the Promotions response are unique to each partner, so the score/rankings you receive will differ from what another partner receives. You can use the machine learning recommendations to identify the best deals, properties, and destinations to promote in your merchandising campaigns. Higher-scoring deals, properties, and destinations will have the highest likelihood of driving conversion among your unique traveler base.
Currently, you will receive relevancy scores for the top 10k deals in each campaign. In our testing, we found the value and impact of this score became negligible beyond the first 10k deals.
Based on your use case, you can use the sort_by
parameter to define the sort order of the Promotions response, choosing to order based on deal, property, or destination relevancy as determined by our machine learning model for you to get the maximum value from merchandising in terms of visibility and bookings from the travelers.
- If you pass
sort_by = promotion
you will receive all the deal results ranked high-to-low (1 to 10,000) per our proprietary machine learning algorithm. You can use this sort to get the top recommended deals that our model expects to convert more. - If you pass
sort_by = property
you will receive all the deal results from the properties ranked high-to-low per our proprietary machine learning algorithm. - If you pass
sort_by = destination
you will receive all the deal results from the destinations ranked high-to-low per our proprietary machine learning algorithm.
Changes made to the Shopping Availability API
To get the latest details on availability, live pricing, refundability, commissions info, etc. you should make a standard request to Rapid’s Shopping Availability API We have made the following changes to the Shopping API to support merchandising flows and make your integration of the Merchandising API as smooth as possible:
- Partners can use the new
deal
filter available in the Rapid Shopping Availability endpoint to only receive rates that feature active promotions. This gives partners the flexibility to create a Shopping request with an exclusively merchandising focus and ensure that the all the rates returned have adeal
attribute. - A new request header named
Campaign-Id
is available on Rapid’s Shopping Availability endpoint for you to indicate that the specific Shopping Availability API call you are making is not a regular call and it is in fact due to your merchandising promotional efforts (in other words, this will signify that a Shopping Availability API request was made as the traveler entered the Shop experience due to a campaign promotion). We will accept only one Campaign ID per Shopping API call. This Campaign ID is going to help us track your campaign performance and design better machine learning models and API enhancements for you.
Partners can request details from the Shopping Availability API for up to 250 properties at a time.
Example response
"promotions": {
. "deal": {
. "id": "999abc",
. "description": "Book early and save 15%"
. }
}
Note: The id
and description
available in the Merchandising API response are different to those returned in the Shopping API response. Therefore you are strongly advised to use the id
and description
returned by the Merchandising API.