The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Server Airbnb listing page.
A comprehensive MCP Bundle for searching Airbnb listings with advanced filtering capabilities and detailed property information retrieval. Built as a Model Context Protocol (MCP) server packaged in the MCP Bundle (MCPB) format for easy installation and use with compatible AI applications.
👉 openbnb.ai is a hosted MCP server that solves the same problem — searching Airbnb listings — without any local setup.
If you don't want to deal with installing and running this server yourself, openbnb.ai is a separate, fully-hosted alternative you can connect to directly from your MCP client. It goes beyond what this open-source server offers:
npx, no config files, no updates to manageHead to openbnb.ai for setup instructions and the connection details for your MCP client.
If you'd rather self-host the open-source server, read on.
This extension is packaged as an MCP Bundle (.mcpb) file. To install:
.mcpb file from the latest releaseTo ignore robots.txt, open Claude Desktop settings, navigate to the extension, and enable the Ignore robots.txt toggle.
Before starting make sure Node.js is installed on your desktop for npx to work.
Go to: Cursor Settings > Tools & Integrations > New MCP Server
Add one the following to your mcp.json:
To ignore robots.txt for all requests, use this version with --ignore-robots-txt args
Restart.
The extension provides the following user-configurable options:
falseDISABLE_GEOCODINGfalseairbnb.com, no third-party calls.airbnb_searchSearch for Airbnb listings with comprehensive filtering options.
Parameters:
location (required): Location to search (e.g., "San Francisco, CA"). When supplied without placeId, the server geocodes this string client-side via Photon/Nominatim — see External Services.placeId (optional): Google Maps Place ID. Overrides location and skips client-side geocoding entirely (no third-party calls).checkin (optional): Check-in date in YYYY-MM-DD formatcheckout (optional): Check-out date in YYYY-MM-DD formatadults (optional): Number of adults (default: 1)children (optional): Number of children (default: 0)infants (optional): Number of infants (default: 0)pets (optional): Number of pets (default: 0)minPrice (optional): Minimum price per nightmaxPrice (optional): Maximum price per nightcursor (optional): Pagination cursor for browsing resultspropertyType (optional): Filter by property type — entire_home, private_room, shared_room, or hotel_roomignoreRobotsText (optional): Override robots.txt for this requestReturns:
airbnb_listing_detailsGet detailed information about a specific Airbnb listing.
Parameters:
id (required): Airbnb listing IDcheckin (optional): Check-in date in YYYY-MM-DD formatcheckout (optional): Check-out date in YYYY-MM-DD formatadults (optional): Number of adults (default: 1)children (optional): Number of children (default: 0)infants (optional): Number of infants (default: 0)pets (optional): Number of pets (default: 0)ignoreRobotsText (optional): Override robots.txt for this requestReturns:
Location details with coordinates
Amenities and facilities, as seeAllAmenitiesGroups — an object keyed by amenity category, so a category can be addressed directly. Amenities Airbnb shows struck through arrive under its own "Not included" category:
House rules and policies
Property highlights and descriptions
Direct link to the listing
In addition to airbnb.com, the server makes geocoding requests to two third-party services to translate location queries into accurate map bounding boxes. This bypasses Airbnb's own server-side geocoder, which produces incorrect results for many non-US queries (e.g. "Paris, France" lands in Vendée; "Copenhagen, Denmark" lands in Wisconsin).
| Service | Endpoint | Used for | Notes |
|---|---|---|---|
| Photon | photon.komoot.io | Primary geocoder, called on every search without placeId | Free OSM-based service hosted by Komoot. One request per search. |
| Nominatim | nominatim.openstreetmap.org | Fallback geocoder, called only when Photon does not return a bounding box | Subject to the OSMF usage policy (max ~1 req/sec). |
Each search sends only the location string from the request to the geocoder — no other request fields, no IP geolocation, no tracking identifiers. The location string itself is, of course, the same string the user typed.
Opting out: there are two ways to skip the geocoders:
placeId. When placeId is present, the server uses Airbnb's own place lookup directly with no third-party calls.DISABLE_GEOCODING=true. The server will skip Photon/Nominatim entirely and pass the raw location string to Airbnb. This restores the pre-PR behavior for every search and guarantees zero third-party outbound traffic — at the cost of broken results for non-US locations that Airbnb's own geocoder mishandles. Defaults to false.If a geocoder is unreachable or returns no result, the server falls back to sending the location string to Airbnb directly, exactly as it did before — so the worst case for an outage is that international searches degrade to the previous (broken) behavior, not that the search fails entirely.
npm test drives the built server over stdio and calls the tools for real:
test-extension.js — MCP handshake, tool listing, a search, listing details, and the geocoding paths (Photon, Nominatim fallback)test-amenities.js — amenity extraction across several live listings, checking that amenities Airbnb strikes through never appear as ones the listing offersBoth hit airbnb.com and the geocoders over the network, so they need connectivity and can fail if Airbnb changes its page structure — that's the point of them, but it also means they aren't suitable as an unattended CI gate.
The server can also be run directly:
MIT License - see LICENSE file for details.
Contributions are welcome! Please read the contributing guidelines and submit pull requests for any improvements.
Note: This extension is not affiliated with Airbnb, Inc. It is an independent tool designed to help users search and analyze publicly available Airbnb listings.