Skip to main content

Price Recommendations: Daily Prices, Base Price & Seasonality

Written by Ryo

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 (from GET /listings)

  • currency (string, optional) — ISO-4217 code to convert prices to (e.g. EUR); uses the listing's currency by default

  • attribution (boolean, optional, default: false) — when true, includes attr_* fields in each day's object showing what factors drove the price

  • price_model (string, optional) — price model version to use: current or opt_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 date

  • currency — currency of the price

  • min_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 price

  • base_price_conservative — conservative base price estimate

  • base_price_aggressive — aggressive base price estimate

  • global_min_stay — default minimum stay applied when no higher-priority rule matches

  • automatic_rate_posting_enabled — whether Wheelhouse is auto-pushing prices to the channel

Status codes

  • 422 — listing is not covered by a Wheelhouse market

  • 423 — 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 adjustment

  • attr_local_demand — local event/demand signal

  • attr_availability — gap night pricing

  • attr_time — time-based adjustment (e.g. last-minute discount)

  • attr_custom_weekend — day-of-week adjustment

  • attr_scarcity — scarcity pricing

  • attr_occupancy_pacing — pacing vs expected occupancy

  • attr_historical_anchoring — adjustment from booking history anchoring

  • attr_restriction — min/max price restriction impact

  • attr_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 price

  • base_price_conservative — conservative variant

  • base_price_aggressive — aggressive variant

  • base_price_selected — the base price currently in effect for the listing (same as base_price in GET /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 incorporated

  • anchor_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_intrue if check-in is allowed on this date

  • check_outtrue if 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 before end_date

  • end_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 computed

  • raw_recommendation — the raw model recommendation before anchoring adjustments

  • recommendation — the anchored base price recommendation

  • adjustment — 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 recommendation

  • anchor_price — the anchor price used to blend the model recommendation

  • anchor_weight — the weight given to the anchor price (0–1)

  • effective_base_price — the base price actually in effect; equals fixed when set, otherwise recommendation × 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

Did this answer your question?