Airbnb API: Check listing availability
Checks 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.
Unofficial. Not affiliated with or endorsed by Airbnb.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Month optional
month First calendar month in YYYY-MM, for example 2026-11; defaults to the current month.
2026-11
- Months optional
months Number of months to check, for example 2; defaults to 1 (up to 12).
2
Whole number from 1 to 12. Default
1.- Listing, required
listing Airbnb listing link, for example https://www.airbnb.com/rooms/1259514380601735776.
https://www.airbnb.com/rooms/1259514380601735776
Input as JSON
{ "month": "2026-11", "months": 2, "listing": "https://www.airbnb.com/rooms/1259514380601735776" }Output
{ "days": [ { "date": "2026-11-01", "currency": null, "minimum_nights": 3, "price_per_night": null, "available_for_check_in": false, "available_for_check_out": false }, { "date": "2026-11-02", "currency": null, "minimum_nights": 3, "price_per_night": null, "available_for_check_in": false, "available_for_check_out": false }, { "date": "2026-11-03", "currency": null, "minimum_nights": 3, "price_per_night": null, "available_for_check_in": false, "available_for_check_out": false } ], "listing_link": "https://www.airbnb.com/rooms/1259514380601735776" , "listing_title": "Luxury top-floor apt. in heart of Marina w/ views!", "available_nights_per_month": [ { "count": 1, "month": "2026-11" }, { "count": 0, "month": "2026-12" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"airbnb.com/check_listing_availability","input":{"month":"2026-11","months":2,"listing":"https://www.airbnb.com/rooms/1259514380601735776"}}' # 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/check_listing_availability" , "input": { "month": "2026-11", "months": 2, "listing": "https://www.airbnb.com/rooms/1259514380601735776" }})# 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/check_listing_availability" , "input": { "month": "2026-11", "months": 2, "listing": "https://www.airbnb.com/rooms/1259514380601735776" } }), 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/check_listing_availability# with {"month":"2026-11","months":2,"listing":"https://www.airbnb.com/rooms/1259514380601735776"}"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": [ "listing" ], "properties": { "month": { "type": "string", "description": "First calendar month in YYYY-MM, for example 2026-11; defaults to the current month." }, "months": { "type": "integer", "default": 1, "maximum": 12, "minimum": 1, "description": "Number of months to check, for example 2; defaults to 1 (up to 12)." }, "listing": { "type": "string", "description": "Airbnb listing link, for example https://www.airbnb.com/rooms/1259514380601735776." } }}Output schema
{ "type": "object", "required": [ "listing_title", "listing_link", "available_nights_per_month", "days" ], "properties": { "days": { "type": "array", "items": { "type": "object", "required": [ "date", "available_for_check_in", "available_for_check_out", "minimum_nights", "price_per_night", "currency" ], "properties": { "date": { "type": "string" }, "currency": { "type": [ "string", "null" ] }, "minimum_nights": { "type": [ "integer", "null" ] }, "price_per_night": { "type": [ "number", "null" ] }, "available_for_check_in": { "type": "boolean" }, "available_for_check_out": { "type": "boolean" } } } }, "listing_link": { "type": "string" }, "listing_title": { "type": "string" }, "available_nights_per_month": { "type": "array", "items": { "type": "object", "required": [ "month", "count" ], "properties": { "count": { "type": "integer" }, "month": { "type": "string" } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
airbnb.com/check_listing_availability- Returns
- listing title, listing link, available nights per month, days (date, check-in, check-out, minimum nights, price per night, currency)
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/check_listing_availability with the inputs above.
Ask your agent
- Is https://www.airbnb.com/rooms/53817264 free any weekends in March 2026? Need check-in dates and nightly prices.
- Show me which nights are open at this cabin for the next 3 months starting 2026-06, with minimum stay requirements: https://www.airbnb.com/rooms/1259514380601735776
- Can I check in on Dec 20 and out on Dec 27 at airbnb.com/rooms/41029837? Please also show the minimum-night rule for those dates.
- How many available nights does listing 718263540119283746 have each month from September through December 2026? Link is https://www.airbnb.com/rooms/718263540119283746
- Pull this month's calendar for https://www.airbnb.com/rooms/29475610, including daily prices and which days allow checkout.
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_listingSearches 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.
airbnb.com/search_staysFinds Recreation.gov campsites free for every night of a stay at a campground, with site details. Nightly prices are shown only when a campground lists a single nightly rate. Availability can change before booking.
recreation.gov/check_campsite_availabilityGets the lowest one-way fare on each day of a month for a direct Ryanair route. For a city with several airports, it returns the airport pair with the lowest fare that month.
ryanair.com/get_fare_calendarLists Nasdaq's US IPO calendar entries for a month and listing stage (upcoming, priced, filed or withdrawn), with dates, prices, shares, offer amounts and Nasdaq links, sorted by date. Filed and withdrawn entries may not show a price or exchange.
nasdaq.com/get_ipo_calendarFinds room offers and nightly prices for one Agoda hotel on selected dates. Totals are calculated from displayed nightly prices before taxes and fees; final checkout totals may differ.
agoda.com/get_room_pricesFinds the lowest Google Flights fare for each departure date in a month between two places, for one-way trips or a fixed trip length, with the cheapest option and any price insight shown.
google.com/get_cheapest_datesFind publicly priced Priceline hotels in a place for your travel dates, with guest ratings, nightly and total USD prices, and cancellation information. Excludes hotels hidden behind anonymous deals and sign-in-only prices.
priceline.com/search_hotels