Skip to main content
Glama

Airbnb MCP Server

为 Claude、Cursor、Windsurf 以及任何其他 MCP 客户端提供两个只读 Airbnb 工具的托管式 Model ExpoProtocol (MCP) 服务器。它按位置和日期搜索房源,以及完整读取单个房源,所有结果均以结构化 JSON 返回,无需 Airbnb 开发者账号,无需合作方审批。

它读取的是未登录访客观看时能看到的公开页面。

https://mcp.hasdata.com/api/mcp?apis=airbnb

Glama score tool contract MCP Tools License

目录

Related MCP server: lilo-vacation-rentals

你需要什么

一个 MCP 客户端和一枚来自 dashboard 的 HasData API 密钥,免费创建,不需要信用卡,且试用额度按 5 积分/次的费率大约覆盖 200 次调用。本服务器是远程服务器,所以最简便的方式是使用一个 URL 和 x-api-key 请求头,全程无需运行容器,也不需要 Airbnb 开发者账号。只支持 stdio 的客户端可通过一个轻量启动器连接,分别以 @hasdata/airbnb-mcp(npm)和 hasdata-airbnb-mcp(PyPI)发布,见下文。

快速开始

对所有客户端而言服务器 URL 相同。我们在 Claude Code 和 Claude Desktop 中亲自运行演示。下面其他模块遵循各客户端自身文档中关于远程服务器的格式。

字段

URL

https://mcp.hasdata.com/api/mcp?apis=airbnb

传输方式

HTTP, streamable

认证请求头

x-api-key: HASDATA_API_KEY

支持 OAuth 的客户端可以把同一 URL 添加进来直接登录,无需在配置文件中放置密钥。

claude mcp add --transport http airbnb "https://mcp.hasdata.com/api/mcp?apis=airbnb" \
  --header "x-api-key: HASDATA_API_KEY"

进入设置,然后进入 Connectors,再选择 Add custom connector,粘贴 https://mcp.hasdata.com/api/mcp?apis=airbnb 并登录。

对于配置文件方式,Claude Desktop 只加载本地(stdio)服务器,因此需要通过 stdio 启动器访问远程服务器。@hasdata/airbnb-mcp 就是这个启动器,它从环境中读取密钥。请将以下内容添加到 claude_desktop_config.json

