关于 HasData Yellow Pages
HasData Yellow Pages 是面向本地商家研究和线索整理的托管式 MCP 服务,可按关键词和地点搜索商家,并读取完整商家详情。它从 Yellow Pages 美国和加拿大公开页面提取结构化 JSON。
主要功能
- 01按关键词和地点搜索商家
- 02按距离、评分或名称排序
- 03读取电话、地址和营业时间
- 04查看服务、品牌和付款方式
- 05获取商家照片与详情
适用场景
- 01整理某城市的潜在客户名单
- 02比较本地商家的评分
- 03查询商家的服务项目和品牌
- 04收集商家电话与营业时间
MCP 相关
该托管远程服务向 MCP 客户端提供只读的 Yellow Pages 商家搜索与详情工具,并提供排序和站点选项资源。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.hasdata.com/mcp?apis=yellowpagesclaude mcp add --transport http com-hasdata-yellowpages https://mcp.hasdata.com/mcp?apis=yellowpages{"mcpServers":{"com-hasdata-yellowpages":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=yellowpages"}}}在 Cursor 中打开{"servers":{"com-hasdata-yellowpages":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=yellowpages"}}}在 VS Code 中打开{"mcpServers":{"com-hasdata-yellowpages":{"type":"http","url":"https://mcp.hasdata.com/mcp?apis=yellowpages"}}}{"mcpServers":{"com-hasdata-yellowpages":{"serverUrl":"https://mcp.hasdata.com/mcp?apis=yellowpages"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.hasdata.com/mcp?apis=yellowpages需要授权工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pets | number | 否 | 宠物数量。 |
| neLat | number | 否 | 地图边界框东北角的纬度。提供全部四个边界框坐标后,将在框内搜索房源,而不是按位置搜索。 |
| neLng | number | 否 | 地图边界框东北角的经度。 |
| swLat | number | 否 | 地图边界框西南角的纬度。 |
| swLng | number | 否 | 地图边界框西南角的经度。 |
| adults | number | 否 | 成人数量。 |
| checkIn | string | 是 | 房源的入住日期。 |
| infants | number | 否 | 婴幼儿数量。 |
| checkOut | string | 否 | 房源的退房日期。 |
| children | number | 否 | 子女数量。 |
| location | string | 否 | 用于搜索房源的地点。除非提供完整地图边界框(neLat、neLng、swLat、swLng),否则必填。 |
| nextPageToken | string | 否 | 用于获取下一页结果的令牌。 |
详细介绍
Yellow Pages MCP 服务
托管式 Model Context Protocol(MCP)服务,为 Claude、Cursor、Windsurf 和任何其他 MCP 客户端提供两个只读的 Yellow Pages 工具。按关键词和地点搜索本地商家,然后查看单条商家信息的完整内容,包括电话、营业时间、服务和照片,均以结构化 JSON 返回,无需托管任何内容。
它读取 yellowpages.com 和 yellowpages.ca 上未登录访客可以查看的公开 Yellow Pages 商家信息。
每月免费获得 1,000 个积分,无需信用卡,按每次调用 10 个积分计算,可调用 Yellow Pages 100 次。
https://mcp.hasdata.com/mcp?apis=yellowpages
目录
准备工作
你需要一个 MCP 客户端,以及从控制面板获取的 HasData API 密钥。注册免费,无需信用卡;免费套餐按每次调用 10 个积分计算,每月可满足约 100 次调用。这是一个远程服务,因此最简单的接入方式是使用 URL 和 x-api-key 标头,无需运行容器。仅支持 stdio 的客户端可通过一个轻量启动器连接该服务;启动器已发布到 npm,包名为 @hasdata/yellowpages-mcp,也发布到 PyPI,包名为 hasdata-yellowpages-mcp,如下所示。
快速开始
所有客户端使用相同的服务 URL。我们会在 Claude Code 和 Claude Desktop 中手动运行。其他代码块则遵循各客户端为远程服务文档规定的格式。
| 字段 | 值 |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=yellowpages |
| 传输方式 | HTTP,可流式传输 |
| 身份验证标头 | x-api-key: HASDATA_API_KEY |
支持 OAuth 的客户端可以将相同的 URL 添加为连接器,然后登录,无需将密钥放入配置文件。
Claude Code
claude mcp add --transport http yellowpages "https://mcp.hasdata.com/mcp?apis=yellowpages" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
依次选择 Settings、Connectors、Add custom connector,然后粘贴 https://mcp.hasdata.com/mcp?apis=yellowpages 并登录。
对于配置文件方式,Claude Desktop 只能加载本地(stdio)服务,因此需要通过 stdio 启动器连接远程服务。@hasdata/yellowpages-mcp 包就是这个启动器,它会从环境变量中读取密钥。将以下内容添加到 claude_desktop_config.json:
{
"mcpServers": {
"yellowpages": {
"command": "npx",
"args": ["-y", "@hasdata/yellowpages-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
如果使用 Python 而不是 Node,可将启动器替换为 PyPI 包,uvx 无需手动安装即可运行该包:
{
"mcpServers": {
"yellowpages": {
"command": "uvx",
"args": ["hasdata-yellowpages-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Cursor
适用于所有项目的 ~/.cursor/mcp.json,或仅适用于一个项目的 .cursor/mcp.json:
{
"mcpServers": {
"yellowpages": {
"url": "https://mcp.hasdata.com/mcp?apis=yellowpages",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json。Windsurf 将该字段称为 serverUrl,而不是 url:
{
"mcpServers": {
"yellowpages": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=yellowpages",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
VS Code
工作区中的 .vscode/mcp.json:
{
"servers": {
"yellowpages": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=yellowpages",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
示例提示词
以下每个提示词都会调用一个工具;如果第二个工具需要第一个工具返回的 URL,则会依次调用两个工具。
- 查找德克萨斯州奥斯汀的水管工,并根据评分和评论数对他们进行排名。
- 列出这个邮政编码区域内所有提供电话号码和营业时间的 HVAC 承包商。
- 这些企业中,哪些经营时间超过 20 年?
- 阅读这条 Yellow Pages 商家信息,并告诉我他们提供哪些品牌的服务。
- 获取奥斯汀屋顶承包商搜索结果的第 2 页和第 3 页,并将它们合并为一个列表。
- 按平均评分而不是相关性对这座城市的牙医进行排序。
提示词中提到细分行业和城市时,会调用搜索工具。读取服务项目、品牌和付款方式时,每家企业都需要额外调用一次,因此潜在客户列表适合使用搜索工具,而信息补全则适合使用地点工具。
工具
| 工具 | 返回内容 |
|---|---|
hasdata_yellowpages_place_getPlaceDetails | 抓取单个 YellowPages 商家信息 URL,并返回企业名称、完整地址、电话、网站、类别、经营年限、营业时间、评分等内容。每次调用消耗 10 个积分 |
hasdata_yellowpages_search_getSearchResults | 每家企业的名称、商家信息 URL、电话、地址、类别、评分、评论数和经营年限。每次调用消耗 10 个积分 |
两个工具,每次成功调用消耗 10 个积分。
获取 Yellow Pages 搜索结果
hasdata_yellowpages_search_getSearchResults
按关键词和地点搜索商家,每页 30 条。
| Parameter | Type | Required | Notes |
|---|---|---|---|
keyword | string | yes | 要搜索的内容,例如 plumber |
location | string | yes | 搜索地点,例如 Austin, TX |
sort | string | default、distance、averageRating 或 name | |
domain | string | www.yellowpages.com 或 www.yellowpages.ca | |
page | number | 结果页码,从 1 开始 |
返回的内容包括带有回显查询和 totalResults 的 searchInformation、organicResults 数组,以及包含 currentPage、totalPages、perPage、nextPageUrl 和 otherPageUrls 的 pagination。
结果中的绝大多数字段都是可选的,因为 Yellow Pages 会显示各商家付费填写或自行填写的内容。在示例的 30 条结果中,所有结果都包含 title、phone、url、categories、country 和 position;22 条包含 address,11 条包含 rating 和 reviews,5 条包含 contactUs。读取时应做好兼容处理,不要假设字段结构固定。
{
"position": 2,
"title": "Clarke Kent Plumbing",
"url": "https://www.yellowpages.com/austin-tx/mip/clarke-kent-plumbing-10674347?lid=1002194068759",
"phone": "(512) 766-0970",
"address": "1408 W Ben White Blvd",
"city": "Austin",
"region": "TX",
"zipcode": "78704",
"country": "US",
"website": "http://www.clarkekentplumbing.com",
"directions": "https://www.yellowpages.com/listings/1002194068759/directions",
"categories": ["Plumbers", "Plumbing-Drain & Sewer Cleaning"],
"rating": 2.87,
"reviews": 15,
"workingHours": ["Mo-Fr 09:00-17:00"],
"openState": "open now",
"badges": ["40 Years in Business", "1 Year with Yellow Pages"]
}
获取 Yellow Pages 地点详情
hasdata_yellowpages_place_getPlaceDetails
通过 Yellow Pages 网址获取某条完整商家信息。
| Parameter | Type | Required | Notes |
|---|---|---|---|
url | string | yes | 商家信息的网址,由搜索工具返回 |
返回四个区块,而不是一个扁平对象。
overview 会重复提供名称、地点、电话、营业时间、徽章和网站,并添加 paymentAccepted 以及一个 breadcrumbs 数组,用于展示该商家信息在 Yellow Pages 分类体系中的位置。ratings 包含星级评分。details 包含商家撰写的详细介绍。images 是照片网址数组。
补充信息主要来自 details 区块,其中的内容以逗号分隔的文本形式返回,而不是数组。generalInfo 是商家简介,servicesProducts 是服务列表,brands 是其经营的品牌,paymentMethod 是可用的付款方式,categories 则是以一个字符串形式提供的完整分类列表。
{
"overview": {
"title": "ARS Rescue Rooter",
"phone": "(833) 947-9225",
"city": "Austin",
"region": "TX",
"zipcode": "78754",
"workingHours": ["Mo-Su"],
"openState": "Open 24 hours",
"paymentAccepted": "visa, amex, master card",
"badges": ["1 Year with Yellow Pages"],
"breadcrumbs": ["TX", "Austin", "Building Contractors", "Plumbers"]
},
"ratings": { "rating": 3.5 },
"details": {
"generalInfo": "ARS/Rescue Rooter has a proven track record of providing reliable, long-lasting repair services...",
"servicesProducts": "Air Conditioner Repair and Replacement, Air Duct Repair and Replacement, Air Filter Installation...",
"brands": "Goodman, Mitsubishi, Bosch, Diakin, Bradford White, April Aire Indoor Air Quality",
"paymentMethod": "visa, amex, master card"
},
"images": ["https://i4.ypcdn.com/blob/ce73451958465ab47dd7be41922973a98bc847af_640.jpg"]
}
提示词和资源
服务提供 2 个资源,每个资源对应一个取值范围固定的参数。读取资源比从被拒绝的调用中了解可用选项更省事,而且不消耗额度。每个 URI 的格式都是 hasdata://yellowpages/<parameter>。
| Parameter | Values | What it selects |
|---|---|---|
sort | 4 | 搜索结果的排序选项。 |
domain | 2 | 要使用的 YellowPages 域名。默认值为 www.yellowpages.com。 |
无需 API 密钥即可获取列表,因此客户端可以在用户注册前读取。
错误和失败路径
请为这些情况做好准备,不要假设一切都会顺利。
要获取评论数,请读取搜索结果,而不是地点详情。 在搜索工具中,rating 和 reviews 与字段名称一致,例如 2.87 和 15。在我们检查的所有列表中,地点工具返回的 ratings.reviews 都与 ratings.rating 相同,因此它不包含评论数。请从搜索结果中获取该数字,再补充其他信息。
地点响应中可能完全没有 ratings。 我们获取的 4 个列表中,有一个完全没有这个区块,而不是返回空区块。
details 字段是以逗号连接的字符串,而且 categories 在不同工具中的类型不同。 搜索结果中的 categories 是数组,而 details 中的 categories 是单个字符串。如果需要列表,请按逗号拆分,并注意某些类别名称中也可能含有逗号。
website 有时会指向 Yellow Pages。 有些列表会在本应填写商家自有网站的字段中提供 yellowpages.com 跟踪 URL。访问或保存前,请检查主机名。
营业年数是徽章,不是字段。 badges 混合了两种内容:商家经营年限,例如 "40 Years in Business",以及商家付费使用 Yellow Pages 的年限,例如 "11 Years with Yellow Pages"。请根据文字判断,而不要只看第一个数字。
不一定能获取街道地址。 在 30 条结果中,只有 22 条的 address 包含街道地址;city、region 和 zipcode 则作为独立字段随之返回。请根据已有信息拼出地址。
openState 表示调用时的状态。 它会根据请求运行时的情况返回 closed 或 Open 24 hours,因此只是状态快照,并非商家的固定属性。workingHours 才是长期有效的字段。
分页通过 URL 进行,而且查询可能很长。 对某个城市和关键词的查询中,pagination.totalPages 曾达到 17 页,每页 30 条结果。成本会随页数增加,因此在遍历所有页面前,请先缩小关键词范围。
包含数据的结果也会包含一个值得在寻求支持时提供的 requestMetadata.id。
定价、免费套餐和限制
每次成功调用 Yellow Pages 工具需 10 个额度点。响应大小不会影响价格,因此包含 30 家商家的页面与单条商家详情的费用相同。
免费套餐每月提供 1,000 个额度点,无需绑定银行卡,按基础费率可调用 Yellow Pages 100 次。额度会随计费周期续期,因此低调用量的 Agent 可以无限期使用免费套餐。
付费套餐起价为每月 $59,包含 200,000 个额度点,即 20,000 次调用。用量越大,单价越低:入门套餐每 1,000 次调用为 $2.95,Basic 套餐为 $1.19,Growth 各档套餐为 $0.83。最新价格请查看定价页面。
套餐还会决定并发数。免费套餐允许同时发起 1 个请求,Startup 为 5 个,Basic 为 15 个,Growth 各档套餐则为 50 到 500 个。对于无人值守的任务,请在遇到 429 错误时采用退避策略重试,因为当 Agent 为一页商家补充信息时,会比你更早触及上限。
非 200 响应不会计费。即使成功调用未找到任何结果,也仍会计为一次调用。
工具选择
从提示词提供的信息出发。细分行业和城市应使用搜索工具;Yellow Pages URL 则直接交给地点工具。
然后权衡需要补充的信息。搜索结果已包含名称、电话、地址、类别、营业时间、徽章,以及 Yellow Pages 展示时提供的评分和评论数。这些信息足以通过一次调用完成潜在客户名单、覆盖数量统计或评分比较。地点工具还会提供描述、服务列表、品牌和照片,并且每家商家都需要调用一次,因此为 30 家商家补充信息需要 300 个额度点,而搜索页面只需 10 个。
如果问题涉及排序,请在服务端排序。sort: averageRating 只需一个参数;若要在本地排序,则需要拉取多个页面,也就需要多次调用。
对比
Yellow Pages 没有公开 API,因此现实可行的替代方案是两种大型本地数据 API。
| Google Places API | Yelp Fusion API | 此服务 | |
|---|---|---|---|
| 使用资格 | 已启用计费的 Google Cloud 项目 | 已获批准的开发者应用 | 一个 API 密钥 |
| 服务和品牌 | 不返回 | 不返回 | details 区块 |
| 付款方式 | 不返回 | 部分返回,以属性形式呈现 | 按原文返回 |
| 营业年限 | 不返回 | 不返回 | 在 badges 中 |
| 照片 | 需单独调用并付费 | 随结果提供 | URL 数组 |
| 加拿大 | 覆盖 | 覆盖 | yellowpages.ca |
| 覆盖范围 | 最广 | 偏重消费者 | 技工和服务 |
决定性差异在于商家如何介绍自己。Google 和 Yelp 返回结构化记录,而 Yellow Pages 返回承包商自己撰写的服务、品牌和付款方式介绍,这正是建立技工潜在客户名单所需要的信息。在覆盖范围、营业时间准确性和消费者类别方面,Google Places 是更好的数据源。
常见问题
有官方的 Yellow Pages MCP 服务吗?
Yellow Pages 没有发布官方 MCP 服务,也没有发布公开 API。这个服务由 HasData 维护,读取 Yellow Pages 上的公开商家信息。
什么是 Yellow Pages MCP 服务?
MCP 服务会提供 AI 客户端可调用的工具。这个服务会将 Yellow Pages 搜索结果和商家信息转换为 Agent 能够处理的 JSON,无需在技术栈中使用浏览器或抓取库。
我需要 Yellow Pages 账户吗?
不需要。唯一需要的凭据是你的 HasData 密钥。
覆盖哪些国家?
美国的 www.yellowpages.com 和加拿大的 www.yellowpages.ca。传入 domain 即可切换。
为什么有些结果缺少某个字段?
因为 Yellow Pages 展示的是各商家填写或付费提供的信息。在我们的样本中,30 条结果里有 11 条包含评分,22 条包含街道地址。除名称、电话、URL 和类别外,其他所有字段都应视为可选。
如何获取评论数?
从搜索结果中获取,其中的 reviews 表示评论数。地点工具的 ratings.reviews 与评分相对应,而不是评论数,因此不能用这个字段。
我可以将此服务与其他 HasData API 一起使用吗?
可以。一个密钥即可使用所有 API,并且所有 API 都通过 apis 参数由同一个端点提供。将客户端指向 ?apis=yellowpages,google_maps,即可在一个连接中获取两组工具;也可以指向 mcp.hasdata.com/mcp 获取完整目录。
HasData 与 Yellow Pages 有关联吗?
没有。HasData 是独立服务,与 Thryv 或 Yellow Pages 品牌没有关联,也未获得其认可或赞助。Yellow Pages 是其各自所有者的商标。这些工具仅处理公开数据;你有责任按照该网站的条款和适用于你的法律使用结果。
合规与个人数据
这些商家信息属于商业记录,显而易见的用途是建立潜在客户名单。需要谨慎处理的是,拨打或发送短信至你收集的电话号码,受到与收集这些号码不同的法规约束。在美国,《电话消费者保护法》(TCPA)规范拨打和发送短信至这些号码的行为,在若干方面也包括企业号码;此外还适用美国联邦贸易委员会(FTC)的电话营销规则。个体经营者的商家信息也可能包含其本人姓名和手机号码,因此既是商业记录,也是个人数据。收集名单很容易,因此在开展外联之前,请先确认你可以如何使用这些信息。
HasData 链接
- Yellow Pages Scraper API,这些工具所调用的 REST 端点
- API 文档
- MCP 服务文档
- 定价
- 控制台
其他 HasData MCP 服务:Google Maps、Yelp、Google Search、Google Trends、Google Flights、DuckDuckGo、YouTube、TikTok、Instagram、Amazon、Walmart、Shopify、Zillow、Redfin、Airbnb、Booking.com、Indeed、Glassdoor。
开发
启动器是连接到远程服务的轻量级 stdio 桥接,因此无需构建。
npm install
HASDATA_API_KEY=your_key_here npm test
test/ 中的测试用于断言工具契约,也就是无需在此提交代码就可能发生变化的部分。它们会检查 ?apis=yellowpages 是否返回预期数量的工具、工具名称是否都未更改、每个工具是否仍声明必需参数并附带描述、sort 是否仍提供四种排序方式,以及正在使用的密钥是否确实有效。最后一项会实际调用一个工具,耗费 10 个额度;这是为了一项可能因正当原因而失败的金丝雀检查。
有一项测试会断言,实时搜索结果中,凡是有真实评论数的结果,仍会包含该评论数。README 之所以让读者通过搜索工具获取这个数字,正是因为地点工具不会提供该数字;而这条建议只有在该字段仍然存在时才成立。
契约测试套件也会按计划每周运行一次,因为上游工具列表可能在无人修改此仓库的情况下发生变化。
贡献
如果工具表、响应示例或文档所述行为与实际情况不符,欢迎提交 issue。我们专门为此提供了模板。也欢迎提交相应的拉取请求,以及针对启动器的任何改进。
许可证
MIT,详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。