# Airbnb API for listing search, prices and availability calendars

> Search Airbnb by destination or map area and get each listing with its trip price and breakdown. Then read a listing’s calendar: availability, stay rules and the price Airbnb itself quotes for the nights you choose. Structured JSON, priced per call.

Canonical page: https://scrapercompany.com/airbnb-api. Endpoints and prices checked against the API on 2026-10-11.

Short-term rental pricing tools, investors and property managers watch Airbnb to see what nearby listings charge and how full their calendars are. Airbnb’s own API is for software partners that manage hosts’ listings, so reading the wider market means reading the public site. This API returns Airbnb’s search results with trip prices, ratings, coordinates and booking links, and each listing’s day-by-day availability with its check-in rules and minimum stays.

On Airbnb a nightly price only exists for a stay. Cleaning and service fees are folded into the nightly rate, so the same night costs less per night on a longer stay, and Airbnb’s availability calendar carries no prices at all. The calendar endpoint asks Airbnb for a real quote at each check-in date you pick, the same query the listing page’s booking box runs, and returns the dates, nights, subtotal, taxes and total with every priced day. Each priced night adds to the cost of the call; nights left unpriced add nothing.

## What you get

- `properties[].id`: the Airbnb listing id, the number in airbnb.com/rooms/<id>, used by the calendar
- `properties[].price`: trip total, nightly rate and an itemized breakdown, with taxes when include_taxes is set
- `rating, reviews, badges`: guest rating, review count and labels such as Guest favourite
- `gps_coordinates, accommodations`: location, and bedrooms, beds and baths
- `pagination.next_page_token`: cursor for the next page of search results
- `days[]`: one entry per day: available, check-in and check-out allowed, bookable, minimum and maximum nights
- `days[].price`: the stay quoted from that date: nights, accommodation subtotal, taxes, total and price per night
- `summary`: available, bookable and priced day counts, with the minimum, median and maximum nightly price

## Endpoints and price per call

