Airbnb occupancy rate per listing and month from the availability calendar, by place or listing id. One row per listing and month: days available, days blocked or booked, occupancy %, minimum stay, nightly rate. Short term rental data, vacation rental comps, competitors. Free: filtered months.
2026-10-16 — Keyword Planner and locale documentation
Validated search terminology against Google Ads Keyword Planner and Store shelves. Added localized usage guidance and bounded examples; retained existing English phrases. Clarified locale limitations where measured. Corrected current-versus-scheduled price wording and arithmetic. No runtime, output fields, defaults, or pricing changed.
price change, set 2026-10-12, effective 2026-10-27
occupancy $0.002 → $0.003 per row (the only per-row-priced occupancy actor; AirDNA-class data). the actor has paying users, so Apify applies the increase on 2026-10-27 and notified them; until then the old price bills and the listing text below describes the price from that date; nothing else changes — same rows, same free rows, same filters, no start fee, proxy and compute included. Every price mention in the input form, the event text and this README was updated with it.
1.0 — listing and input form reworded, 2026-10-11
No behaviour, output or price changed; the same inputs return the same rows.
Title: "Occupancy Rate" kept (it ranks first for that phrase); the tail now carries the nouns investors and agents type — "Nightly Rate, ADR & Market Data" — instead of "Calendar Availability", which the description keeps.
Description says what one row is (days available, days blocked or booked, occupancy %, minimum stay, nightly rate), the three ways in, and that filtered months are free.
The input form is reordered: what to measure, then months, maxListingsPerQuery, includeRates, adults, minOccupancyPct, includeListingRow, then currency and language, then proxy and pacing. Nothing was renamed or removed.
Every input now says what to pass, with an example, its default, what it changes and what it costs.months and maxListingsPerQuery state the bill as listings × months; includeRates says it is on by default, what it samples and that it adds requests but no charge; minOccupancyPct says the filter runs before billing and before the rate sample; adults says what a listing too small for the party answers.
The pricing text gives worked sizes (12 months of one listing, a 100-listing market for 6 months), lists what is never charged, that there is no start fee, and that a run stops at the maximum cost you set.
README: a section mapping common requests to the exact input and the status contract. seoDescription carries nightly rate, ADR, comps, the AirDNA alternative and the Spanish, German and Portuguese words for occupancy.
2026-08-30
Reliability: a run that cannot act on its input — a URL from the wrong site, a name nothing resolves to, an empty target list, a number outside the documented range — now ends cleanly with the reason on the run card instead of as a failed run. Nothing is charged in either case; a blocked or throttled source still fails loudly.
Store listing: moved into the categories buyers actually browse (the old Business category has no Store page).
1.0 — 2026-08-29
First release.
One occupancy row per listing and calendar month from the public availability calendar: days counted (today onward), days available, days blocked or booked, occupancy_pct, check-in days, the typical minimum stay and the next free day.
A sampled nightly rate per month (includeRates, on by default): the first bookable stay of the month — check-in on the first available day, the listing's minimum nights, capped at 7 — priced for adults guests, so each row carries rate_nightly, rate_total and the sampled dates. An ADR proxy, one extra request per listing and month.
Address listings by place search (locationQueries), pasted Airbnb search or listing URLs (startUrls) or ids (listingIds); the unknown-place guard from the Airbnb Scraper is kept, so a misspelt place costs nothing.
minOccupancyPct filter: only months at or above the line are delivered, and the filter runs before billing.
Optional free listing rows (includeListingRow) with name, type, location, rating and reviews.
Billing: pay per delivered occupancy row. Filtered months, listing rows, status rows, unknown places and failed calendars are free, and nothing a spending limit refused is ever delivered.
Honest by design: the calendar does not say whether a night is booked or host-blocked, so every occupancy figure is a proxy and the README says so; a failed rate sample is a null rate with rate_status, never a fabricated number.