Yelp Search 集成用于在 Yelp 上搜索本地商家,帮助查找服务、获取联系方式、查看评分以及检索营业时间。
用途
该工具主要用于查找本地服务类商家(如清洁、宠物美容、餐厅等),并获取其联系方式、评分、评论数量和营业时间等信息。
主要能力
- 商家搜索:按关键词和位置查找商家,支持按评分、距离、评论数量或最佳匹配排序,可按价格等级(1-4)筛选,可限制返回结果数量。
- 商家详情:获取指定商家的营业时间和详细信息。
- 电话反查:通过电话号码反向查找商家。
- 评论文本提取:可选功能,通过浏览器自动化方式提取评论文本(速度较慢,每次请求约 30-60 秒)。
- 直接抓取评论:另一种评论获取方式,使用 Browserbase 凭据和代理绕过 Yelp 的 CAPTCHA,比前者更可靠但需要 Browserbase 账户。
使用方式
配置
- Yelp API Key(必需):前往 https://www.yelp.com/developers 创建账户或登录,点击 "Create App" 并填写表单,复制 API Key,添加到 .env 文件:
YELP_API_KEY=your_api_key_here
- Browser-Use 用于评论提取(可选):仅在需要提取评论文本时使用。安装依赖:
uv add browser-use playwright langchain-openai
uv run playwright install chromium
添加到 .env:
OPENAI_API_KEY=your_openai_key_here
注意:评论提取使用 browser-use 搜索 DuckDuckGo(因为 Yelp 阻止直接抓取)。大多数情况下,API 提供的评分和评论数量已足够。
脚本
所有脚本位于 tools/yelp-search/scripts/,使用 uv run python 运行。
search.py - 查找商家(主要工具)
uv run python tools/yelp-search/scripts/search.py "search term" --location "City, State"
选项:
| 标志 | 说明 | 示例 |
|---|---|---|
| --location, -l | 城市、地址或邮编 | "San Francisco" 或 "94123" |
| --latitude/--longitude | GPS 坐标 | --latitude 37.78 --longitude -122.41 |
| --limit, -n | 结果数量(默认:5) | -n 10 |
| --sort-by | 排序方式 | rating, distance, review_count, best_match |
| --price | 价格筛选(1-4) | --price 1,2 表示仅 $ 和 $$ |
| --json | 输出原始 JSON |
示例:
# 查找评分最高的宠物美容店
uv run python tools/yelp-search/scripts/search.py "dog groomer" -l "San Francisco" --sort-by rating
# 查找附近的便宜餐厅
uv run python tools/yelp-search/scripts/search.py "restaurants" -l "94123" --price 1,2 --sort-by distance
# 在特定地址附近搜索
uv run python tools/yelp-search/scripts/search.py "laundry pickup" -l "123 Main St, San Francisco"
details.py - 获取营业时间和信息
uv run python tools/yelp-search/scripts/details.py "business-alias"
商家别名在 Yelp URL 中(例如 the-laundry-corner-san-francisco)。
phone_search.py - 电话反查
uv run python tools/yelp-search/scripts/phone_search.py "+14155551234"
get_reviews.py - 提取评论文本(慢)
uv run python tools/yelp-search/scripts/get_reviews.py "Business Name" -l "City" -n 3
注意:使用 browser-use,速度较慢(约 30-60 秒)。Yelp 阻止直接抓取,因此通过搜索 DuckDuckGo 获取缓存评论作为变通方案。
scrape_reviews.py - 直接抓取 Yelp(替代方案)
uv run python tools/yelp-search/scripts/scrape_reviews.py "https://www.yelp.com/biz/business-alias" -n 5
需要 Browserbase 凭据:
BROWSERBASE_API_KEY=your_key_here
BROWSERBASE_PROJECT_ID=your_project_id
注意:使用 Browserbase 和代理绕过 Yelp 的 CAPTCHA。比 get_reviews.py 更可靠,但需要 Browserbase 账户。
适用场景
- 查找本地服务(清洁、宠物美容、餐饮等)。
- 获取商家联系方式用于电话或短信联系。
- 根据评分和评论数量评估商家质量。
- 查找特定需求的商家(如周末营业、提供取送服务等)。
最佳实践
无评论文本时评估质量
API 提供的评分和评论数量通常已足够:
| 评分 | 评论数量 | 解读 |
|---|---|---|
| 4.5+ | 50+ | 优秀,数据可靠 |
| 4.5+ | <20 | 有潜力但数据有限 |
| 4.0-4.4 | 100+ | 良好,成熟商家 |
| <4.0 | 任意 | 需谨慎 |
查找有特定需求的服务
- 使用 --sort-by rating 获取最佳选项。
- 获取候选商家的详情以查看营业时间。
- 筛选出在需要的时间营业的商家。
- 直接联系确认具体服务(取送、配送等),因为 Yelp 不一定包含这些信息。
搜索技巧
- 使用具体关键词:"laundry pickup" 而非仅 "laundry"。
- 在地址附近搜索以获得准确距离:-l "123 Main St, City"。
- 先按评分排序,再查看结果中的距离。
- 检查评论数量——高评分但评论很少的可能不可靠。
响应数据
每个商家结果包含:
- name - 商家名称
- phone - 电话号码(用于短信/电话)
- rating - Yelp 评分(1-5 星)
- review_count - 评论数量
- price - 价格等级($ 到 $$$$)
- location - 完整地址
- hours - 按天营业时间(在详情中)
- distance - 距搜索位置的距离
- categories - 商家类别
- is_open_now - 当前营业/关闭状态
限制
| 功能 | 状态 | 说明 |
|---|---|---|
| 商家搜索 | ✅ 可用 | 快速、可靠 |
| 商家详情 | ✅ 可用 | 包含营业时间 |
| 电话查询 | ✅ 可用 | 反向搜索 |
| 评论文本(API) | ❌ 仅付费 | 需要企业级套餐 |
| 评论文本(抓取) | ⚠️ 慢 | browser-use 通过 DuckDuckGo 的变通方案 |
- 免费 API 额度:每天 500 次调用。
- 每次请求结果限制为 50 条。
- 部分商家信息(取送/配送)不在 API 中——需直接联系。