Short-term rental data: how we measure it
For short-term rental investors comparing towns. Our short-term rental figures come from public listing pages and their booking calendars, read on a fixed schedule. Each number states the listings behind it (n) and the dates we observed them. A closed calendar night counts as booked only when it sits in a run of 2 to 7 closed nights, the length of a typical guest stay; each dataset carries that booked share with an upper bound beside it.
What we observe
For each town we record the listings shown on public search pages, each listing's calendar of open and closed nights, its minimum stay, and a forward price quote. The quote is the listed nightly rate before cleaning fees, service fees, taxes and stay discounts, for the first stay we can book from about 30 days after the start of the observation month, and again from about 90 days. We also keep the stay total that quote shows, after stay discounts and before taxes.
Booked, blocked or unclear
A closed night on a calendar can mean a guest booked it or the host blocked it. We sort each run of consecutive closed nights by its length: 2 to 7 nights matches a guest stay and counts as booked, 30 nights or more counts as blocked by the host, and runs in between are ambiguous. A single closed night between open ones is an unbookable gap, not demand. Shares are measured over the 90 nights from each observation. The upper end of the range, booked plus ambiguous nights, is published beside the booked share, so you see a range instead of one guess; a guest stay of 30 nights or more still counts as blocked.
Samples and thresholds
Town figures are medians and quartiles over the listings we observed, with n stated beside each one. A figure from too few listings is not published; it shows as unknown with the reason. Rates are advertised asks, not the price a guest finally paid.
Freshness
Every row carries the date it was observed. Before 24 September 2026 some recorded prices were stay totals rather than nightly rates. Rows with a true nightly rate, including older rows we could re-derive, say nightly_rate in the price basis field; on every other row the delivered price and stay total are blank, and its calendar availability is still included.