Peak-hour heatmap
How Club Insights reads demand by hour of day and weekday, with a comparable overlay.
Definition
Each cell of the heatmap is the demand rate (booked / (free + booked)) for that hour-of-day and weekday across the date window, court-hour-weighted like the headline utilization. Darker cells are busier; cells with no observed slots are muted. A muted cell can still show a rate: its minutes then come from slots that overlap into it from neighboring hours.
Comparable cohort
The group behind every Club Insights comparison is active clubs in the same country with a similar court count and a similar indoor share, without the club itself and without further booking routes of the same club. Each club contributes one value per metric; median and interquartile range are computed across those clubs. A group under 3 clubs with measured data is shown as too small. The search for that group runs in stages and stops at the first stage carrying at least 3 clubs with measured data: within 50 km at a court count of 0.5x to 1.5x and an indoor share within 0.25; then within 50 km at 0.25x to 3x and 0.5; then within 150 km on those same loosened criteria; then within 300 km at 0.1x to 4x and 1; finally the whole market at 0.1x to 10x, capped at the 30 most similar clubs. Every stage stays inside the club's own country. Which stage carries the comparison is stated in the report: the first one without a label, the others marked Widened, Region or Market. The number beside a comparison value counts the clubs that measured that metric, not every club the criteria admit: with 9 clubs admitted and 6 measured it reads 6. When a stage falls below 3 clubs with measured data only because clubs with interrupted observation drop out, the search stops there; we do not widen the radius to compensate.
Coverage indicator
Heatmap coverage is banded from the total slot samples across all cells. A sparse heatmap is shown as low coverage. The bands are the utilization ones: low under 200 slot samples, medium from 200, high from 2,000.
How current the observations are
A rate is only as good as the observations behind it. For every club we therefore measure what share of its court-hours in the window rests on an observation from the last 24 hours. From 90 % up we publish the figures without a note. Below that and down to 50 % we publish them with a note naming the share of times without a current observation; that share is also the width of the uncertainty on the rate. Under 50 % we publish no demand, occupancy or revenue figures and no rank for that club. So that a single missed run cannot switch a club off, the last step applies only once no usable observation has arrived for more than 24 hours either. Realized prices rest directly on observed bookings and stay visible. In figures spanning several clubs an affected club does not count towards the rate; how many do is stated at the number.
Caveats
Per-cell rates can be thin even when the club overall has good coverage. The window stated in the text is therefore only named when the heatmap as a whole reaches medium or high coverage, the busiest cell itself carries enough observations, the window is narrow enough to be a peak at all and no second, equally busy time sits beside it. Otherwise no window is stated.
This page describes the calculation as currently implemented in the product.
This page as of 23 Aug 2026. Changes to published figures