SuperAPI AI Directory

airbnb-mcp

Search Airbnb stays by location, dates and guests, and read full listing details (price, amenities, host, reviews) as JSON.

Open website

About this tool

Purpose

Airbnb MCP Server is a hosted Model Context Protocol (MCP) server that lets Claude, Cursor, Windsurf, and other MCP clients call two read-only Airbnb tools: searching for accommodations by place name or map area, and reading the complete information for a single listing by URL. All returned results are structured JSON. It reads public listing pages visible to logged-out visitors, so no Airbnb developer account and no partner approval are required.

Main capabilities

The server provides two tools:

  • hasdata_airbnb_listing_getAirbnbListings: Returns one page of search results by place name and dates, or by map area. checkIn is required; in addition to that, you can pass either location or a complete map bounding box (all four corners must be provided, and missing any one will cause a requiredIfExistsAny error). Returns a properties array and pagination (including nextPageToken and pageTokens). Each property includes id, url, title, latitude, longitude, a short description tagline, a photos array, rating, reviews, a badges array (such as Guest favorite or Superhost), and a price object. price includes originalPrice, an optional discountedPrice, a qualifier such as for 3 nights, and breakdown. Search results are deliberately kept lightweight and do not include bed count, bathroom count, amenities, host, and full description; these must be obtained through the listing details tool.

  • hasdata_airbnb_property_getAirbnbPropertyDetails: Returns complete information for a single listing by URL. Returns title, overview array (such as ["4 guests", "2 bedrooms", "2 beds", "2 baths"]), full description, rating, reviews, address, latitude, longitude, photos array, guestCapacity, host object, amenities array, and safetyAndPropertyInfo. The host object includes name, isSuperhost, isVerified, the host's own reviews, rating, and yearsHosting. Each amenity includes title, type, an optional description, and an available flag, so when filtering you should read available rather than assuming all listed amenities are present.

How to use

You need an MCP client and an API key obtained from the HasData dashboard (free to create, no credit card required). This is a remote server, and the simplest way is to use the URL and the x-api-key request header; no container needs to be run, and no Airbnb developer account is involved in the process. Clients that only support stdio can access it through a lightweight launcher, which has been published as @hasdata/airbnb-mcp on npm and hasdata-airbnb-mcp on PyPI.

The server URL is the same for all clients:https://mcp.hasdata.com/mcp?apis=airbnb

OAuth-capable clients can add the same URL as a connector and sign in, without placing a key in a configuration file. In Claude: Settings → Connectors → Add custom connector, paste the URL above and sign in.

For the configuration file approach, Claude Desktop only loads local (stdio) servers, so a stdio launcher is needed to access the remote server. The @hasdata/airbnb-mcp package is that launcher, and it reads the key from an environment variable. Add it to claude_desktop_config.json. If you use Python instead of Node, you can switch to the PyPI package; uvx runs it without manual installation.

Cursor uses ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (a single project). Windsurf uses ~/.codeium/windsurf/mcp_config.json; note that Windsurf's field name is serverUrl rather than url. VS Code uses .vscode/mcp.json in the workspace.

Use prompts rather than code. After pasting a prompt, the agent will choose tools on its own. Each successful call costs 10 credits. Example prompts include: search Austin for accommodations for two adults from September 15 to 18 and give the ten highest-rated under $200 per night (one call, 10 credits); take the top-ranked result and pull its full amenities, guest and bedroom counts, and host details (one call, 10 credits); compare the per-night prices in Austin and Nashville for two nights and three guests (two calls, 20 credits); for a listing URL, state the number of beds and bathrooms and whether the host is a Superhost (one call, 10 credits).

Use Cases

Suitable for scenarios where an AI client needs to search Airbnb accommodations, read listing details, compare prices across cities, check bed counts and host qualifications, and so on. Search results are used for ranking and initial screening; amenities, beds, host, and the full description come from the listing detail call, so a prompt like "after initial screening, check three listings" corresponds to one search plus three listing calls.

Limitations

  • Both tools are read-only. No booking, messaging, host dashboard, or guest data is provided; only content visible to signed-out visitors is read.
  • Airbnb does not have a public search API; its API project is for partner and co-host integrations to manage their own listings, so searching for stays and reading arbitrary listings can only be done by scraping public pages.
  • Error handling: The client almost never sees HTTP error codes; the MCP layer returns 200 and places the failure inside the result, with isError set to true and the reason given as text. A wrong key appears as tool output rather than a connection failure: tools/list accepts any non-empty key and returns two tools, the client handshake succeeds and shows green, and only the first tool call returns isError: true and the text HasData API error: 401 Unauthorized. A missing key is the only real HTTP error; authorization runs before any tool, and the connection itself fails with 401. Parameters that do not match the tool schema are rejected before scraping, returning isError: true and MCP error -32602: Input validation error, and pointing out the problematic field, with no scraping and no billing. A search with no available listings returns a successful result and an empty properties array, not an error. A delisted listing returns 400 with requestMetadata.status set to error.
  • Billing: Each Airbnb tool consumes 10 credits per successful call, and the response size does not affect the price. The free tier provides 1,000 credits per month (no credit card required), which is 100 Airbnb calls, renewed with the billing cycle. Paid plans start at $59 per month and include 200,000 credits (20,000 calls), with the unit price decreasing as usage increases. The plan also determines concurrency: the free tier allows 1 concurrent request, Startup allows 5, Basic allows 15, and the Growth tier allows 50 to 500. Non-200 responses are not billed, while successful calls with no results are still billed.
  • The apis query parameter determines the tools visible to the agent. The parameter accepts provider names (such as airbnb) and individual API names (such as airbnb_listing). Misspelled names are ignored; if all names are wrong, the request fails with 400, and the response body lists the unrecognized names and all valid values. Omitting the parameter exposes all 57 HasData tools on the same endpoint.
  • Compliance and personal data: HasData only accesses publicly available data. Platform terms may restrict automated access, and users are responsible for their own compliance. If the collected data contains personal information, you must ensure there is a legal basis under GDPR, CCPA, or equivalent local rules.
  • This repository is the configuration and documentation for a remote server, has no build step, and requires no containerization.

Frequently Asked Questions

  • Does Airbnb have an official MCP server? Airbnb has not released an official version. This server is maintained by HasData and reads public pages, so no Airbnb developer account is required.
  • Do I need an Airbnb API key or partner account? No. The only credential is the HasData key, and no partner onboarding is required.
  • Why don't search results show beds or amenities? Because Airbnb does not put them on the search cards; they are on the listing page, read by the details tool via URL.
  • Can I filter by guests, pets, or dates? Yes. The listing tool accepts checkIn, checkOut, and the number of adults, children, infants, and pets, and returns availability and prices for that group and window.
  • Can it be used with other HasData APIs? Yes. The apis parameter accepts a list, and ?apis=airbnb,booking provides both Airbnb and Booking.com at the same time. Omitting the parameter gives you all of them.

License

MIT, see LICENSE for details.