Calendar booked rate is the percentage of future nights on an Airbnb listing that are already reserved. STRecon measures this directly by reading each listing's public calendar, rather than estimating it from a statistical model.
It's the input to every verdict we publish. If a market has a high calendar booked rate across its listings, the market is performing. If the rate is low, it isn't — regardless of what listing counts, ADR, or pageview data might otherwise suggest.
How STRecon measures calendar booked rate
Every listing on Airbnb exposes a public availability calendar. When you open a listing, the nights marked as unavailable are either booked by guests or blocked by the host. The calendar is Airbnb's own record of the listing's forward demand.
We scrape this calendar for every listing in the markets our users submit. Overnight, we read the next 90 days of each calendar and record the state of every night: available, or not available. We then compute the calendar booked rate over whatever window is relevant — the next 30 nights, the 30–60 day window, or a custom range.
Because we read each calendar individually, the metric is listing-level. We are not inferring it from aggregated data or sampling. For a market with 487 listings, we read 487 calendars.
What we count, and what we exclude
The Airbnb calendar widget strikes through any night that a guest can't book. That is not the same as a night that is occupied. A night can be empty and still appear struck out — for example, a single Tuesday between two stays on a listing with a seven-night minimum, or the morning after a checkout on a listing that doesn't allow same-day arrivals. A manual investor counting strikethrough days on the calendar would include those empty-but-unbookable nights and overstate the listing's occupancy.
STRecon reads the underlying availability data and only counts a night as booked when the property is actually occupied that night. For the great majority of listings, our booked count is the true occupancy count, not the strikethrough count. The gap is widest on listings with high minimum-stay requirements and fragmented calendars — vacation rentals in beach, ski, and lake markets — which is exactly where eyeball estimates from competitors are most misleading.
Calendar booked rate vs. estimated occupancy
Estimated occupancy is what tools like AirDNA produce: a statistical projection of how many nights a listing or market is booked, derived from signals the estimator has access to — review velocity, pricing patterns, platform metadata.
Calendar booked rate is what the calendar actually says on the night of the scrape. It is a direct observation, not a projection.
The two numbers can diverge by 15–25 percentage points on the same listing, and we see divergence in both directions. Estimates can overshoot (the model infers bookings the calendar doesn't show) or undershoot (a listing is outperforming what the model can see). The full methodological comparison lives in AirDNA estimates vs. scraped data.
Why booked nights matter more than ADR
Average daily rate is the number most investors fixate on, because it's the most visible. It is also the less useful of the two inputs to revenue.
Revenue is ADR × booked nights. If ADR is $300 and the listing books 10 nights a month, revenue is $3,000. If ADR is $220 and the listing books 22 nights, revenue is $4,840. The lower-rate listing wins by 60%.
Booked nights are also the more honest signal of demand. You can raise ADR at will. You cannot will a booking into existence. Calendar booked rate tells you what travelers actually chose.
Limitations
Calendar booked rate has real limitations, and honest underwriting accounts for them:
- Blocked is not the same as booked. The calendar shows "unavailable," not "reserved." An owner blocking nights for personal use, maintenance, or arbitrage turnover creates the same signal as a paying guest. At the market level this averages out; at the listing level it can mislead. Note: empty nights stranded by minimum-stay rules are a separate case, and we already exclude those from the booked count (see above).
- Point-in-time snapshot. We read the calendar on the night of the scrape. Cancellations after that moment are not reflected until the next scrape. Last-minute bookings made within hours of check-in are also missed on a nightly cadence.
- Forward-looking only. Calendar booked rate measures what is booked going forward. It does not measure what a listing earned in the trailing 12 months. Historical revenue requires a different dataset.
- Limited-visibility calendars. A small share of listings restrict calendar visibility. We report the count we successfully scraped, not the count that exists.
These limitations are why the 75/55 rule is the sensible way to read calendar booked rate — it uses two windows, not one, and sets thresholds that tolerate normal noise.
Related concepts
- The 75/55 rule — how we translate calendar booked rate into a verdict.
- AirDNA estimates vs. scraped data — the methodological alternative, and why it produces different numbers.
- How STRecon works — our full scraping and verdict methodology.
Run your market at strecon.app. Draw your target area, get the verdict by morning.