Skip to content

Get an Airbnb listing's priced calendar

Day-by-day availability and stay rules for a listing, with Airbnb's own quoted prices for the nights you choose.

Overview

You get
1-12 months of a listing's days: availability, check-in and check-out rules, minimum and maximum nights, and, for the nights you choose, the stay price Airbnb itself quotes.
Call
Cost
8 credits, plus 1 per night actually priced (at most 92)
Latency
Under a second for availability alone; quotes run four at a time, so 12 quotes take about 2 s and 60 about 8-9 s

Request the calendar

listing_id is the number in airbnb.com/rooms/<id>, or a properties[].id from Airbnb search. The calendar starts at the current month unless you set start_month and start_year.

curl -X POST "https://api.scrapercompany.com/v1/airbnb/calendar" \
  -H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "listing_id": "34397368",
    "airbnb_domain": "airbnb.ca",
    "currency": "CAD",
    "months": 2,
    "adults": 2,
    "price_nights": "sample",
    "max_price_quotes": 8
  }'

Read the days

days has one row per date of the requested months, in order. Every row carries Airbnb's rules for that date; a priced row adds the quoted stay.

days (three rows, shortened)
[
  {
    "date": "2026-11-30",
    "available": true,
    "available_for_checkin": true,
    "available_for_checkout": true,
    "bookable": true,
    "min_nights": 2,
    "max_nights": 27,
    "closed_to_arrival": false,
    "closed_to_departure": false,
    "price_status": "priced",
    "price": {
      "price_per_night": 178,
      "currency": "CAD",
      "check_in": "2026-11-30",
      "check_out": "2026-12-02",
      "nights": 2,
      "accommodation": 356,
      "taxes": 67.64,
      "total": 423.64,
      "display_total": "$424 CAD",
      "price_basis": "nightly_all_in_before_taxes",
      "breakdown": [
        {
          "description": "2 nights x $178.00 CAD",
          "price": "$356.00 CAD",
          "extracted_price": 356,
          "kind": "nights"
        },
        {
          "description": "Taxes",
          "price": "$67.64 CAD",
          "extracted_price": 67.64,
          "kind": "tax"
        },
        {
          "description": "Total",
          "price": "$423.64 CAD",
          "extracted_price": 423.64,
          "kind": "total"
        }
      ]
    }
  },
  {
    "date": "2026-12-01",
    "available": true,
    "available_for_checkin": true,
    "available_for_checkout": true,
    "bookable": true,
    "min_nights": 2,
    "max_nights": 27,
    "price_status": "not_sampled"
  },
  {
    "date": "2026-12-03",
    "available": false,
    "available_for_checkin": false,
    "available_for_checkout": false,
    "bookable": false,
    "min_nights": 2,
    "max_nights": 27,
    "price_status": "unavailable"
  }
]

price_status says why a date is or isn't priced: priced; not_sampled (a valid check-in that sample didn't pick); unavailable, past, check_in_not_allowed, check_out_not_allowed, stay_blocked (a later night of the stay is taken) or stay_exceeds_max_nights (the stay can't be booked from that date); quote_refused (Airbnb refused the stay, reason in price_error); and quote_failed / quote_skipped when a quote could not be made. The full list is in the reference.

summary
{
  "days": 61,
  "available": 35,
  "available_for_checkin": 31,
  "bookable": 34,
  "priced": 8,
  "min_price_per_night": 169.5,
  "max_price_per_night": 178,
  "median_price_per_night": 178,
  "price_status": {
    "check_in_not_allowed": 4,
    "not_sampled": 23,
    "priced": 8,
    "unavailable": 26
  }
}

What a nightly price is

Airbnb's nightly rate is all-in: cleaning and guest fees are folded into it, and taxes and long-stay discounts are separate lines. Because fees are spread over the nights, the nightly figure depends on the length of the stay: for one listing, two 2-night stays were $178 a night while the 4-night stay spanning both was $169.50. So a price only exists for a stay:

  • each priced date is the check-in of a real quote, for stay_nights nights or, by default, that date's own minimum stay. check_in, check_out and nights are returned with the price;
  • nothing is interpolated, and you can't add up two quotes to get a longer stay;
  • price_per_night is Airbnb's own rounded figure; accommodation, discount (positive), fees (only when Airbnb itemizes them), taxes and total are kept apart, and breakdown has the lines as Airbnb shows them.

price_basis is nightly_all_in_before_taxes, or nightly_before_listed_fees_and_taxes when the quote lists a fee line (then those fees are in fees, not in the nightly figure). Quotes are priced for the party you send (adults, children, infants, pets; one adult by default); a different party or stay length is a different price.

Choose which nights to price

price_nightsPricesCredits
none
Nothing: availability and rules only
8
sample
Up to max_price_quotes check-in dates (default 12), spread evenly over the valid ones
8 + priced nights (up to 20 by default)
all
Every valid check-in date in order, up to max_price_quotes (default and maximum 92)
8 + priced nights (up to 100)

sample is the default on this endpoint. Set stay_nights (1-28) to quote every date for the same length; a date whose minimum stay is longer is quoted at its minimum, with a warning.

A full year, daily

One request prices at most 92 nights. To price every check-in over 12 months, split the year into requests of about three months each with start_month / start_year and price_nights: all.

What it costs

8 credits for the calendar, plus 1 for each date whose price_status is priced. Refused, failed, skipped and unsampled nights are free, and so is any error response. The request reserves the most it could cost (8 plus its quote budget) and is charged for what it priced; x-credits-charged on the response tells you the result. See Credits.

SearchAPI shape

Coming from SearchAPI's airbnb_property_availability_calendar engine? Use POST/v1/serp/airbnb_property_availability_calendar: it takes property_id, start_month, start_year, months (default 12) and airbnb_domain, and returns months[].days[] with SearchAPI's is_available, is_available_for_checkin, is_available_for_checkout, is_bookable, min_nights and max_nights.

Its default is price_nights: none, exactly SearchAPI's fields for 8 credits. Set price_nights to add a price object to priced days, in the vocabulary of SearchAPI's Airbnb search price (price_per_qualifier, total_with_taxes, …), and a price_summary.