| Endpoint | Method and path | What it returns | Credits per successful call | Price per call |
| --- | --- | --- | --- | --- |
| [Listing search](https://scrapercompany.com/docs/reference/airbnb-search) | `POST /v1/serp/airbnb` | Listings for a destination or map area, with trip prices, filters and a page cursor | 8 credits | $0.0078 on Starter, $0.0048 on Growth, $0.0032 on Scale |
| [Priced calendar](https://scrapercompany.com/docs/reference/airbnb-calendar) | `POST /v1/airbnb/calendar` | 1 to 12 months of availability and stay rules, with Airbnb’s quotes for the nights you choose | from 8 credits | $0.0078 on Starter, $0.0048 on Growth, $0.0032 on Scale |
| [Availability calendar (SERP-compatible)](https://scrapercompany.com/docs/reference/serp-airbnb-calendar) | `POST /v1/serp/airbnb_property_availability_calendar` | The standard SERP API calendar fields, availability only by default, with prices on request | from 8 credits | $0.0078 on Starter, $0.0048 on Growth, $0.0032 on Scale |

Pricing: Free $0/month for 1,000 credits; Starter $49/month for 50,000 credits; Growth $149/month for 250,000 credits; Scale $399/month for 1,000,000 credits. Failed requests (4xx or 5xx) and empty results cost 0 credits. Free during the beta. https://scrapercompany.com/pricing

## Example

`POST /v1/airbnb/calendar`, from 8 credits per successful call.

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

Response (trimmed):

```json
{
  "listing_id": "34397368",
  "link": "https://www.airbnb.ca/rooms/34397368",
  "airbnb_domain": "airbnb.ca",
  "currency": "CAD",
  "requested_currency": "CAD",
  "guests": {
    "adults": 2,
    "children": 0,
    "infants": 0,
    "pets": 0
  },
  "start_month": 10,
  "start_year": 2026,
  "months": 2,
  "price_nights": "sample",
  "max_price_quotes": 8,
  "listing": {
    "constant_min_nights": 2,
    "max_guests": 2,
    "pets_allowed": false,
    "children_allowed": true
  },
  "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
    }
  },
  "days": [
    {
      "date": "2029-03-16",
      "available": false,
      "available_for_checkin": false,
      "available_for_checkout": false,
      "bookable": false,
      "min_nights": 2,
      "max_nights": 27,
      "closed_to_arrival": false,
      "closed_to_departure": false,
      "price_status": "unavailable"
    },
    {
      "date": "2029-03-20",
      "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": "2029-03-20",
        "check_out": "2029-03-22",
        "nights": 2,
        "accommodation": 356,
        "taxes": 67.64,
        "total": 423.64,
        "price_per_night_text": "$178.00 CAD",
        "total_text": "$423.64 CAD",
        "display_total": "$424 CAD",
        "price_basis": "nightly_all_in_before_taxes",
        "display_style": "REGULATED_TOTAL",
        "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"
          }
        ],
        "provenance": {
          "schema_version": 1,
          "observation_id": "rateobs_9e60ad832506e113550acd2fe556ad55",
          "collection_id": "ratecol_c328ca4cf9a747448dc64c2e80f86e25",
          "observed_at": "2026-09-30T22:48:15.032Z",
          "source": "airbnb",
          "source_kind": "vacation_rental_stay_quote",
          "collector": "scrapingme.ota.airbnb_calendar",
          "source_property_id": "34397368",
          "requested_market": "airbnb.ca",
          "requested_currency": "CAD",
          "returned_currency": "CAD",
          "egress_mode": "direct",
          "price_basis": "nightly_all_in_before_taxes",
          "derivation": "airbnb_stay_average_nightly"
        }
      }
    }
  ],
  "metadata": {
    "collection_id": "ratecol_c328ca4cf9a747448dc64c2e80f86e25",
    "observed_at": "2026-09-30T22:48:15.032Z",
    "calendar_operation": "PdpAvailabilityCalendar",
    "upstream_requests": 9,
    "price_quotes": 8,
    "wire_bytes": 8913,
    "request_time_taken": 4.69,
    "parsing_time_taken": 0.001,
    "total_time_taken": 1.52,
    "egress": [
      "direct"
    ]
  }
}
```

## FAQ

### Does Airbnb have a public API?

Not one for reading the market. Airbnb’s API is for its software partners, mainly property-management and channel-management tools that connect hosts’ listings, and Airbnb decides which partners get access after a data-security review. This API is independent of Airbnb and returns what airbnb.com shows a guest.

### How do I find an Airbnb listing ID?

It is the number in the listing URL: for airbnb.com/rooms/34397368 the id is 34397368. A search returns it as properties[].id. Send it as listing_id to the priced calendar, or as property_id to the SERP-compatible calendar.

### Why does the price per night change with the length of stay?

Airbnb folds cleaning and service fees into its nightly rate, so a longer stay spreads them over more nights. Each priced day in the calendar is the check-in of a real quote for stay_nights nights, by default that date’s own minimum stay, and the quote’s check-in, check-out and nights are returned with it. Nothing is interpolated between quotes.

### How many nights can one calendar call price?

Availability covers 1 to 12 months in one call, and up to 92 check-in dates can be priced. With price_nights set to sample the quotes are spread evenly over the window (12 by default); all prices dates in order up to the cap; none returns availability only. Refused, failed and unsampled nights are not charged.

### Can I keep my existing SERP API request for Airbnb?

Yes. Listing search also answers at GET /api/v1/search?engine=airbnb with the standard parameter names and response hierarchy, so only the host changes. The SERP-compatible calendar keeps property_id, start_month, start_year and months, and adds prices only when you set price_nights.

### Do failed requests cost credits?

No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.

### How do I get an API key?

Create an account on the sign-up page. Public sign-up is invite-only during the beta, so join the waitlist there and we will email you when your account is ready. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.

## Read next

- [Airbnb priced calendar guide](https://scrapercompany.com/docs/guides/airbnb-priced-calendar)
- [Vacation rental pricing](https://scrapercompany.com/use-cases/vacation-rental-pricing)
- [Vrbo API](https://scrapercompany.com/vrbo-api)
- [All APIs](https://scrapercompany.com/apis.md)
