Airbnb API
The Airbnb API returns short-term rental listings, prices and host data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary stays.search endpoint returns stays with id, name, rating, price, coordinates, badges and a pagination cursor, and you can pull a stays.detail, a host.profile, stays.reviews and an availability_calendar, plus a separate properties search. It is built for travel apps, pricing monitors and short-term-rental analytics that need live Airbnb data without scraping a defended site. One ReefAPI key, one shared credit pool, the standard { ok, data, meta, error } envelope.
Real request and response JSON
Captured from the indexed primary action, stays.search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/airbnb/v1/stays.search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "Istanbul, Turkey",
"checkin": "2026-08-10",
"checkout": "2026-08-15",
"adults": 2
}
}{
"ok": true,
"meta": {
"api": "airbnb",
"endpoint": "stays.search",
"mode": "live",
"latency_ms": 1299.4,
"record_count": 26,
"bytes": 906622,
"cache_hit": false,
"expected_tokens_ok": "[redacted-secret]",
"parser": "stays_search_html",
"pagination": {
"has_more": true,
"next_cursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjozNiwidmVyc2lvbiI6MX0=",
"cursor_count": 15
}
},
"data": {
"items": [
{
"id": "[redacted-phone]",
"name": "[redacted-name]",
"rating": "5.0 (28)",
"rating_label": "5.0 out of 5 average rating, 28 reviews",
"price": "€363 total, originally €646",
"coordinate": {
"lat": 41.0274,
"lng": 28.9758
},
"badges": [
"Guest favorite"
],
"subtitle": "A Modern Apartment in Galata – 2 Minutes to the Subway",
"raw": {
"__typename": "StaySearchResult",
"avgRatingA11yLabel": "5.0 out of 5 average rating, 28 reviews",
"avgRatingLocalized": "5.0 (28)",
"listingParamOverrides": null,
"structuredDisplayPrice": {
"__typename": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"explanationData": "[trimmed-depth]",
"explanationDataDisplayPosition": "[trimmed-depth]",
"displayPriceStyle": "[trimmed-depth]",
"loggingMetadata": "[trimmed-depth]"
},
"badges": [
"[trimmed-depth]"
],
"contextualPictures": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"paymentMessages": [
"[trimmed-depth]",
"[trimmed-depth]"
],
"title": "Apartment in Istanbul",
"subtitle": "A Modern Apartment in Galata – 2 Minutes to the Subway",
"nameLocalized": {
"__typename": "[trimmed-depth]",
"localizedStringWithTranslationPreference": "[trimmed-depth]"
},
"propertyId": null,
"structuredContent": {
"__typename": "[trimmed-depth]",
"distance": "[trimmed-depth]",
"mapCategoryInfo": "[trimmed-depth]",
"mapPrimaryLine": "[trimmed-depth]",
"mapSecondaryLine": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"tertiaryLine": "[trimmed-depth]",
"reviewSnippet": "[trimmed-depth]",
"explanation": "[trimmed-depth]"
},
"passportData": null,
"demandStayListing": {
"__typename": "[trimmed-depth]",
"id": "[trimmed-depth]",
"location": "[trimmed-depth]",
"description": "[trimmed-depth]",
"wishlistItems": "[trimmed-depth]",
"nameLocale": "[trimmed-depth]"
},
"priceBreakdownMessages": []
}
},
{
"id": "[redacted-phone]",
"name": "[redacted-name]",
"rating": "4.82 (68)",
"rating_label": "4.82 out of 5 average rating, 68 reviews",
"price": "€316 total, originally €405",
"coordinate": {
"lat": 41.0298,
"lng": 28.97502
},
"badges": [
"Guest favorite"
],
"subtitle": "Balcony Studio• Sea View Terrace | In The Taksim",
"raw": {
"__typename": "StaySearchResult",
"avgRatingA11yLabel": "4.82 out of 5 average rating, 68 reviews",
"avgRatingLocalized": "4.82 (68)",
"listingParamOverrides": null,
"structuredDisplayPrice": {
"__typename": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"explanationData": "[trimmed-depth]",
"explanationDataDisplayPosition": "[trimmed-depth]",
"displayPriceStyle": "[trimmed-depth]",
"loggingMetadata": "[trimmed-depth]"
},
"badges": [
"[trimmed-depth]"
],
"contextualPictures": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"paymentMessages": [
"[trimmed-depth]",
"[trimmed-depth]"
],
"title": "Hotel in Istanbul",
"subtitle": "Balcony Studio• Sea View Terrace | In The Taksim",
"nameLocalized": {
"__typename": "[trimmed-depth]",
"localizedStringWithTranslationPreference": "[trimmed-depth]"
},
"propertyId": null,
"structuredContent": {
"__typename": "[trimmed-depth]",
"distance": "[trimmed-depth]",
"mapCategoryInfo": "[trimmed-depth]",
"mapPrimaryLine": "[trimmed-depth]",
"mapSecondaryLine": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"tertiaryLine": "[trimmed-depth]",
"reviewSnippet": "[trimmed-depth]",
"explanation": "[trimmed-depth]"
},
"passportData": null,
"demandStayListing": {
"__typename": "[trimmed-depth]",
"id": "[trimmed-depth]",
"location": "[trimmed-depth]",
"description": "[trimmed-depth]",
"wishlistItems": "[trimmed-depth]",
"nameLocale": "[trimmed-depth]"
},
"priceBreakdownMessages": []
}
},
{
"id": "[redacted-phone]",
"name": "[redacted-name]",
"rating": "4.95 (38)",
"rating_label": "4.95 out of 5 average rating, 38 reviews",
"price": "€385 total",
"coordinate": {
"lat": 41.0361,
"lng": 28.9738
},
"badges": [
"Guest favorite"
],
"subtitle": "The Blue flat with a View",
"raw": {
"__typename": "StaySearchResult",
"avgRatingA11yLabel": "4.95 out of 5 average rating, 38 reviews",
"avgRatingLocalized": "4.95 (38)",
"listingParamOverrides": null,
"structuredDisplayPrice": {
"__typename": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"explanationData": "[trimmed-depth]",
"explanationDataDisplayPosition": "[trimmed-depth]",
"displayPriceStyle": "[trimmed-depth]",
"loggingMetadata": "[trimmed-depth]"
},
"badges": [
"[trimmed-depth]"
],
"contextualPictures": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"paymentMessages": [],
"title": "Apartment in Istanbul",
"subtitle": "The Blue flat with a View",
"nameLocalized": {
"__typename": "[trimmed-depth]",
"localizedStringWithTranslationPreference": "[trimmed-depth]"
},
"propertyId": null,
"structuredContent": {
"__typename": "[trimmed-depth]",
"distance": "[trimmed-depth]",
"mapCategoryInfo": "[trimmed-depth]",
"mapPrimaryLine": "[trimmed-depth]",
"mapSecondaryLine": "[trimmed-depth]",
"primaryLine": "[trimmed-depth]",
"secondaryLine": "[trimmed-depth]",
"tertiaryLine": "[trimmed-depth]",
"reviewSnippet": "[trimmed-depth]",
"explanation": "[trimmed-depth]"
},
"passportData": null,
"demandStayListing": {
"__typename": "[trimmed-depth]",
"id": "[trimmed-depth]",
"location": "[trimmed-depth]",
"description": "[trimmed-depth]",
"wishlistItems": "[trimmed-depth]",
"nameLocale": "[trimmed-depth]"
},
"priceBreakdownMessages": []
}
}
],
"raw_count": 44,
"unique_count": 26,
"pagination": {
"cursor_count": 15,
"cursors": [
{
"cursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjowLCJ2ZXJzaW9uIjoxfQ==",
"items_offset": 0
},
{
"cursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0=",
"items_offset": 18
},
{
"cursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjozNiwidmVyc2lvbiI6MX0=",
"items_offset": 36
}
],
"deduped": true
}
}
}What the Airbnb API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| stays.search | Search Airbnb stays by location and dates with full filters: price range, guests, place/property type, bedrooms/beds/baths, amenities, instant-book, Superhost, free cancellation and host language (≈26 cards/page, cursor-paginated). | Travel apps call stays.search to search Airbnb stays by location and dates with full filters. | query, checkin, checkout, adults, children, ... |
| stays.detail | Full listing details: title, property/room type, guest capacity, the six category sub-ratings, host card, complete amenity list, photo URLs, sleeping arrangement, house rules, description and map location. Returns a clean `parsed` summary plus the raw PDP payload. | Pricing monitors call stays.detail to get full listing details. | listing_id, currency, locale |
| host.profile | Host profile for a listing: host name, Superhost/verified status, overall host rating, total reviews, years hosting, response rate and host highlights. | Itinerary products call host.profile to get host profile for a listing. | listing_id |
| stays.reviews | Listing reviews, paginated via offset/limit. | Hospitality analysts call stays.reviews to get listing reviews, paginated via offset/limit.. | listing_id, offset, limit, locale |
| stays.availability_calendar | Availability calendar for a listing (up to 12 months ahead): per-day availability + min/max nights. | Travel apps call stays.availability_calendar to get availability calendar for a listing (up to 12 months ahead). | listing_id |
| properties.search | Alias of stays.search. | Pricing monitors call properties.search to get alias of stays.search.. | query, checkin, checkout, adults, cursor, ... |
| properties.detail | Alias of stays.detail. | Itinerary products call properties.detail to get alias of stays.detail.. | listing_id, currency, locale |
| autocomplete | Location autocomplete suggestions (raw passthrough). | Hospitality analysts call autocomplete to get location autocomplete suggestions (raw passthrough).. | none |
Call stays.search from your stack
curl -X POST https://api.reefapi.com/airbnb/v1/stays.search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"Istanbul, Turkey","checkin":"2026-08-10","checkout":"2026-08-15","adults":2}'import requests
r = requests.post(
"https://api.reefapi.com/airbnb/v1/stays.search",
headers={"x-api-key": REEF_KEY},
json={
"query": "Istanbul, Turkey",
"checkin": "2026-08-10",
"checkout": "2026-08-15",
"adults": 2
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/airbnb/v1/stays.search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "Istanbul, Turkey",
"checkin": "2026-08-10",
"checkout": "2026-08-15",
"adults": 2
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.airbnb.stays.search with {"query":"Istanbul, Turkey","checkin":"2026-08-10","checkout":"2026-08-15","adults":2}.Who uses this API and why
- Pricing and revenue tools call stays.search to track nightly rates and availability in a market.
- Short-term-rental analytics use stays.reviews and host.profile to study top hosts and guest sentiment.
- Travel apps use stays.detail and the availability_calendar to show live listings and open dates.
Questions developers ask before integrating
What is the Airbnb API?
Airbnb API is a ReefAPI endpoint group for search stays, get listing details, reviews and availability. It returns live JSON through POST requests under /airbnb/v1.
Is the Airbnb API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Airbnb calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Airbnb login or account?
No login to Airbnb is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Airbnb data?
The page example is captured from a live stays.search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Airbnb API use?
Airbnb actions currently cost 1-3 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Airbnb from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call airbnb actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Airbnb API a Airbnb scraper?
It is the managed alternative to a DIY Airbnb scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same search stays, get listing details, reviews and availability back as clean JSON.
Why does my Airbnb scraper keep getting blocked?
Most Airbnb scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.