Airbnb API: Search stays
Searches public Airbnb homes for a destination and travel dates. Each stay comes with its price, rating, room details and listing link. Prices are the displayed trip totals, including fees.
Unofficial. Not affiliated with or endorsed by Airbnb.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Page optional
page Search results page to start on, e.g. 2.
1 (default)
Whole number 1 or more.
- Adults optional
adults Number of adults, e.g. 2.
4
Whole number from 1 to 16. Default
2.- Check in, required
check_in Arrival date in YYYY-MM-DD, e.g. 2026-10-15.
2026-11-05
- Children optional
children Number of children, e.g. 0.
0 (default)
Whole number from 0 to 15.
- Currency optional
currency Currency code for displayed prices, e.g. USD.
USD
Default
USD.- Check Out, required
check_out Departure date in YYYY-MM-DD, e.g. 2026-10-20.
2026-11-09
- Place Type optional
place_type Type of place, e.g. entire_place.
entire_place
One of
any,entire_place,private_room. Defaultany.- Destination, required
destination City, area or address to search, e.g. Lisbon.
Lake Tahoe
- Max Results optional
max_results Maximum number of stays to return, e.g. 20.
20
Whole number from 1 to 50. Default
20.- Min Bedrooms optional
min_bedrooms Minimum number of bedrooms, e.g. 2.
2
Whole number 0 or more.
- Max Price Per Night optional
max_price_per_night Maximum nightly price in the selected currency, e.g. 180.
400
Number 0 or more.
Input as JSON
{ "adults": 4, "check_in": "2026-11-05", "currency": "USD", "check_out": "2026-11-09", "place_type": "entire_place", "destination": "Lake Tahoe", "max_results": 20, "min_bedrooms": 2, "max_price_per_night": 400}Output
{ "stays": [ { "area": "Alpine Meadows", "beds": 4, "bedrooms": 3, "currency": "USD", "latitude": 39.1819, "bathrooms": null, "longitude": -120.2098, "superhost": false, "listing_id": "1296108453730570175", "place_type": "Entire place", "price_text": "$1,329 for 4 nights, originally $1,623", "star_rating": 5, "total_price": 1329, "listing_link": "https://www.airbnb.com/rooms/1296108453730570175?check_in=2026-11-05&check_out=2026-11-09&adults=4&children=0" , "review_count": 106, "listing_title": "Palisades Cabin Retreat | Hot Tub•A/C•EV•Views" , "guest_favourite": true, "price_per_night": 332.25, "first_photo_link": "https://a0.muscache.com/im/pictures/prohost-api/Hosting-1296108453730570175/original/256d8bda-3952-4aac-9426-e5cb737a0a7a.jpeg" }, { "area": "Carnelian Bay", "beds": 4, "bedrooms": 3, "currency": "USD", "latitude": 39.1987, "bathrooms": null, "longitude": -120.0974, "superhost": false, "listing_id": "1351754237021991249", "place_type": "Entire place", "price_text": "$1,178 for 4 nights", "star_rating": 4.67, "total_price": 1178, "listing_link": "https://www.airbnb.com/rooms/1351754237021991249?check_in=2026-11-05&check_out=2026-11-09&adults=4&children=0" , "review_count": 46, "listing_title": "Lakeview Retreat | Modern Carnelian Bay Getaway", "guest_favourite": false, "price_per_night": 294.5, "first_photo_link": "https://a0.muscache.com/im/pictures/prohost-api/Hosting-1351754237021991249/original/27cbed8d-94de-4eed-b210-c10046c789eb.jpeg" }, { "area": "Tahoe City", "beds": 2, "bedrooms": 2, "currency": "USD", "latitude": 39.1468, "bathrooms": null, "longitude": -120.221, "superhost": false, "listing_id": "1466192646607671138", "place_type": "Entire place", "price_text": "$1,223 for 4 nights", "star_rating": 5, "total_price": 1223, "listing_link": "https://www.airbnb.com/rooms/1466192646607671138?check_in=2026-11-05&check_out=2026-11-09&adults=4&children=0" , "review_count": 20, "listing_title": "Ski-in/out chalet near Sherwood lift, home theater" , "guest_favourite": true, "price_per_night": 305.75, "first_photo_link": "https://a0.muscache.com/im/pictures/hosting/Hosting-1466192646607671138/original/801a10df-cd10-4182-8d3e-48bab0362df6.jpeg" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"airbnb.com/search_stays","input":{"adults":4,"check_in":"2026-11-05","currency":"USD","check_out":"2026-11-09","place_type":"entire_place","destination":"Lake Tahoe","max_results":20,"min_bedrooms":2,"max_price_per_night":400}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "airbnb.com/search_stays" , "input": { "adults": 4, "check_in": "2026-11-05", "currency": "USD", "check_out": "2026-11-09", "place_type": "entire_place", "destination": "Lake Tahoe", "max_results": 20, "min_bedrooms": 2, "max_price_per_night": 400 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "airbnb.com/search_stays" , "input": { "adults": 4, "check_in": "2026-11-05", "currency": "USD", "check_out": "2026-11-09", "place_type": "entire_place", "destination": "Lake Tahoe", "max_results": 20, "min_bedrooms": 2, "max_price_per_night": 400 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run airbnb.com/search_stays# with {"adults":4,"check_in":"2026-11-05","currency":"USD","check_out":"2026-11-09","place_type":"entire_place","destination":"Lake Tahoe","max_results":20,"min_bedrooms":2,"max_price_per_night":400}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "destination", "check_in", "check_out" ], "properties": { "page": { "type": "integer", "default": 1, "minimum": 1, "description": "Search results page to start on, e.g. 2." }, "adults": { "type": "integer", "default": 2, "maximum": 16, "minimum": 1, "description": "Number of adults, e.g. 2." }, "check_in": { "type": "string", "description": "Arrival date in YYYY-MM-DD, e.g. 2026-10-15." }, "children": { "type": "integer", "default": 0, "maximum": 15, "minimum": 0, "description": "Number of children, e.g. 0." }, "currency": { "type": "string", "default": "USD", "description": "Currency code for displayed prices, e.g. USD." }, "check_out": { "type": "string", "description": "Departure date in YYYY-MM-DD, e.g. 2026-10-20." }, "place_type": { "enum": [ "any", "entire_place", "private_room" ], "type": "string", "default": "any", "description": "Type of place, e.g. entire_place." }, "destination": { "type": "string", "minLength": 1, "description": "City, area or address to search, e.g. Lisbon." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum number of stays to return, e.g. 20." }, "min_bedrooms": { "type": "integer", "minimum": 0, "description": "Minimum number of bedrooms, e.g. 2." }, "max_price_per_night": { "type": "number", "minimum": 0, "description": "Maximum nightly price in the selected currency, e.g. 180." } }}Output schema
{ "type": "object", "required": [ "stays" ], "properties": { "stays": { "type": "array", "items": { "type": "object", "properties": { "area": { "type": [ "string", "null" ] }, "beds": { "type": [ "number", "null" ] }, "bedrooms": { "type": [ "number", "null" ] }, "currency": { "type": "string" }, "latitude": { "type": [ "number", "null" ] }, "bathrooms": { "type": [ "number", "null" ] }, "longitude": { "type": [ "number", "null" ] }, "superhost": { "type": "boolean" }, "listing_id": { "type": [ "string", "null" ] }, "place_type": { "type": "string" }, "price_text": { "type": [ "string", "null" ] }, "star_rating": { "type": [ "number", "null" ] }, "total_price": { "type": [ "number", "null" ] }, "listing_link": { "type": [ "string", "null" ] }, "review_count": { "type": [ "integer", "null" ] }, "listing_title": { "type": "string" }, "guest_favourite": { "type": "boolean" }, "price_per_night": { "type": [ "number", "null" ] }, "first_photo_link": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
airbnb.com/search_stays- Returns
- title, place type, area, nightly and total price, rating, reviews, bedrooms, beds, badges, photo, link, coordinates
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method airbnb.com/search_stays with the inputs above.
Ask your agent
- Find entire homes in Lisbon for October 15 to 20, 2026, for two adults, under 180 dollars a night
- Show me private rooms near downtown Tokyo for three nights next March, one adult, sorted by total price including fees
- I need a 3-bedroom place in Austin on Airbnb for a family of two adults and two kids, checking in 2026-07-04 and out 2026-07-09
- What stays are available in Kyoto from 2026-11-02 to 2026-11-06 for 4 adults, with a rating above 4.8 if possible?
- Look up cheap apartments in Mexico City for a week in late January 2027, budget 90 euros or less per night, two guests
See more
All Airbnb methodsGets public details for one Airbnb listing from its link. When dates are given, it also returns dated prices and cancellation terms if Airbnb offers a quote.
airbnb.com/get_listingChecks a public Airbnb listing's calendar for one or more months: available nights per month and, for each day from today on, whether check-in and check-out are possible, the minimum stay, and the nightly price when Airbnb shows one.
airbnb.com/check_listing_availabilitySearches Booking.com stays by destination and dates, with guest counts, price, review, cancellation, sorting and paging. Displayed prices generally exclude some taxes and fees; children are searched as age 8.
booking.com/search_staysFinds available Agoda stays in a city for your dates, with prices before taxes and fees, star and guest ratings, and free-cancellation status.
agoda.com/search_hotelsFinds available hostels, hotels and guesthouses on Hostelworld in a city for given dates, with per-night dorm and private room prices, ratings, facilities and booking links.
hostelworld.com/search_hostelsFinds Expedia hotels in a destination for given dates, with public USD prices, reviews, property class, refund status and links. Nightly prices are per room; totals include all requested rooms, taxes and fees.
expedia.com/search_hotelsCompares Kayak hotel nightly rates across booking sites for a city or neighborhood and stay dates (two adults, one room).
kayak.com/search_hotelsFinds places to stay in a city or area for given dates on Google Hotels, with nightly and total prices, hotel class, guest ratings, amenities, address and cheapest booking site. Optional filters for price, stars and rating; vacation rentals are left out. Prices and availability can change.
google.com/search_hotels