# Airbnb Listings API. Pay per record.

> Airbnb listing data priced for your stay, as JSON: nightly price, rating, capacity, amenities and host. From $0.0018 per listing.

Canonical: https://apiforagents.dev/platforms/airbnb/listings-api · Updated 2026-10-21

Turn an Airbnb listing URL or room id into a full card priced for a stay: nightly and total price, availability, ratings by category, amenities, house rules, cancellation policy and host. Up to ten listings per call.

- Price: $0.0018 / listing
- Billed: Per record
- Free to start: $0.10
- Endpoint: POST /v1/airbnb

## What people build with the Airbnb Listings API

- **Travel price research.** Price the same listings for the same dates and party, and compare nightly and total cost.
- **Short-term rental analysis.** Read capacity, amenities, ratings and nightly price for the listings you compete with.
- **Trip planning agents.** Let an agent check availability, house rules and the cancellation policy before it suggests a stay.

## Quote it, then run it

1. free quote: the exact price, nothing charged:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"},"estimateOnly":true}'
```

2. the same call, run:

```bash
curl -X POST https://apiforagents.dev/v1/airbnb \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"listings","subjects":["https://www.airbnb.com/rooms/<room-id>"],"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15","adults":2,"currency":"USD"}}'
```

## Inputs

Everything you can send in one listings call. Required inputs first.

| Input | Type | What it does |
|---|---|---|
| subjects * | text list | Listing URLs or room ids. 1-10 items |
| stay.checkIn | string | First night, YYYY-MM-DD. Only read together with checkOut. |
| stay.checkOut | string | Departure day, YYYY-MM-DD, after checkIn. |
| stay.adults | integer | Guests aged 13+; the nightly price depends on the party. 1-16 |
| stay.children | integer | Guests aged 2-12. 0-10 |
| stay.infants | integer | Guests under 2; usually not counted toward the listing's capacity. 0-5 |
| stay.pets | integer | Pets, where the listing allows them; adds the pet fee to the total. 0-5 |
| stay.currency | string | ISO 4217 code the prices come back in ("USD", "INR", "EUR"). |
| stay.locale | string | Language tag for titles and descriptions ("en-US", "fr-FR"). ≤10 chars |

## What comes back

The fields of every row, always present. Nothing is guessed: a value that could not be measured is null, and the answer's coverage says why.

| Field | Type |
|---|---|
| listingId | string |
| listingUrl | string |
| title | string |
| propertyType | string |
| roomType | string |
| capacity | integer |
| summaryDetails | list of string |
| description | string |
| location | string |
| locationSubtitle | string |
| locationPath | string |
| latitude | number |
| longitude | number |
| neighborhoodNotes | any |
| ratings | any |
| ratingOverall | number |
| reviewsCount | integer |
| highlights | any |
| amenities | any |
| houseRules | any |
| cancellationPolicy | string |
| available | boolean |
| stay | string |
| currency | string |
| totalPriceText | string |
| pricePerNightText | string |
| baseSubtotalText | string |
| priceQualifier | string |
| totalPrice | number |
| pricePerNight | number |
| host | any |
| hostName | string |
| hostIsSuperhost | boolean |
| coHosts | any |
| images | any |
| thumbnail | string |
| details | object |

details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

## A sample answer

Made-up names and values in the real field names, so you can see the shape before you spend anything.

| title | propertyType | roomType | capacity | location | ratingOverall |
|---|---|---|---|---|---|
| Sunny loft near the old town | Entire loft | Entire home | 3 | Lisbon, Portugal | 4.92 |
| Quiet garden studio | Entire guest suite | Entire home | 2 | Bengaluru, India | 4.85 |
| Beach cabin with a view | Entire cabin | Entire home | 4 | Byron Bay, Australia | 4.97 |

## Pricing

Pay as you go, in US dollars, per record. No subscription, nothing expires, $5 first top-up, and every new agent starts with $0.10 free.

| Request | Records | At the list price |
|---|---|---|
| One listing | 1 | $0.0018 |
| 10 listings | 10 | $0.018 |

These are per-record list prices. Some calls also carry a minimum, such as a page of search results, so a small request can cost more than the table shows. The quote ("estimateOnly": true) is free, gives the most your exact request can cost, and the charge then settles to what came back. Records that do not come back are refunded.

## Try it without writing code

- [Open the Airbnb Listings API in the playground](https://apiforagents.dev/dashboard/run?platform=airbnb&op=listings): The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type.

## Why this one, and not a scraper you run yourself

- No login, no Airbnb account, no cookies, no proxies, no browser to babysit.
- When the site changes its pages, your request stays the same: keeping the reads working is our job, not yours.
- A fetch that fails costs nothing: it is named in the answer with a reason, and the quote says the most a call can cost before it runs.

## Use it from your tools

- [Airbnb in n8n](https://apiforagents.dev/integrations/n8n/airbnb)
- [Airbnb in Make](https://apiforagents.dev/integrations/make/airbnb)
- [Airbnb in Zapier](https://apiforagents.dev/integrations/zapier/airbnb)
- [Airbnb in Python](https://apiforagents.dev/integrations/python/airbnb)
- [Airbnb in LangChain](https://apiforagents.dev/integrations/langchain/airbnb)
- [Airbnb in Claude Code](https://apiforagents.dev/integrations/claude-code/airbnb)

## Questions

### What does the Airbnb Listings API return?

One row per listing: title, property type, room type, capacity, location, overall rating, review count, price per night, currency, host name, whether the host is a Superhost, amenities, the listing id and URL. The card also carries the total price, availability, ratings by category, house rules and cancellation policy.

### What do I pass in?

Up to ten listing URLs or room ids. Optional: a stay with check-in and check-out dates, adults, children, infants and pets, a currency and a locale. The nightly price depends on the party, so give the real numbers.

### How much does it cost?

$0.0018 per listing at the list price. A small call can carry a minimum, so quote first with "estimateOnly": true, which is free and is the most the call can cost. You pay for what comes back.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=airbnb&op=listings (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md
