Skip to main content

How to Pull Aggregated Metrics for a Segment

Pull monthly performance metrics rolled up across every listing that matches a segment, directly through the RM API.

A
Written by Admin

The segment aggregated metrics endpoint returns monthly performance data rolled up across every listing that currently matches a segment's filter. Use it to build dashboards, reports, or alerts on top of any saved segment without pulling listing-level data and aggregating it yourself.


Pull aggregated metrics for a segment

curl "https://api.usewheelhouse.com/ss_api/v1/segments/12345/aggregated_metrics" \
-H "X-Integration-Api-Key: your_api_key_here"

Replace 12345 with your segment_id. If you don't already have it, call GET /segments to list the segments available for your account.


Reading the response

A successful response returns a data array — one entry per month — along with the currency used:

{
"data": [
{
"start_date": "2026-05-01",
"end_date": "2026-05-31",
"occupancy": 0.51,
"occupancy_adjusted": 0.51,
"nights_percent_open": 1,
"revenue": 13305,
"adr": 140,
"asking_rate": 133,
"revpar": 72,
"revpar_adjusted": 72,
"revenue_available": 11433,
"revenue_blocked": 0,
"lead_time": 55,
"length_of_stay": 4.29,
"nights_available": 91,
"nights_blocked": 0,
"nights_booked": 95,
"nights_bookable": 186,
"nights_calendar": 186,
"count_bookings": 27
}
],
"currency": "USD"
}

Key fields:

  • start_date / end_date — the calendar month this row covers

  • occupancy — booked nights ÷ calendar nights for the month

  • occupancy_adjusted — booked nights ÷ open (non-blocked) nights

  • nights_percent_open — the share of calendar nights that were open (not blocked) during the month

  • revenue / adr / revpar — revenue, average daily rate, and revenue per available room-night, aggregated across the segment

  • revpar_adjusted — RevPar calculated over open, bookable nights only

  • asking_rate — average asking rate across the segment for the month

  • revenue_available — revenue potential across open, bookable nights at the asking rate (the denominator behind revpar)

  • revenue_blocked — revenue potential lost to blocked nights

  • lead_time — average booking lead time, in days

  • length_of_stay — average length of stay, in nights

  • nights_available / nights_blocked / nights_booked / nights_bookable / nights_calendar — the night-level counts behind the occupancy figures

  • count_bookings — number of bookings that contributed to the month

  • currency — the currency all monetary fields are expressed in for this response

Note: Fields like adr, lead_time, length_of_stay, and count_bookings can return null for months with no bookings, since there's nothing to average.


Optional parameters

dates — Restrict the response to specific months. Send one or more, each the first of the month:

?dates=2026-05-01&dates=2026-06-01

If omitted, the response includes every month Wheelhouse has data for.

currency — Convert all monetary fields to a specific currency:

?currency=EUR

If omitted, defaults to the currency of the most common market among the segment's listings, falling back to USD.

include_managed_listings — Controls whether the segment's filter is evaluated against listings shared with you to manage, in addition to listings you own:

?include_managed_listings=false

Defaults to true for RM API keys. Channel integration keys default to false, since they act only on the one account they're connected to.


Looping across all your segments

To build a dashboard covering every saved segment, pull your segment list first, then call the aggregated metrics endpoint for each:

Note: This endpoint is subject to your API key's rate limit. If you're looping across many segments, add a short delay between calls — you'll get a 429 response if you exceed the limit.

import requests

headers = {"X-Integration-Api-Key": "your_api_key_here"}
base_url = "https://api.usewheelhouse.com/ss_api/v1"

segments = requests.get(f"{base_url}/segments", headers=headers).json()

for segment in segments:
segment_id = segment["id"]
metrics = requests.get(
f"{base_url}/segments/{segment_id}/aggregated_metrics",
headers=headers
).json()
# process metrics["data"] here

Next steps

How to filter your portfolio with segments


Related Articles:

Did this answer your question?