{
  "mcpServers": {
    "airbnb": {
      "command": "npx",
      "args": ["-y", "@hasdata/airbnb-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

如果使用 Python 而不是 Node,只需用 PyPI 包替换启动器,uvx 无需手动安装即可运行:

{
  "mcpServers": {
    "airbnb": {
      "command": "uvx",
      "args": ["hasdata-airbnb-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

~/.cursor/mcp.json 用于所有项目,或者 .cursor/mcp.json 用于单个项目:

{
  "mcpServers": {
    "airbnb": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=airbnb",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json。在 Windsurf 中,字段名是 serverUrl,而不是 url

{
  "mcpServers": {
    "airbnb": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=airbnb",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

.vscode/mcp.json(放置在工作区内):

{
  "servers": {
    "airbnb": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=airbnb",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

示例提示

提示词,而不是代码。粘贴一条即可,智能体自行选用工具。每条提示都标注了需要多少调用,因为每次成功调用都耗费 5 积分。

搜索奥斯汀两位成年人 9 月 15 日至 18 日的房源,并把每晚 200 美元以下、评分最高的十家发给我。

一次调用,5 积分。评分和每晚价格随搜索结果返回。

取第一条结果,拉取它的完整设施列表、住客数和卧室数量,以及房东详细信息。

一次调用,5 积分。这些内容位于房源详情页,由详情工具根据 URL 读取。

比较奥奥斯汀与纳什维尔两位客人三天每人晚的价格。

两次调用,10 积分,每个城市搜索一次。

针对这个房源 URL,告诉我它有几张床、几间浴室,以及房东是否为超牌房东。

一次调用,5 积分。

搜索结果刻意保持简洁,足够用于排名和初筛。设施、床铺、房东和完整描述都来自房源详情调用,因此一个“先筛选,再查看三家房源”的提示就是一次搜索加三个房源详情调用。

工具

两个工具,只读。以下示例来自真实调用并做了裁剪,具体数值会随 Airbnb 的更新而变化。请把它们视为结构示例。每个工具名称都链接到其终端参考页面,里面有完整的字段列表。

示例只是 payload,不是完整响应。tools/call 的结果包含一个文本块,这个文本本身是 JSON,其中包含 urlstatustextjson,爬取的数据位于 json 之下。从原始 JSON-RPC 响应看,路径依次是 result.content[0].text,解析后再到 .json。聊天客户端会为你解开这一层,而直接访问接口的代码不会。

获取 Airbnb 房源列表

hasdata_airbnb_listing_getAirbnbListings

按位置和日期返回一页搜索结果。

参数

类型

必填

说明

location

string

要搜索的地点,如 Austin, Texas

checkIn

string

入住日期,YYYY-MM-DD

checkAndOut

string

退房日期,YYYY-MM-DD,工作人员

adults / children / infants / pets

number

住客组成,每一项都是一个数量

nextPageToken

string

上一次响应中的 pagination.nextPageToken

返回一个 properties 数组和 pagination,其中 nextPageTokenpageTokens 可继续翻页。每个属性项包含 idurltitlelatitudelongitude、一段短的描述性文字 description、一个 photos 数组、ratingreviewsbadges 数组(如 Guest favoriteSuperhost)以及一个 price 对象。price 保存 originalPrice、当民宿有折扣时的可选 discountedPricequalifier(如 : for 3 nights)和 breakdown

搜索结果刻意简化。床、浴室、设施、房东以及完整描述不在其中,这些来自下面的房源详情工具。不要指望搜索结果中会给出床位数量。

{
  "id": "17545365",
  "url": "https://www.airbnb.com/rooms/17545365",
  "title": "Home in East Austin",
  "latitude": 30.25741,
  "longitude": -97.73366,
  "description": "Downtown Casa - neighborhood feel, close to it all",
  "rating": 4.87,
  "reviews": 601,
  "badges": ["Guest favorite"],
  "price": {
    "originalPrice": "$607",
    "discountedPrice": "$447",
    "qualifier": "for 3 nights",
    "breakdown": [{ "description": "3 nights x $149.00", "price": "$447.00" }]
  }
}

获取 Airbnb 房源详细息

has_airbnb_property_getAirbnbPropertyDetails

按 URL 完整返回一个房源。

参数

类型

必填

说明

url

string

一个 Airbnb 房源 URL,即搜索结果中返回的 url 参数

返回值包括 title、一个 overview 数组(如 ["各位 guests", "2 bedrooms", "2 beds", "2 bath"])、完整的 descriptionratingreviewsaddresslatitudelongitude、一个 photos 数组、guestCapacity、一个 host 对象、一个 amenities 数组和 safetyAndPropertyInfohost 对象还包含 nameisSuperhostisVerified、房东自己的 reviewsrating 以及 yearsHosting。每项设施都带有 titletype、可选的 description 以及一个 available 标志,因此过滤时应读取 available,而不是假设所有列出的设施都可用。

{
  "id": "17545365",
  "title": "Downtown Casa - neighborhood feel, close to it all",
  "overview": ["4 guests", "2 bedrooms", "2 beds", "2 baths"],
  "rating": 4.87,
  "reviews": 601,
  "address": "Austin, Texas, United States",
  "guestCapacity": 4,
  "host": { "name": "Deanna", "isSuperhost": true, "isVerified": true, "reviews": 1273, "rating": 4.86, "yearsHosting": 11 },
  "amenities": [
    { "title": "Wifi", "type": "SYSTEM_WI_FI", "available": true },
    { "title": "Free washer – In unit", "type": "SYSTEM_WASHER", "available": true }
  ]
}

错误和失败路径

你的客户端几乎不会从工具调用中看到 HTTP 错误码。MCP 层会返回 200,并把失败放在结果内部,isError 设为 true,原因作为文本附加。代理会读到一条讯息,而不是你预期的状态行。

错误的密钥是以工具输出暴露,而不是连接失败。 tools/list 接受任何非空密钥并返回两个工具,因此客户端完成握手并显示绿灯。第一次工具调用后返回 isError: true 和文本 HasData API error: If 401 Unauthorized`。请留意该字符串,因为流程中更早的位置不会dos报告这个问题。

密钥缺失是唯一一个真正的 HTTP 错误。 授权在任何工具调用之前执行,连接本身以 401 失败。CORS 头存在,浏览器客户端读到的是状态码,而不是不明的网络错误。

一个违反工具 schema 的参数会字被爬取前拒绝。 服务器返回 isError: true 和文本 MCP error -326登录: Input validation error,并指出出错的字段。什么都不会被抓取,什么都不会计费。

一个无可用房源的搜索会以正常结果返回,其中 properties 数组为空时,而不是错误。 一个没有可订房源的 locations and date range 仍然回 requestMetadata.statusok。遍历之前请检查数组长度。

一个已从平台移除的房源返回 400,requestMetadata.statuserror 旧搜索结果中的 URL 可能指向已下架的房子。

包含数据的响应还会携带 requestMetadata.id,值得在支持工单中引用。

定价、免费套餐与限额

每个 Airbnb 工具每次成功调用消耗 5 积分。响应大小不改变价格。包含几十个房源的搜索页和只有两个房源的搜索页费用相同。

免费试用的额度为 无卡可用、30 天内 1,000 积分,相当于 200 次 Airbnb 调用。之后,只要账户余额低于 100 积分,活跃账户每天会自动补充 100 积分,因此一个低流量代理可以无限期地在免费套餐上运行。

付费方案起价为 每月 $49 美元,包含 200,000 积分,即 40,000 次调用。单价随着用量增大而降低:入门方案 每 1,000 次调用 $1.23,Business 方案 $0.50,Growth 方案 $0.42,最大容量 高用量方案 $0.37。

你的套餐还决定并发量。免费试用一次只允许 1 个请求,Startup 为 15,Business 为 30,Growth 为 50,高用量方案从 200 到 1,500。在任何无人值守的脚本中,请防御性地处理超过并发上限的情况。

非 200 响应不收取费用。成功调用但未找到内容仍算一次调用。

工具选择

apis 查询参数决定可选用的 agent 能看到哪些工具。工具越少,模型在工具定义上花费的上下文越少,也越不容易调用错误的工具。

?apis=airbnb                     the two tools in this repo
?apis=airbnb,booking             add Booking.com stays
?apis=airbnb,google_maps         add Google Maps places

该参数接受提供商名称(如 airbnb)和单 API 名称(如 airbnb_listing)。拼写错误的名称会被忽略。如果全部名称都错误,请求会以 400 代码失败,并且响应体里同时列出它无法识别的名称和所有合法值。省略后,同一端点会暴露全部 57 个 HasData 工具。

对比

Airbnb 没有公开的搜索 API。其 API 计划是面向合作伙伴和共同房东的集成,用于管理你自己的房源,而不是用来读取市场。要搜索房源和读取任意房源,抓取公开页面是唯一的途径,而本服务器在一个稳定 schema 后面完成这项工作。

Airbnb 合作伙伴 API

本服务器

用途

管理自有房源

读取公开市场

访问权限

需 Airbnb 批准

一个密钥和一个 URL

搜索整个市场

设置

商务入驻

无需设置

输出

合作伙伴数据负载

结构化 JSON,价格和评分已预解析

本服务器不做什么。 不提供预订、不提供发消息、没有房东仪表盘、也不涉及访客数据。它只读取未登录访客可以看到的公开内容。

常见问题

是否有官方的 Airbnb MCP 服务器?

没有。Airbnb 并没有发布官方的 MCP 服务器。本服务器由 HasData 维护,读取的是公开页面,所以无需 Airbnb 开发者账户。

什么是 Airbnb MCP 服务器?

这种服务器把 Airbnb 数据以工具的形式暴露给 AI 客户端调用。客户端通过模型上下文协议(Model Context Protocol)发送工具调用,服务器获取数据并返回结构化 JSON,然后模型处理返回结果。此服务器提供两个工具,并远程运行。

我需要 Airbnb API 密钥或合作伙伴账户吗?

不需要。唯一的凭证就是你的 HasData 密钥。没有合作伙伴准入流程,因为这些工具读取的是 Airbnb 公开页面。

为什么搜索结果没有显示床位或配套设施?

因为 Airbnb 没有把这类信息放到搜索卡片上。它们位于房源属性页中,Details 工具会通过 URL 获取。可以先搜索以筛选候选对象,再调用 Details 工具来获取详细信息。

可以按房客、宠物或日期筛选吗?

可以。列表工具接收 checkIncheckOut,以及 adultschildreninfantspets 的计数,并返回为该人群和相应时间段提供可用性与价格。

我可以和其他 HasData API 一起使用吗?

可以。apis 参数接受一个列表,例如 ?apis=airbnb,booking 会让你的智能体获取 Airbnb 和 Booking.com 两者的结果。如果去掉参数,你会取得所有数据。去掉参数 即可获取全部数据。

合规性与个人数据

HasData 仅访问公开数据。平台的使用条款可能限制自动化访问,你有责任确保自身的合规性。当收集的数据包含个人信息时,请确保 GDPR、CCPA 或你所在辖区的相关规定,你的数据处理具备合法依据。

HasData 链接

产品页和请求生成器

Airbnb Scraper API

服务器文档

MCP Docs

在一个服务器中提供 57 个 tools

HasData/hasdata-mcp

客户端入门

MCP 客户端和集成

我们抓取的其他一切数据

Airbnb Scraper API 以及其他所有 API

付费方案和积分费用

方案和积分费用

密钥和使用

HasData 管理后台

开发

本仓库是远程 server 的配置和文档。它没有 build 步骤,也不需要容器化。

test/ 中测试检验的是工具契约——也就是即使本仓库没有任何提交也可能会发生变化的部分。它们会确认 ?apis=airbnb 确实返回两个工具,确认每个工具都声明了所需的参数,确认没有名称发生变化,并确认当前使用的密钥确实被接受。最后一项检查会真实进行一次工具调用,并消耗 5 个积分,这是同理的测试成本,可以让它因让项目进展的正确原因而失败。

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

同样的测试套件会在每次 push 时运行,并每周固定运行一次。因为上游工具列表可能在没有修改本仓库的情况下发生变化。任何失败都表示工具列表发生了变化、密钥失效的密钥,或连接不到 endpoint,而断言消息会告诉你是哪种原因。

贡献

最有效的贡献方式是修正工具表和响应示例,因为它们最容易发生漂移。请你附上自己发出的调用和得到的响应。从 fork 发起的 pull request 会在没有密钥的情况下运行测试套件,而实时的 live 检查会跳过而不是报错。

许可证

MIT。参见 LICENSE

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/airbnb-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server