An Airbnb MCP server is a Model Context Protocol server that gives an AI agent such as Claude, Cursor or ChatGPT tools for Airbnb data: searching stays in a city, pricing them for specific dates, reading a listing's details and pulling its guest reviews. The most complete Airbnb MCP setup is Scrape.ly's hosted server, because the agent gets two ready-made Airbnb scrapers, one for listings and one for reviews, that run in the cloud on public pages with nothing to install.
Below you'll find what the open-source Airbnb server on page one does, setup for each client, the tool calls an agent makes, and two real runs from 26 October 2026: five Lisbon apartments priced for a December weekend in 9.5 seconds, and the latest reviews of one of them in 5.3 seconds, for under three cents together. There's also a list of what to watch out for, so your agent doesn't promise a number Airbnb never sent.
What the Airbnb MCP servers on page one do
The top Google result for "airbnb mcp" on 26 October 2026 is openbnb-org/mcp-server-airbnb, and four more results (mcp.so, Docker Hub, Augment Code and explainx.ai) are pages about the same server. It's a local server: a bundle you install in Claude Desktop, or an npx command for Cursor, which needs Node.js 18 or newer and talks to your client over stdio. Its README documents two tools, airbnb_search and airbnb_listing_details. It respects robots.txt by default, with a toggle to ignore it, and sends each location string to the third-party geocoders Photon and Nominatim unless you pass a Google Maps place ID.
That covers search and details. What it doesn't list is a reviews tool, and reviews are where many agent questions start: what guests complain about, whether the host replies, how a place holds up after a renovation. The second result, from the property-management software Hospitable, is aimed at hosts working with their own listings.
| Scrape.ly MCP server | openbnb-org/mcp-server-airbnb | |
|---|---|---|
| Where it runs | Hosted at https://mcp.scrape.ly, nothing to install | Your machine, Node.js 18+, stdio |
| Setup | One URL, sign in with OAuth | A .mcpb bundle or an npx config entry |
| Tools for Airbnb | Listings search, listing URLs and guest reviews (two Actors) | airbnb_search, airbnb_listing_details |
| Guest reviews | Every review Airbnb shows, with sort order, date range and translation | Not among its documented tools |
| Output | Structured rows, paged, exportable as JSON, CSV or Excel | Tool responses in the chat |
| Repeat jobs | Schedules and automations on the same Actors | Runs when your client calls it |
How to connect the Scrape.ly MCP server
The Scrape.ly MCP server is a remote server on MCP's streamable HTTP transport. It signs you in with OAuth or takes a Scrape.ly API token. The free plan includes $5 of usage every month without a card, which is enough for about 1,900 listings.
Claude Code. Add it with one command, then run /mcp in a session and choose scrapely to approve access:
claude mcp add --transport http scrapely https://mcp.scrape.lyClaude Desktop. Go to Customize → Connectors, add a custom connector with the URL https://mcp.scrape.ly, and complete the OAuth sign-in.
Cursor. Add the server to ~/.cursor/mcp.json, or to .cursor/mcp.json inside one project:
{
"mcpServers": {
"scrapely": {
"url": "https://mcp.scrape.ly",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}Without headers, Cursor asks you to sign in with OAuth. If you prefer a token, create one under Settings → API & Integrations.
ChatGPT, VS Code, Windsurf and others. Clients with remote MCP support use the same URL with OAuth or a Bearer header. The MCP docs include VS Code's .vscode/mcp.json and a local stdio server for clients that need one.
An Airbnb-only tool list. Name both Actors in the URL and each becomes a tool of its own:
https://mcp.scrape.ly?actors=roamandroof/airbnb-scraper,roamandroof/airbnb-reviews-scraperThe two Airbnb Actors your agent works with
Both are maintained by Scrape.ly, read public data without logging in, and take it from Airbnb's own data feeds instead of loading pages in a browser, which is why small runs finish in seconds.
| Actor | Input | What comes back | Price |
|---|---|---|---|
| Airbnb Scraper | City names, search URLs with their filters, or listing URLs; dates, guests, price range, minimum beds, bedrooms and bathrooms, currency, locale | Title, property and room type, capacity, total price for your dates with a breakdown when Airbnb sends one, rating with category scores, host rating and Superhost flag, amenities, house rules, photos, location | $2.59 per 1,000 listings |
| Airbnb Reviews Scraper | Listing URLs or IDs; sort order, date range, locale | Star rating, exact date, original text and a translation, stay length, host reply, reviewer's location | $3.02 per 1,000 reviews |
Prices are pay per result with platform usage included, as listed in the Scrape.ly Store on 26 October 2026. For a REST endpoint with Python, JavaScript and cURL examples, see the Airbnb API page.
The tool calls, from search to reviews
An Airbnb question usually chains both Actors, and each step uses the same four server tools:
search-actorswith "airbnb" finds both Actors.fetch-actor-detailsreturns the input schema, so the agent learns that dates arecheckInandcheckOutinYYYY-MM-DDand that reviews takestartUrls.call-actorruns the listings search and waits up to 45 seconds for it to finish.get-actor-outputreads the listing rows with only the fields the agent asks for. The agent picks a listing and repeats steps 3 and 4 with the Reviews Scraper.
Rows never come back inside call-actor. They're read separately and in pages, so 200 listings with photo captions don't crowd out the conversation.
A real run: five Lisbon stays for a December weekend
The prompt: "Use scrapely to find five Airbnb apartments in Lisbon for 2 adults from 4 to 7 December, with the total price, guest rating and number of reviews."
The agent's call-actor request:
{
"actor": "roamandroof/airbnb-scraper",
"input": {
"locationQueries": ["Lisbon"],
"maxResults": 5,
"checkIn": "2026-12-04",
"checkOut": "2026-12-07",
"adults": 2,
"currency": "USD",
"locale": "en-US"
},
"waitSecs": 45,
"callOptions": { "maxTotalChargeUsd": 0.05 }
}Our run on 26 October 2026 finished in 9.5 seconds with "Saved 5 listings." and no failed inputs. The agent read title,propertyType,personCapacity,price,rating,host.isSuperHost:
| Listing | Type | Guests | 3 nights | Before discount | Guest rating | Reviews | Superhost |
|---|---|---|---|---|---|---|---|
| Tram 28 - Amazing Balcony & Tagus River Views 3B | Entire rental unit | 4 | $356 | $670 | 4.93 | 708 | yes |
| Chiado Loft 11 Brand New Loft | Entire rental unit | 3 | $436 | — | 4.95 | 655 | yes |
| Brand new apartment right in the heart of Alfama. | Entire rental unit | 4 | $320 | $353 | 4.82 | 485 | no |
| Chiado with Amazing View to the Castle | Entire serviced apartment | 4 | $444 | $587 | 4.93 | 254 | yes |
| STYLISH & TRENDY APARTMENT - HEART OF BAIXA | Entire rental unit | 2 | $631 | — | 4.98 | 368 | yes |
Three of the five showed a discount for these dates; the Tram 28 flat was down from $670 to $356. Each row's breakdown gave the nightly rate behind the total, from $106.56 in Alfama to $210.14 in Baixa. Service fees, cleaning fees and taxes were empty on all five, because Airbnb didn't send those lines for these search results, and the Actor leaves them empty rather than estimating them. The listings are businesses' and private hosts' rentals, so we show listing titles and leave out host names.
Cost: 5 × $0.00259 = $0.01295 at list price, platform usage included.
A real run: what recent guests wrote
The follow-up prompt: "Get the five most recent reviews of the Chiado loft and tell me if anyone mentions a problem."
{
"actor": "roamandroof/airbnb-reviews-scraper",
"input": {
"startUrls": [{ "url": "https://www.airbnb.com/rooms/10104462" }],
"maxReviewsPerListing": 5,
"sortBy": "most-recent",
"locale": "en-US"
},
"waitSecs": 45,
"callOptions": { "maxTotalChargeUsd": 0.05 }
}It took 5.3 seconds. Guests are private people, so they appear as [guest n] here:
| Date | Stars | Guest | Stay | Review, opening words |
|---|---|---|---|---|
| 2026-10-10 | 5 | [guest 1] | About a week | This apartment was awesome. They left me a small gift upon arrival and they were extremely responsive with my questions. |
| 2026-10-02 | 5 | [guest 2] | — | Great location and hosts, super helpful and responsive and a great way to experience Lisbon for the first time! |
| 2026-09-22 | 4 | [guest 3] | A few nights | Great stay overall. No issues for us as we are okay with climbing stairs (as one must do when they are in Portugal) |
| 2026-09-20 | 5 | [guest 4] | A few nights | Polecam |
| 2026-09-09 | 5 | [guest 5] | — | Brilliant location, gorgeous historical building, excellent host, fantastic place to stay in Lisbon |
The agent's answer: an average of 4.8 stars, and the only caveat was stairs, mentioned in the one four-star review. None of the five had a host reply. Cost: 5 × $0.00302 = $0.0151 at list price. Both runs together came to $0.02805 at list price; our account was billed $0.02244 after its plan's Store discount.
Prompts that work well
Give the agent the Actor, the dates, the size of the job and a cap:
- "Use scrapely to compare Airbnb prices in Porto, Lisbon and Seville for 2 adults, 12 to 15 March, 20 listings each, and give me the median total per city."
- "Run roamandroof/airbnb-scraper on this Airbnb search URL and keep only Superhost listings rated 4.9 or higher."
- "Get the 50 most recent reviews of these three listings and summarize the complaints by theme."
- "Pull this listing's reviews in German with locale de-DE, newest first, since 1 January 2026."
- "Stop each run at $0.25."
The agent puts the last line into callOptions.maxTotalChargeUsd, and the run ends cleanly at that amount.
What to watch out for with Airbnb data
- Prices belong to the dates. A total is what Airbnb showed for those dates and that guest count. Change either and you need a new run; for price tracking, schedule the same input.
- Fee lines appear only when Airbnb sends them.
price.labelis the figure from the search result. Our five rows had a nightly base price but no service fee, cleaning fee or taxes. - One search shows about 200 to 270 listings. The run's status says when a search ran out. For a whole city, add neighborhoods or price bands as separate searches.
- Reviews have their own edges. Hosts' reviews of guests aren't public, and Experiences aren't covered. Relative dates such as "2 weeks ago" depend on the day you run it, so use
createdAt. Thelanguagefield is what Airbnb reports: a one-word Polish review in our run came back taggeden. - Private or removed listings are skipped, and a search with no matches simply returns zero rows.
- Hosts and guests are personal data. Many hosts rent out their own home, and reviews carry first names and hometowns. Keep only the fields you need, and never publish the address of a private home.
Spending limits when the agent runs alone
- A per-run cap.
maxTotalChargeUsdlimits everything a run can cost, and the run stops when it reaches the cap. - A key just for the agent. Under Settings → API & Integrations → API keys, create a scoped key with
actors:runandruns:readand a daily charge limit. - Prepaid usage. Runs draw from your balance, so there's never a surprise bill.
Is it legal to scrape Airbnb with an AI agent?
Both Actors read listing and review data that anyone can see without an account, and they never log in or book. Airbnb's terms set their own rules on automated access, and how they apply depends on where you are and how you use the data. Treat host and guest details as personal data under the GDPR and the CCPA, with a lawful basis and short retention. Our Airbnb scraping guide quotes the terms and covers the legal side in more depth. This is not legal advice.
The same agent setup works for other property data: see Zillow MCP for homes for sale, our guide to real estate data scraping, and review monitoring for keeping an eye on reviews over time.
FAQ
Does Airbnb have an MCP server?
Not one that showed up on Google's first page on 26 October 2026. The top result is the community-built openbnb-org/mcp-server-airbnb, and the rest are directories, host software and scraping platforms. Scrape.ly's hosted server gives an agent Airbnb listings and reviews through two Store Actors.
Can Claude search Airbnb?
Yes, once it has the tools. Connect Claude Code or Claude Desktop to https://mcp.scrape.ly, ask for stays in a city with dates and guests, and Claude runs the Airbnb Scraper and answers from the rows it gets back.
Can my agent read Airbnb reviews?
Yes. The Airbnb Reviews Scraper returns every review Airbnb shows on a public listing, with the star rating, date, original text, a translation in the locale you pick, the stay length and the host's reply when there is one.
Can the agent book a stay?
No. Both Actors read public pages and never sign in, so booking, messaging hosts and anything in your Airbnb account stay with you.
How much does an Airbnb MCP setup cost?
The server is free. Listings cost $2.59 per 1,000 and reviews $3.02 per 1,000, platform usage included. Our two runs came to $0.028 at list price, and the free plan includes $5 every month.
Do I need the Airbnb API?
No. The Actors read public listing and review data, so you don't need an Airbnb partner account or API key, only a Scrape.ly account.




