The recommendations endpoints return Wheelhouse's suggested nightly prices, base price options, seasonality factors, min/max price calendars, and base price history. The daily price recommendations endpoint is the core data source for building pricing dashboards, syncing prices to external systems, or driving automated pricing logic.
GET /listings/:listing_id/price_recommendations
Retrieve daily price recommendations for a listing.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/price_recommendations?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
The horizon depends on the listing's plan: Free listings get 30 days; Pro listings get 18 months.
Path parameters
listing_id(string, required) — the channel's unique listing identifier
Query parameters
channel(string, required) — the channel name for this listing (fromGET /listings)currency(string, optional) — ISO-4217 code to convert prices to (e.g.EUR); uses the listing's currency by defaultattribution(boolean, optional, default:false) — whentrue, includesattr_*fields in each day's object showing what factors drove the priceprice_model(string, optional) — price model version to use:currentoropt_in; defaults to whatever is currently active for the listing
Response
{
"data": [
{
"stay_date": "2026-08-01",
"price": 189,
"currency": "USD",
"min_stay": 2,
"custom_type": ""
},
{
"stay_date": "2026-08-02",
"price": 215,
"currency": "USD",
"custom_type": "fixed"
}
],
"base_price": 175,
"base_price_recommended": 175,
"base_price_conservative": 158,
"base_price_aggressive": 193,
"global_min_stay": 2,
"automatic_rate_posting_enabled": true
}
Response fields
Per-day fields (data array)
stay_date— the date the price applies to (YYYY-MM-DD)price— Wheelhouse's recommended nightly rate for that datecurrency— currency of the pricemin_stay— minimum stay requirement for that date (omitted unless min stay rules are configured)custom_type—""(empty string) when no custom rate override is active;"fixed"when a fixed custom price overrides the recommendation;"adjusted"when a percentage adjustment override is active
Top-level fields
base_price— the currently active base price for this listing (may differ from recommendation if set manually)base_price_recommended— Wheelhouse's data-driven recommended base pricebase_price_conservative— conservative base price estimatebase_price_aggressive— aggressive base price estimateglobal_min_stay— default minimum stay applied when no higher-priority rule matchesautomatic_rate_posting_enabled— whether Wheelhouse is auto-pushing prices to the channel
Status codes
422— listing is not covered by a Wheelhouse market423— price recommendations are still being generated; retry after a brief delay
Attribution breakdown
When attribution=true, each day in the data array includes attr_* fields showing the dollar-amount contribution of each pricing factor:
{
"stay_date": "2026-08-01",
"price": 189,
"currency": "USD",
"custom_type": "",
"attr_seasonality": 12,
"attr_local_demand": 8,
"attr_availability": 3,
"attr_time": 0,
"attr_custom_weekend": 5,
"attr_scarcity": 0,
"attr_occupancy_pacing": 2,
"attr_historical_anchoring": -4,
"attr_restriction": 0,
"attr_user_adjustment": 0
}
All values are integers in the listing's currency representing the price contribution of each factor.
attr_seasonality— seasonal demand adjustmentattr_local_demand— local event/demand signalattr_availability— gap night pricingattr_time— time-based adjustment (e.g. last-minute discount)attr_custom_weekend— day-of-week adjustmentattr_scarcity— scarcity pricingattr_occupancy_pacing— pacing vs expected occupancyattr_historical_anchoring— adjustment from booking history anchoringattr_restriction— min/max price restriction impactattr_user_adjustment— user customization (e.g. base price offset)
GET /listings/:listing_id/base_price_recommendation
Get recommended, conservative, and aggressive base price options for a listing, plus anchoring context and an attribution breakdown.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/base_price_recommendation?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Query parameters
channel(string, required)currency(string, optional) — convert prices to this ISO-4217 currency
Response fields
base_price_recommended— Wheelhouse's data-driven recommended base pricebase_price_conservative— conservative variantbase_price_aggressive— aggressive variantbase_price_selected— the base price currently in effect for the listing (same asbase_priceinGET /preferences/{listing_id})anchor_credibility— how much of the recommendation is driven by the listing's own booking history (0–100%); higher = more historical data incorporatedanchor_price— median observed booking price used in anchoring (nullable)base_price_attribution— signed breakdown amounts showing what contributes to the recommended base price, matching the in-app "Recommended Breakdown"currency— currency all amounts are expressed in
GET /listings/:listing_id/checkin_checkout
Get a daily calendar of check-in and check-out availability for a listing.
bash
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/checkin_checkout?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Returns 204 if check-in/check-out rules are not configured for this listing.
Response fields (per day in data array)
stay_date— the date (YYYY-MM-DD)check_in—trueif check-in is allowed on this datecheck_out—trueif check-out is allowed on this date
GET /listings/:listing_id/min_max_prices
Get the min and max price floor/ceiling calendar for a listing.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/min_max_prices?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Response fields (per day in data array)
stay_date— the date (YYYY-MM-DD)min_price— the minimum price floor for this date (nullable)max_price— the maximum price ceiling for this date (nullable)
GET /listings/:listing_id/monthly_seasonality
Get recommended monthly seasonality multipliers for a listing — useful for understanding seasonal pricing patterns.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/monthly_seasonality?channel=airbnb" \
-H "X-Integration-Api-Key: your_api_key_here"
Response
Returns an object with three keys (CON, REC, AGG), each mapping month numbers "1"–"12" to a multiplier:
{
"CON": { "1": 0.88, "2": 0.91, "6": 1.12, "12": 1.18 },
"REC": { "1": 0.85, "2": 0.88, "6": 1.15, "12": 1.22 },
"AGG": { "1": 0.82, "2": 0.86, "6": 1.18, "12": 1.26 }
}
A factor of 1.0 means no seasonal adjustment. Values above 1.0 indicate higher-demand months; below 1.0 indicate lower-demand months.
The three levels differ in how much they amplify the signal: CON = 80% of base variation, REC = 100%, AGG = 120%.
GET /listings/:listing_id/base_price_history
Get the daily log of Wheelhouse base price recommendations and effective base prices for a listing. Defaults to the last 30 days.
curl "https://api.usewheelhouse.com/ss_api/v1/listings/12345678/base_price_history?channel=airbnb&start_date=2026-06-01&end_date=2026-06-30" \
-H "X-Integration-Api-Key: your_api_key_here"
Query parameters
channel(string, required)start_date(string, optional) — first date to include (YYYY-MM-DD); defaults to 30 days beforeend_dateend_date(string, optional) — last date to include (YYYY-MM-DD); defaults to today
Response fields (per entry in the array)
model_date— the date this recommendation was computedraw_recommendation— the raw model recommendation before anchoring adjustmentsrecommendation— the anchored base price recommendationadjustment— multiplicative adjustment factor applied by the user (e.g.1.1= +10%)fixed— the user-set fixed base price, if any; when present, overrides the recommendationanchor_price— the anchor price used to blend the model recommendationanchor_weight— the weight given to the anchor price (0–1)effective_base_price— the base price actually in effect; equalsfixedwhen set, otherwiserecommendation × adjustment
Code examples
Python — sync recommendations for all active listings
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.usewheelhouse.com/ss_api/v1"
headers = {"X-Integration-Api-Key": API_KEY}
listings = requests.get(f"{BASE_URL}/listings", headers=headers, params={"exclude_inactive": "true"}).json()
for listing in listings:
recs = requests.get(
f"{BASE_URL}/listings/{listing['id']}/price_recommendations",
headers=headers,
params={"channel": listing["channel"]}
).json()
for day in recs["data"]:
print(f"{listing['title']}: {day['stay_date']} → ${day['price']}")
Related
How to sync price recommendations to your system
How to preview pricing changes before applying them
Understanding pricing tiers and recommendation horizons