Airbnb Availability Calendar Scraper
Pricing
from $2.50 / 1,000 standards
Airbnb Availability Calendar Scraper
Scrape Airbnb listing availability calendars: day-by-day booking status, minimum/maximum nights, and optional live pricing with local-currency support and rolling date ranges.
Pricing
from $2.50 / 1,000 standards
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Airbnb Availability Calendar Scraper
Scrape the Airbnb availability calendar for any listing: day-by-day booking status, minimum/maximum nights, and check-in/check-out eligibility, with optional live nightly pricing.
| Point it at any Airbnb listing URL and get a full day-by-day calendar back — plus, unlike other Airbnb calendar scrapers, rolling date ranges (today + N days) and pricing in your own local currency. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Actor: parsebird/airbnb-availability-calendar-scraper on Apify. Call it with the apify-client SDK: `client.actor("parsebird/airbnb-availability-calendar-scraper").call(run_input={"listingUrl": "https://www.airbnb.com/rooms/860663943931949474", "startDate": "+7", "endDate": "+37", "enrichWithPricing": True, "currency": "EUR"})`. Inputs: listingUrl (string, required, Airbnb listing URL or numeric ID), startDate/endDate (string, YYYY-MM-DD or rolling offset like "+7" for today+7 days, default today / today+3 months), enrichWithPricing (boolean, default false), currency (string, ISO 4217 code, default USD), proxyConfiguration (object, default Apify Proxy on). Output dataset fields: listingId, date, available, availableForCheckin, availableForCheckout, bookable, minNights, maxNights, month, year, scrapedAt, plus nightlyRate, nightlyRateFormatted, totalPrice, priceFormatted, taxes, taxesFormatted, maxGuests, canInstantBook, cancellationPolicy when enrichWithPricing is true. Full API spec: https://apify.com/parsebird/airbnb-availability-calendar-scraper/api. Get an API token at https://console.apify.com/account/integrations.
What does Airbnb Availability Calendar Scraper do?
Airbnb Availability Calendar Scraper extracts the day-by-day booking calendar shown on any Airbnb listing page — the same data a guest sees when they open the date picker — without opening a browser or clicking through months by hand. Paste a listing URL or ID and get every date in your chosen range back as structured data: whether it's available, whether check-in or check-out is allowed on that date, and the host's minimum/maximum night requirements.
Turn on pricing enrichment and the actor also fetches the live nightly rate, total price, taxes, maximum guest capacity, instant-book eligibility, and cancellation policy for every bookable date — priced in the currency of your choice, not just USD or GBP.
- 📅 Full day-by-day availability calendar for any public Airbnb listing
- 💶 Live pricing in any ISO currency (EUR, GBP, JPY, and more) — a local-currency option most Airbnb calendar scrapers don't offer
- ⏩ Rolling date ranges like "today + 7 days" alongside exact YYYY-MM-DD dates, so scheduled runs always look the right number of days ahead
- 🔁 Runs on a schedule to track availability and pricing changes over time
- 🔌 Full API, Python and JavaScript SDKs, and integrations with Zapier, Make, and Google Sheets
- 📤 Export results as JSON, CSV, Excel, HTML, or XML directly from the Apify Console
What data can you extract from an Airbnb calendar?
| Field | Description |
|---|---|
listingId | Airbnb listing ID |
date | Calendar date (YYYY-MM-DD) |
available | Whether the date is available for booking |
availableForCheckin | Whether check-in is allowed on this date |
availableForCheckout | Whether check-out is allowed on this date |
bookable | Whether the date can be booked |
minNights | Minimum nights required for a stay starting on this date |
maxNights | Maximum nights allowed |
month / year | Calendar month and year |
scrapedAt | ISO timestamp of when the date was scraped |
With enrichWithPricing enabled, every bookable date also includes:
| Field | Description |
|---|---|
nightlyRate / nightlyRateFormatted | Base nightly price, numeric and currency-formatted |
totalPrice / priceFormatted | Total price for the stay, numeric and currency-formatted |
taxes / taxesFormatted | Tax amount, when Airbnb breaks it out separately |
maxGuests | Maximum guest capacity for the listing |
canInstantBook | Whether Instant Book is available |
cancellationPolicy | The host's cancellation policy for that stay |
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| listingUrl | string | Yes | — | Airbnb listing URL (e.g. https://www.airbnb.com/rooms/860663943931949474) or the numeric listing ID |
| startDate | string | No | today | YYYY-MM-DD, or a rolling offset like +7 (today + 7 days) |
| endDate | string | No | start + 3 months | YYYY-MM-DD, or a rolling offset like +90 (today + 90 days). Airbnb exposes at most 12 months of calendar from today |
| enrichWithPricing | boolean | No | false | Fetch nightly rate, total price, taxes, and booking details for every bookable date |
| currency | string | No | USD | ISO 4217 currency code to price results in (EUR, GBP, JPY, …) |
| proxyConfiguration | object | No | Apify Proxy on | Use Apify Proxy so requests come from residential-style IPs |
How to scrape an Airbnb availability calendar
- Open Airbnb Availability Calendar Scraper on Apify and click Try for free.
- Paste the Airbnb listing URL (or just its numeric ID) into Airbnb listing URL or ID.
- Set a Start date and End date — exact dates, or rolling offsets such as
+7and+37. - Toggle Enrich with pricing on if you need nightly rates and total prices, and set a Currency if you want prices in something other than USD.
- Click Start and open the Dataset tab when the run finishes to view, filter, or export the results.
Output example
Without pricing (enrichWithPricing: false):
{"listingId": "860663943931949474","date": "2025-12-07","available": true,"availableForCheckin": true,"availableForCheckout": false,"bookable": true,"minNights": 1,"maxNights": 1125,"month": 12,"year": 2025,"scrapedAt": "2025-11-26T17:30:00.000Z"}
With pricing (enrichWithPricing: true):
{"listingId": "860663943931949474","date": "2025-12-07","available": true,"availableForCheckin": true,"availableForCheckout": false,"bookable": true,"minNights": 1,"maxNights": 1125,"nightlyRate": 48.34,"nightlyRateFormatted": "£48.34","totalPrice": 65.03,"priceFormatted": "£65.03","taxes": 7.85,"taxesFormatted": "£7.85","maxGuests": 2,"canInstantBook": false,"cancellationPolicy": "Free cancellation before 6 December","month": 12,"year": 2025,"scrapedAt": "2025-11-26T17:30:00.000Z"}
Download results in JSON, CSV, Excel, HTML, or XML from the Dataset tab, or pull them programmatically via the Apify API.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("parsebird/airbnb-availability-calendar-scraper").call(run_input={"listingUrl": "https://www.airbnb.com/rooms/860663943931949474","startDate": "+7","endDate": "+37","enrichWithPricing": True,"currency": "EUR",})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('parsebird/airbnb-availability-calendar-scraper').call({listingUrl: 'https://www.airbnb.com/rooms/860663943931949474',startDate: '+7',endDate: '+37',enrichWithPricing: true,currency: 'EUR',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
How it works
- Calendar fetch — Fetches Airbnb's own availability calendar for the listing, covering every month from today out to Airbnb's 12-month booking horizon.
- Date filtering — Filters the calendar down to the exact start/end date range you asked for, resolving rolling offsets (
+7,+30, …) against today's date. - Pricing fetch (optional) — When
enrichWithPricingis on, the actor fetches detailed pricing for every date where check-in is allowed. It requests a stay matching the listing's ownminNightsrequirement (e.g. a 2-night quote ifminNightsis 2) and computes the per-night rate from that quote, so pricing always respects the host's minimum-stay rules instead of guessing a 1-night rate that isn't actually bookable.
Rolling dates and local currency
Two things guests and analysts commonly ask Airbnb calendar tools for — and this actor supports both:
- Rolling date ranges: instead of hardcoding
startDate/endDateand having to update them before every run, set them to offsets like+7and+37. Every scheduled run automatically looks the same number of days ahead from today, so a weekly schedule always checks "next week through six weeks out" without any manual date edits. - Local currency pricing: set
currencyto any ISO 4217 code (EUR, GBP, JPY, CAD, …) and pricing enrichment returns nightly rates and totals in that currency instead of being locked to USD or GBP.
How much does it cost to scrape Airbnb?
Airbnb Availability Calendar Scraper uses Apify's pay-per-event pricing — you pay only for the calendar dates returned, not for compute time.
| Mode | Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|---|
| Availability only | availability-scraped | $2.90 / 1,000 | $2.80 / 1,000 | $2.70 / 1,000 | $2.50 / 1,000 |
| With pricing | availability-priced | $8.00 / 1,000 | $7.50 / 1,000 | $7.00 / 1,000 | $6.50 / 1,000 |
A 3-month calendar (≈90 dates) without pricing costs a few cents; the same run with pricing enrichment costs under $1. New Apify accounts include free monthly platform credits, so you can try the availability-only mode at no cost before enabling pricing enrichment.
Is it legal to scrape Airbnb?
Scraping publicly available data — like the availability calendar shown on any public Airbnb listing page — is generally considered legal, but the specifics depend on your jurisdiction and how you use the data. Avoid scraping data behind a login, personal or sensitive information, and always review Airbnb's Terms of Service before large-scale use. See Apify's blog post on the legality of web scraping for more detail. This actor only reads calendar data Airbnb already serves to any visitor of a listing page.
Related Airbnb & travel scrapers
- GetYourGuide Tours & Activities Scraper — prices, ratings, and highlights for tours and activities
- GetYourGuide Review Scraper — guest reviews for any GetYourGuide activity
- Kayak Car Rental Scraper — car rental offers, prices, and cancellation terms from Kayak
FAQ
How far ahead can I scrape availability?
Airbnb only exposes 12 months of calendar data from today for any listing. If endDate (or a rolling offset) goes beyond that, the actor automatically clamps it to the furthest date Airbnb makes available and logs a warning.
What does the rolling date format look like?
Use +N (e.g. +7, +30, +90) in startDate or endDate to mean "today plus N days." You can also use +7d. Leave either field blank to default to today (startDate) or three months after the start date (endDate).
Can I get prices in my own currency instead of USD or GBP?
Yes. Set currency to any ISO 4217 code — EUR, GBP, JPY, CAD, AUD, and more — and every pricing field in the output is returned in that currency.
Why are some dates missing pricing fields even with enrichWithPricing on?
Pricing is only fetched for dates where check-in is allowed (availableForCheckin: true). Blocked dates and checkout-only dates return availability fields alone, since Airbnb has no bookable stay to price on those days.
Why don't all currencies show a taxes value?
Airbnb only breaks out a separate tax line for some listings and currencies. When it doesn't, taxes and taxesFormatted are returned as null rather than a guessed value.
Does this work for any Airbnb listing? Yes — pass any public Airbnb listing URL or numeric ID. Delisted, private, or removed listings return no data along with a clear error message.
Can I automate recurring runs? Yes. Use Apify's Scheduler to run this actor daily, weekly, or on any cron interval — combine it with rolling dates so every run automatically covers the same forward-looking window.
Is there API access? Yes. Every run is available through the Apify API, the Python and JavaScript SDKs shown above, and Apify's MCP server for LLM agents.
Something not working, or have a feature request? Open an issue on the actor's Issues tab — response times are shown on the actor page, and feedback directly shapes what gets built next.
