Airbnb API

  • Data from Airbnb

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.

1,000 free credits a month · Failed requests are free · Free during the beta

Endpoints and prices checked against the API on

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

One call, structured JSON

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

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)
{
  "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"
    ]
  }
}

Endpoints and price per call

Credits per successful call, and what one call costs on the Starter, Growth, Scale plans. Failed requests cost nothing. See all plans.

EndpointWhat it returnsCreditsStarter · Growth · Scale
Listing search
POST /v1/serp/airbnb
Listings for a destination or map area, with trip prices, filters and a page cursor8 credits$0.0078 · $0.0048 · $0.0032
Priced calendar
POST /v1/airbnb/calendar
1 to 12 months of availability and stay rules, with Airbnb’s quotes for the nights you choosefrom 8 credits$0.0078 · $0.0048 · $0.0032
Availability calendar (SERP-compatible)
POST /v1/serp/airbnb_property_availability_calendar
The standard SERP API calendar fields, availability only by default, with prices on requestfrom 8 credits$0.0078 · $0.0048 · $0.0032
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.

Start with 1,000 free credits a month

Join the waitlist and we will email you when your account is ready: your own API keys, 1,000 free credits a month, and the API is free during the beta.

Sign-up is invite-only during the beta. Privacy

Or read the quickstart →