Skip to main content

Rank every listing by one KPI.

GET 

/listings/kpis

Returns a single rolling-window KPI for every listing the authenticated user can access, ranked by value. Use it to answer portfolio-wide questions — the best or worst performers on a metric — in one call instead of one call per listing.

Pick the metric with metric and the window with window, where 0_30 is the next 30 days and 30_0 the trailing 30. Values come from the same store as GET /listings/{listing_id}/kpis, so the two always agree; that endpoint remains the way to read every metric and window for one listing.

Metrics (window 0_N and N_0): adr, adr_fees, asking_rate, asking_rate_fees, asking_rate_highest, asking_rate_lowest, bookings, last_booked_days, lead_time, length_of_stay, min_price_occurrence, nights_available, nights_blocked, nights_bookable, nights_booked, nights_calendar, nights_percent_open, occupancy, occupancy_adjusted, revenue, revenue_available, revenue_blocked, revenue_fees, revenue_fees_taxes, revpar, revpar_adjusted_occupancy, revpar_adjusted_occupancy_fees, revpar_fees.

Forward-only metrics (window 0_N only): occupancy_neighborhood, occupancy_neighborhood_pp, occupancy_neighborhood_ratio, occupancy_neighborhood_adjusted, occupancy_neighborhood_adjusted_pp, occupancy_neighborhood_adjusted_ratio, revenue_score.

Backward-only metrics (window N_0 only): pickup, pickup_bookings.

Asking for a window a metric is not computed for returns a 400.

Monetary metrics — the adr, asking_rate, revenue and revpar families — are stored in the currency of the listing's market, falling back to the listing's own currency when it has no market, and each row reports which in its currency. For a portfolio spanning currencies, pass currency to convert every value before ranking, so that the ordering is meaningful. Without it, rows are ranked on unconverted numbers. currency is ignored for metrics that are not amounts of money.

A listing with no value for the requested window sorts last whichever direction you rank in, with value set to null, so a ranking never opens with blanks. Listings for which no stats have been generated at all are absent. Values are recomputed by the nightly stats pipeline and when a listing's calendar is refreshed; updated_at on each row tells you how current it is.

Comp-set metrics (comp_set_occupancy and friends) are not available here yet.

Request

Responses

One row per listing, ranked by the requested metric.