Airbnb Availability Calendar avatar

Airbnb Availability Calendar

Pricing

from $1.75 / 1,000 listing calendars

Go to Apify Store
Airbnb Availability Calendar

Airbnb Availability Calendar

Read the booking calendar of any Airbnb listing: which nights are free, which are booked, the host's minimum stay for each date, the first bookable date and occupancy per month. Up to 12 months ahead, by listing URL or by destination. No browser, no login, no API key.

Pricing

from $1.75 / 1,000 listing calendars

Rating

5.0

(1)

Developer

Matvey

Matvey

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

12 hours ago

Last modified

Share

Airbnb Availability Calendar reads the booking calendar of any Airbnb listing: which nights are free, which are taken, the host's minimum stay for each date, the first bookable date, and occupancy per month — up to twelve months ahead. Paste listing URLs, or give a destination and let the Actor read the calendars of everything Airbnb shows there. It calls the same request the listing page itself makes, so one property is one small JSON request: no browser, no login, and twelve months cost exactly what one month costs.

Tested head-to-head — 24 September 2026

One row per listing with occupancy for every month, and a 12-month calendar for $0.0025 instead of $0.01–$1.11

We ran this Actor and four of the most-used Airbnb availability-calendar Actors on the Apify Store on the same request: the calendar of one Paris listing (a studio in Gennevilliers) for November 2026, on a Free-plan account. All five read the same answer — 2 of 30 November nights free, the 5th and the 15th. The differences are in what you pay and what you get on top.

This ActorThe 4 others
Price of a 12-month calendar for one listing, incl. start fees$0.0025$0.01 – $1.11
Occupancy for each calendar monthYesNo (per-day rows, one total, or 30/90/365-day windows)

What you get

FieldExample
minNights / maxNights3 / 28
occupancyPercent61.4 — share of scanned nights already taken
availableDays / bookedDays71 / 113
firstAvailableDate2026-11-04
availabilityByMonthper month: nights, free, booked, occupancy %
calendarevery date with available, bookable, checkIn, checkOut, minNights
listingId / url / nameidentifier, link, title (the title comes with destination searches; pasted URLs leave it empty)

How much it costs

$0.0025 per listing calendar, whatever the number of months. Reading a year for one property costs a quarter of a cent; a hundred properties cost $0.25. Error rows are never charged. The Actor runs without a browser, so platform usage stays near zero.

Input

Give it listing URLs:

{
"startUrls": [
"https://www.airbnb.com/rooms/12345678",
"https://www.airbnb.com/rooms/87654321"
],
"calendarMonths": 12
}

…or a destination, to measure a market rather than named properties:

{
"locationQueries": ["Seminyak, Bali, Indonesia"],
"maxListings": 50,
"calendarMonths": 6
}

A pasted Airbnb search URL works the same way as a destination.

Output

One row per listing:

{
"type": "listing-calendar",
"listingId": "12345678",
"name": "One Bedroom with Private Pool",
"url": "https://www.airbnb.com/rooms/12345678",
"minNights": 3,
"maxNights": 28,
"monthsScanned": 6,
"daysScanned": 184,
"availableDays": 71,
"bookedDays": 113,
"occupancyPercent": 61.4,
"firstAvailableDate": "2026-11-04",
"availabilityByMonth": [
{ "month": "2026-11", "days": 30, "available": 9, "booked": 21, "occupancyPercent": 70 }
],
"calendar": [
{ "date": "2026-11-04", "available": true, "bookable": true, "checkIn": true, "checkOut": false, "minNights": 3, "maxNights": 28 }
]
}

Switch off Include the day-by-day array for one compact row per listing with monthly occupancy only. Pages that fail after the retries arrive as type: "error" rows carrying the URL and the reason, and are not billed.

What people use it for

  • Occupancy tracking — how full a building, a street or a whole destination is, month by month.
  • Revenue estimates — booked nights over a window are the input every rental-income model needs.
  • Competitive pricing — see which minimum-stay rules the hosts around you actually enforce.
  • Availability alerts — re-run daily and watch firstAvailableDate move.
  • Feeding a channel manager or a spreadsheet — the day-by-day array maps straight onto a booking grid.

Integrations

Results land in a standard Apify dataset: export to JSON, CSV, Excel or XML, or pull them over the API. Connect the run to Make, Zapier, n8n, Google Sheets, Slack or a webhook, or schedule it and compare snapshots day over day.

Use via API

Run this Actor from your own code or pipeline. Get your token in Apify Console → Settings → API & Integrations. Every input field below has the same name as in the JSON tab of the input form.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/airbnb-availability-calendar").call(run_input={
"locationQueries": [
"Seminyak, Bali, Indonesia"
],
"maxListings": 5,
"calendarMonths": 6
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('lergassy/airbnb-availability-calendar').call({
"locationQueries": [
"Seminyak, Bali, Indonesia"
],
"maxListings": 5,
"calendarMonths": 6
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL (runs the Actor and returns the results in one call)

curl -X POST "https://api.apify.com/v2/acts/lergassy~airbnb-availability-calendar/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"locationQueries": ["Seminyak, Bali, Indonesia"], "maxListings": 5, "calendarMonths": 6}'

FAQ

Is scraping Airbnb legal? This Actor reads only what Airbnb serves to any visitor without logging in — public listing information. It collects no personal data about guests or hosts beyond the listing title Airbnb itself publishes. Check your own jurisdiction and Airbnb's terms before large-scale use.

Why does a listing come back with an empty calendar? Airbnb removes the calendar for listings that are unlisted, paused or deleted. Those arrive as an error row rather than as a silently empty result.

Do I need a proxy? Apify Proxy is on by default because Airbnb rate-limits repeat callers by IP. If it starts refusing pages, the run moves itself to residential addresses and carries on.

You might also like

  • Airbnb Scraper — Vacation Rental Prices & Availability — prices, ratings, amenities and hosts for a whole destination.
  • Booking Hotels Scraper — the same market from Booking.com.
  • Agoda Reviews Scraper — guest reviews for hotels across Agoda and Booking.