How do you search Airbnb stays via API?
To search Airbnb stays via API, call ReefAPI's stays.search action with destination, dates and guests; it returns live stay results as structured JSON with listing, rating, price and pagination fields.
This guide demonstrates the real Airbnb API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.
Vacation-rental search, destination research, price monitoring and itinerary planning.
Call the live endpoint
- 1
Set destination, dates and guests
Pass a destination query, check-in, check-out and adult count that match your user journey.
- 2
Call airbnb/v1/stays.search
POST the request through ReefAPI and read data.items plus pagination metadata.
- 3
Store listing signals
Keep listing id, name, rating, price, coordinates, badges and capture time.
- 4
Paginate carefully
Use pagination metadata when you need broader coverage, and dedupe listing ids across pages.
Copy the request
These snippets use the captured request params for airbnb/v1/stays.search.
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}.Captured output from ReefAPI
Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.
{
"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
}
}
}Why this is hard manually
Vacation-rental search changes with destination, dates, guests, filters, availability and pagination. Manual scraping has to parse interactive result cards and keep listing ids stable while prices and badges change.
For repeatable travel workflows, you need the exact input parameters, result count and next-page state stored alongside the listing data.
Why ReefAPI solves it
The captured Airbnb snapshot searches Istanbul stays for two adults and returns live listing cards, ratings, prices, coordinates, badges and pagination metadata. The guide renders that response directly from the snapshot file.
Use it for short-term rental discovery, travel planning agents, pricing research or availability monitoring.
Questions developers ask
Does this require an Airbnb account?
No. The guide demonstrates ReefAPI's Airbnb search endpoint using a ReefAPI key.
Does the response include coordinates?
The captured response includes listing coordinates where available.
Can I search other destinations?
Yes. Change the query and date parameters according to the docs page.
Are prices guaranteed final checkout prices?
No. Treat visible search prices as search-result data and verify details in your own booking or pricing workflow.