关于 sales-outscraper
为需要使用 Outscraper 的销售、开发和研究人员提供平台操作指导,涵盖企业数据抓取、评论提取、联系人丰富和邮箱验证。内容也涉及 API、SDK 与异步结果处理。
主要功能
- 01抓取 Google Maps 商家数据
- 02提取评论与网站联系信息
- 03丰富联系人及公司资料
- 04验证邮箱投递状态
- 05指导 API、SDK 与 Webhook 使用
适用场景
- 01按地区整理目标商家名单
- 02收集并分析商家评论
- 03为潜在客户补充联系信息
- 04将异步抓取结果接入工作流
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sales-skills/ sales --skill sales-outscraper安装后在 Claude Code 中输入/sales-outscraper确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/learnings.mdoutscraper-api-reference.mdplatform-guide.md详细介绍
Outscraper 平台帮助
帮助用户解答 Outscraper 平台相关问题,涵盖 Google Maps 抓取和评论提取、电子邮件/联系信息抓取、潜在客户信息丰富、公司洞察、电子邮件验证、Amazon 抓取、评论平台抓取、地理编码和 API 集成。Outscraper 是一个数据提取与信息丰富平台,可从 Google Maps、评论平台及 50 多个互联网来源抓取数据。由 Vlad May 和 Vlad Romanov 于 2018 年创立,总部位于德克萨斯州比凯夫。已有超过 18 万家企业使用。
步骤 1 — 收集背景信息
如果 references/learnings.md 存在,请先阅读其中积累的知识。
询问用户:
-
您需要哪方面的 Outscraper 帮助?
- A) Google Maps 抓取 — 搜索并提取企业数据(名称、地址、电话、评分、营业时间、网站、类别)
- B) 企业目录 — 按地点、类别和评分即时查询企业数据库(预建数据库,而非抓取)
- C) 评论提取 — Google Maps、Yelp、Tripadvisor、G2、Trustpilot、Glassdoor、Capterra、App Store、Google Play 上的评论
- D) 电子邮件和联系信息抓取 — 从网站或域名提取电子邮件和联系信息
- E) 潜在客户信息丰富 — 查找企业的电子邮件、电话和社交资料(联系人与潜在客户)
- F) 公司洞察 — 企业概况数据、技术栈、社交资料
- G) 电子邮件验证 — 验证电子邮件是否可送达(有效/无效/有风险)
- H) Amazon 抓取 — 产品数据和客户评论
- I) 搜索抓取 — Google Search(自然搜索结果、广告、摘要、PAA)、Google News
- J) 地理编码 — 地址验证、坐标查询、反向地理编码
- K) 集成/API — REST API、webhook、SDK、Zapier、n8n、Pipedream
- L) 账户/账单 — 定价层级、用量、免费套餐
- M) 其他 — 请描述具体需求
-
您的角色是什么?
- A) 销售/业务拓展
- B) 营销/增长
- C) 开发者/工程师
- D) 数据分析师/研究人员
- E) 代理机构/自由职业者
- F) 其他
-
您想要实现什么目标?(描述您的具体目标或问题)
如果用户的请求已提供大部分背景信息,请直接进入相关步骤。 基于合理假设(并明确说明),先尽力给出答复,然后仅在最后询问最关键的 1–2 个澄清问题——不要因为背景信息不完整而延迟回答。
注意:如果用户需要专门技能,请简要说明为什么该技能更合适,并将其引导至相应技能。
步骤 2 — 转交或直接回答
如果请求符合某项专门技能,请转交:
- 通用潜在客户名单策略/目标名单构建 ->
/sales-prospect-list - 跨平台数据丰富策略 ->
/sales-enrich - 电子邮件送达能力/验证策略(非 Outscraper 专用) ->
/sales-deliverability - 通过中间件将 Outscraper 连接到 CRM 或其他工具 ->
/sales-integration - Apollo.io 相关问题 ->
/sales-apollo - Hunter 相关问题 ->
/sales-hunter - Prospeo 相关问题 ->
/sales-prospeo - Seamless.AI 相关问题 ->
/sales-seamless - Tomba 相关问题 ->
/sales-tomba
否则,请根据下方参考内容,直接回答用户问题。
步骤 3 — Outscraper 平台参考资料
阅读 references/platform-guide.md,了解详细的模块文档、定价、集成方式和数据模型。
无需再了解平台指南的详细内容——请专注于用户的具体情况。
步骤 4 — 提供可执行的指导
根据用户的具体问题:
-
抓取目标市场的 Google Maps 商家信息:
- 定义搜索查询词——使用“类别,地点”格式(例如,“牙医,Austin,TX”或“水管工,90210”)
- 对于较大的区域,按街区或邮政编码拆分,以确保每个查询的结果不超过 500 条,并获得更全面的覆盖
- 使用查询词数组调用
GET /google-maps-search(每个请求最多 25 个查询词) - 设置
limit参数以控制每个查询的结果数量(默认值为 20,最大值为 500) - 结果包括名称、地址、电话、网站、评分、评价数量、营业时间、类别和 place_id
- 使用结果中的 place_ids 进一步提取评价或照片
- 如果搜索区域重叠,请对多个查询的结果去重——Outscraper 会在单个请求内去重,但不会跨不同请求去重
-
提取和分析 Google Maps 评价:
- 获取目标商家的 place_ids(可从之前的 Google Maps 搜索中获取,也可手动查找)
- 使用 place_ids 调用
GET /maps/reviews-v3,并设置sort(newest、most_relevant、highest_rating、lowest_rating) - 使用
cutoff参数仅获取特定日期之后的评价——适用于持续监控 - 设置
reviewsLimit以限制每个地点的评价数量(可控制拥有数千条评价的商家的成本) - 响应包含作者、评分、文本、日期、点赞数和商家回复数据
- 如需进行情感分析,请导出评价并分析评分随时间的变化趋势、常见关键词和回复模式
-
构建包含电子邮件和联系人的潜在客户名单:
- 从 Google Maps 搜索开始,查找目标市场中的商家——提取商家名称、网站和域名
- 将提取的域名传递给
GET /emails-and-contacts,从公司网站抓取电子邮件地址 - 如需进一步丰富数据,请使用公司名称或域名调用
GET /contacts-and-leads,查找每家公司最多 3 位联系人及其姓名、职务、电子邮件和电话号码 - 开始联系前,使用
GET /email-validator验证所有收集到的电子邮件地址——移除无效和有风险的地址 - 使用
GET /company-insights丰富公司数据,获取公司特征数据、技术栈和社交资料,以便根据 ICP 匹配度确定潜在客户的优先级 - 导出整合后的数据集,以便导入 CRM 或联系工具
-
设置用于异步结果的 webhook 回调:
- 大多数 Outscraper 端点采用异步处理——会立即返回请求 ID
- 不要轮询
GET /requests/{id},而是添加webhook参数并填入你的回调 URL - 任务完成后,Outscraper 会将结果 POST 到你的 webhook URL
- 你的 webhook 端点应尽快返回 200 状态码——在你自己的服务端异步处理数据
- 如需与 Zapier 集成,请使用“Task Finished”触发器启动后续工作流
-
从 Business Catalog 构建潜在客户名单:
- 选择适合的层级:测试或获取最多 1,000 条结果的小型名单时,使用
POST /businesses-free(API key);如需完整的生产环境访问权限,则使用POST /businesses(OAuth2) - 设置筛选条件:通过
country_code、states/cities/postal_codes指定地理范围,通过types指定商家类别(例如["restaurant", "cafe"]),设置rating(例如"4.0+")、has_website: true、has_phone: true,以确保商家可以联系 - 在同一个请求中添加数据丰富选项:使用
contacts_n_leads,并设置contacts_per_company和emails_per_contact,以获取决策者的电子邮件;还可添加company_insights获取公司特征数据 - 使用
fields数组仅返回所需的列,以减小响应大小并加快处理速度 - 使用
cursor分页——每个响应都包含next_cursor和has_more。循环处理,直到has_more为 false - 结果会即时返回(无需异步轮询)——该目录是预先构建的数据库,而不是抓取任务
- 开始联系前,使用抓取 API 上的
GET /email-validator验证丰富数据中获取的电子邮件地址
- 选择适合的层级:测试或获取最多 1,000 条结果的小型名单时,使用
-
使用 Python SDK:
- 安装:
pip install outscraper - 初始化:
from outscraper import OutscraperClient; client = OutscraperClient(api_key='YOUR_KEY')(旧的ApiClient名称仍可作为向后兼容别名使用,但当前使用的是OutscraperClient) - Google Maps 搜索:
results = client.google_maps_search('restaurants, NYC', limit=100) - 评论:
reviews = client.google_maps_reviews('place_id_here', reviews_limit=50, sort='newest') - 电子邮件验证:
results = client.validate_emails(['[email protected]']) - 所有 SDK 方法都支持批处理——传入查询列表即可高效处理
- 安装:
注意事项
根据研究整理的尽力而为内容——请检查以下事项,尤其是与套餐限制功能和集成注意事项有关、可能已过时的内容。
- Google Maps 查询的结果上限为每个查询 500 条——宽泛搜索无法涵盖所有商家。 如果搜索“restaurants, New York”,最多会得到 500 条结果,而不是纽约的所有餐厅。若要全面覆盖,请将查询拆分为更小的地理区域(邮政编码、社区、行政区),并对不同请求的结果去重。
- 异步结果需要轮询或 Webhook——不要指望 API 立即返回结果。 大多数端点会立即返回请求 ID。你必须轮询
GET /requests/{id},直到状态变为完成,或使用webhook参数通过回调接收结果。Python SDK 会自动处理轮询,但使用原始 API 的用户需要自行实现。 - 电子邮件验证和联系人信息补充是独立模块,费用也各不相同——不要以为 Contacts & Leads 中的电子邮件已经过验证。
/contacts-and-leads端点会查找电子邮件,但不会验证其是否可送达。联系对方前,务必先通过/email-validator验证找到的电子邮件,以避免退信并维护发件人信誉。 - 速率限制较宽松,约为 20 QPS,但批处理才是提升吞吐量的关键——请使用最多 25 条查询的批处理限制。 与其发送 25 个单独请求,不如将它们合并为一个请求,并在数组中最多传入 25 条查询。这样效率更高,也能避免触发速率限制。如需持续处理大量请求,请联系 Outscraper 提高 QPS 限制。
- 抓取评论的费用会随数量增加——请设置 reviewsLimit 控制支出。 单个商家可能有数万条评论。如果不设置
reviewsLimit参数,可能会提取(并支付)所有评论。除非确实需要完整评论历史,否则务必设置合理的上限。
- 持续改进:如果发现此处未涵盖的内容,请将其附加到
references/learnings.md,并注明今天的日期。
第 5 步——相关技能
/sales-prospect-list— 使用 Outscraper 和其他来源的数据构建并完善潜在客户名单/sales-enrich— 跨平台数据补充策略(结合使用 Outscraper 和其他数据补充工具)/sales-deliverability— 电子邮件送达率和验证策略(不限于 Outscraper 的电子邮件验证)/sales-integration— 将 Outscraper 连接到 CRM、自动化工具或其他工具/sales-do— 不确定该使用哪项技能?路由器会根据任意销售目标匹配合适的技能。安装:npx skills add sales-skills/sales --skill sales-do
示例
示例 1:为销售区域抓取本地商家
用户说:“我需要整理达拉斯-沃思堡都会区所有暖通空调公司的名单,包括联系方式和评分。” 技能执行:
- 设计查询策略:将 DFW 划分为具体城市和邮政编码,以突破每次查询 500 条的限制,尽可能扩大覆盖范围——例如,“HVAC, Dallas, TX”“HVAC, Fort Worth, TX”“HVAC, Arlington, TX”“HVAC, Plano, TX”“HVAC, Irving, TX”等。
- 使用批量查询调用
GET /google-maps-search(每次请求最多 25 个查询),每个查询设置limit=500 - 返回结果包含公司名称、完整地址、电话号码、网站、Google 评分、评论数、营业时间和类别
- 使用 place_id 作为唯一键对不同查询的结果去重(同一家商家可能出现在地理范围重叠的搜索结果中)
- 对提取到的网站调用
GET /emails-and-contacts,查找用于外联的电子邮件地址 - 通过
GET /email-validator验证收集到的电子邮件,在导入 CRM 前移除无效地址 结果:用户获得一份全面且去重后的 DFW 暖通空调公司名单,其中包含已验证的联系方式、评分和评论数,可直接导入 CRM 并用于销售外联
示例 2:跨平台分析竞争对手评论
用户说:“我想监控客户在 Google Maps、Yelp 和 Trustpilot 上对我们前三大竞争对手的评价。” 技能执行:
- 确定每个竞争对手在 Google Maps 上的 place_id(通过搜索或手动查找)
- 设置跨三个平台提取评论:使用
GET /maps/reviews-v3提取 Google Maps 评论,使用GET /yelp/reviews提取 Yelp 评论,使用GET /trustpilot/reviews提取 Trustpilot 评论 - 使用
sort=newest和cutoff日期参数,仅提取近期评论(例如,最近 90 天),兼顾相关性和成本 - 将每个平台上每家企业的
reviewsLimit=100,以控制数据量 - 将结果导出为 CSV 进行分析——建议关注评分分布随时间的变化、常见投诉主题,以及回复率和回复质量
- 建议使用 Zapier 或调用 API 的 cron job 设置定期提取(每月或每周一次),以跟踪情绪趋势随时间的变化 结果:用户获得一份结构化数据集,包含三个平台上的近期竞争对手评论,可据此开展竞争情报分析,了解客户满意度、常见痛点和潜在机会
示例 3:使用公司概况数据丰富目标客户名单
用户说:“我有一份包含 200 个公司域名的名单,需要补充员工人数、行业、技术栈,并查找决策者的联系方式。” 技能执行:
- 将 200 个域名按每批 25 个分组,调用
GET /company-insights——总计 8 次批量 API 调用 - Company Insights 返回:行业、员工人数范围、收入范围、技术栈、社交资料、成立年份和总部所在地
- 使用相同域名调用
GET /contacts-and-leads——每家公司最多返回 3 个联系人的姓名、职位、电子邮件、电话号码和 LinkedIn 资料 - 根据职位相关性为联系人排序(例如,根据用户的目标人物画像,优先考虑销售副总裁、运营总监或 CTO)
- 通过
GET /email-validator验证所有找到的电子邮件——标记无效和有风险的地址以便移除 - 将公司概况数据和联系人数据合并为一个丰富的数据集,可直接导入 CRM 或交由外联工具使用 结果:用户获得 200 个已补充公司概况数据的客户账户,以及最多 600 位已验证的决策者联系人——依据 ICP 标准筛选完毕,可用于个性化外联
故障排除
Google Maps 搜索返回的结果少于预期
症状:搜索“restaurants, New York”时,预期会得到数千条结果,但实际只返回 100–200 条。 原因:Google Maps 会限制每个搜索查询显示的结果数量,而 Outscraper 每个查询最多返回 500 条结果。在人口密集地区进行宽泛搜索会触及此上限,导致遗漏许多商家。 解决方案:将搜索拆分为更小、更具体的地理区域查询。不要搜索“restaurants, New York”,而是按社区或邮政编码搜索:“restaurants, 10001”“restaurants, 10002”等。每次 API 请求最多可批量提交 25 个此类查询。使用 place_id 作为唯一标识符,对合并后的结果去重。对于规模很大的抓取项目,可考虑根据邮政编码或社区名称列表以编程方式生成查询,确保覆盖完整。
异步请求卡在处理中或未返回结果
症状:你提交请求并收到了请求 ID,但轮询 GET /requests/{id} 时一直返回“processing”状态,或者任务显示已完成,但结果为空。
原因:大型请求(查询较多或评论数量限制较高)可能需要较长时间处理。结果为空可能表示输入无效(place_ids 错误、域名无法访问),也可能是目标数据确实不存在(例如,某商家没有评论)。
解决方案:对于长时间运行的任务,请使用 webhook 参数而不是轮询;结果准备就绪时,你会收到 POST 回调。检查输入数据是否有效:确保 place_ids 正确、URL 可访问且域名可解析。如果使用 Python SDK,请增加超时时间或使用异步模式。如果请求持续卡住,请查看 Outscraper 状态页面或联系支持团队。请注意,超大型请求可能会在内部拆分为多个子任务。
大多数地址的电子邮件验证结果为“risky”
症状:通过 /email-validator 验证后,很大比例的电子邮件地址返回“risky”,而不是“valid”或“invalid”。
原因:“Risky”通常表示邮件服务器接受所有地址(全收域名),或者 SMTP 检查无法得出结论。许多企业域名会配置全收功能,以接受发送到任意地址的邮件,因此无法确认某个特定邮箱是否存在。这在大型企业域名中很常见。
解决方案:“Risky”电子邮件不一定有问题,其中许多仍可正常送达。对于全收域名,即使无法通过 SMTP 验证,电子邮件格式仍可能正确。向 risky 地址发送邮件时请谨慎:可以将其纳入推广名单,但要密切监控退信率。如果 risky 地址的退信率超过 5%,请将其移除。对于重要的推广活动,可结合使用 Outscraper 验证和其他验证服务,这类服务会利用历史发送数据或社交资料匹配等额外信号。