Get Availability Calendar
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendarimport requests
url = "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"room_id": "<string>",
"months": [
{
"month": 123,
"year": 123,
"days": [
{
"date": "<string>",
"available": true,
"bookable": true,
"available_for_checkin": true,
"available_for_checkout": true,
"min_nights": 123,
"max_nights": 123,
"price": "<string>"
}
]
}
]
}Endpoints
Get Availability Calendar
Day-by-day Airbnb availability and pricing — up to 12 months of check-in / check-out eligibility, min and max nights, and nightly price.
GET
/
v1
/
airbnb
/
listings
/
{room_id}
/
calendar
Get Availability Calendar
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendarimport requests
url = "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/listings/{room_id}/calendar")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"room_id": "<string>",
"months": [
{
"month": 123,
"year": 123,
"days": [
{
"date": "<string>",
"available": true,
"bookable": true,
"available_for_checkin": true,
"available_for_checkout": true,
"min_nights": 123,
"max_nights": 123,
"price": "<string>"
}
]
}
]
}Fetch a listing’s availability calendar by
room_id. Each day carries whether
it is available, whether it is bookable, whether it can be used as a check-in
or check-out date, the minimum and maximum stay length, and the nightly price.
Request up to twelve months from a starting month / year.
Path Parameters
string
required
Airbnb room id, e.g.
48291736.Query Parameters
integer
default:"1"
Starting month,
1–12.integer
default:"2026"
Starting year.
integer
default:"12"
Number of months to return,
1–12.string
default:"USD"
Currency for prices, e.g.
EUR, GBP.string
default:"en"
Locale for text, e.g.
fr, es.Response
string
Airbnb room id.
Month[]
One entry per requested month, in order.
Show Month
Show Month
integer
Month number,
1–12.integer
Day[]
Every day in that month.
Show Day
Show Day
string
YYYY-MM-DD.boolean
Not blocked or already booked.
boolean
Can actually be booked, respecting stay rules.
boolean
Usable as a check-in date.
boolean
Usable as a check-out date.
integer
Minimum stay length starting on this date.
integer
Maximum stay length starting on this date.
string
Formatted nightly price, e.g.
€172 — null when Airbnb hides it.Example
const res = await fetch(
"https://scrapebadger.com/v1/airbnb/listings/48291736/calendar?" +
new URLSearchParams({
month: "9",
year: "2026",
months: "3",
currency: "EUR",
}),
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const calendar = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/airbnb/listings/48291736/calendar",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"month": 9, "year": 2026, "months": 3, "currency": "EUR"},
)
calendar = res.json()
curl "https://scrapebadger.com/v1/airbnb/listings/48291736/calendar?month=9&year=2026&months=3¤cy=EUR" \
-H "X-API-Key: YOUR_API_KEY"
Response
{
"room_id": "48291736",
"months": [
{
"month": 9,
"year": 2026,
"days": [
{
"date": "2026-09-01",
"available": false,
"bookable": false,
"available_for_checkin": false,
"available_for_checkout": false,
"min_nights": 2,
"max_nights": 28,
"price": null
},
{
"date": "2026-09-12",
"available": true,
"bookable": true,
"available_for_checkin": true,
"available_for_checkout": false,
"min_nights": 3,
"max_nights": 28,
"price": "€172"
},
{
"date": "2026-09-13",
"available": true,
"bookable": true,
"available_for_checkin": true,
"available_for_checkout": true,
"min_nights": 2,
"max_nights": 28,
"price": "€168"
}
]
},
{
"month": 10,
"year": 2026,
"days": [
{
"date": "2026-10-01",
"available": true,
"bookable": true,
"available_for_checkin": true,
"available_for_checkout": true,
"min_nights": 2,
"max_nights": 28,
"price": "€145"
}
]
}
]
}
Each calendar request costs 5 credits. Failed requests are not charged.
⌘I

