mcpField

sales-outscraper

github.com/sales-skills数据与数据库43 次安装
代码仓库

关于 sales-outscraper

为需要使用 Outscraper 的销售、开发和研究人员提供平台操作指导,涵盖企业数据抓取、评论提取、联系人丰富和邮箱验证。内容也涉及 API、SDK 与异步结果处理。

主要功能

  1. 01抓取 Google Maps 商家数据
  2. 02提取评论与网站联系信息
  3. 03丰富联系人及公司资料
  4. 04验证邮箱投递状态
  5. 05指导 API、SDK 与 Webhook 使用

适用场景

  1. 01按地区整理目标商家名单
  2. 02收集并分析商家评论
  3. 03为潜在客户补充联系信息
  4. 04将异步抓取结果接入工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sales-skills/sales --skill sales-outscraper

安装后在 Claude Code 中输入/sales-outscraper确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
learnings.md
outscraper-api-reference.md
platform-guide.md

详细介绍

Outscraper 平台帮助

帮助用户解答 Outscraper 平台相关问题,涵盖 Google Maps 抓取和评论提取、电子邮件/联系信息抓取、潜在客户信息丰富、公司洞察、电子邮件验证、Amazon 抓取、评论平台抓取、地理编码和 API 集成。Outscraper 是一个数据提取与信息丰富平台,可从 Google Maps、评论平台及 50 多个互联网来源抓取数据。由 Vlad May 和 Vlad Romanov 于 2018 年创立,总部位于德克萨斯州比凯夫。已有超过 18 万家企业使用。

步骤 1 — 收集背景信息

如果 references/learnings.md 存在,请先阅读其中积累的知识。

询问用户:

  1. 您需要哪方面的 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) 其他 — 请描述具体需求
  2. 您的角色是什么?

    • A) 销售/业务拓展
    • B) 营销/增长
    • C) 开发者/工程师
    • D) 数据分析师/研究人员
    • E) 代理机构/自由职业者
    • F) 其他
  3. 您想要实现什么目标?(描述您的具体目标或问题)

如果用户的请求已提供大部分背景信息,请直接进入相关步骤。 基于合理假设(并明确说明),先尽力给出答复,然后仅在最后询问最关键的 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 — 提供可执行的指导

根据用户的具体问题:

  1. 抓取目标市场的 Google Maps 商家信息:

    1. 定义搜索查询词——使用“类别,地点”格式(例如,“牙医,Austin,TX”或“水管工,90210”)
    2. 对于较大的区域,按街区或邮政编码拆分,以确保每个查询的结果不超过 500 条,并获得更全面的覆盖
    3. 使用查询词数组调用 GET /google-maps-search(每个请求最多 25 个查询词)
    4. 设置 limit 参数以控制每个查询的结果数量(默认值为 20,最大值为 500)
    5. 结果包括名称、地址、电话、网站、评分、评价数量、营业时间、类别和 place_id
    6. 使用结果中的 place_ids 进一步提取评价或照片
    7. 如果搜索区域重叠,请对多个查询的结果去重——Outscraper 会在单个请求内去重,但不会跨不同请求去重
  2. 提取和分析 Google Maps 评价:

    1. 获取目标商家的 place_ids(可从之前的 Google Maps 搜索中获取,也可手动查找)
    2. 使用 place_ids 调用 GET /maps/reviews-v3,并设置 sort(newest、most_relevant、highest_rating、lowest_rating)
    3. 使用 cutoff 参数仅获取特定日期之后的评价——适用于持续监控
    4. 设置 reviewsLimit 以限制每个地点的评价数量(可控制拥有数千条评价的商家的成本)
    5. 响应包含作者、评分、文本、日期、点赞数和商家回复数据
    6. 如需进行情感分析,请导出评价并分析评分随时间的变化趋势、常见关键词和回复模式
  3. 构建包含电子邮件和联系人的潜在客户名单:

    1. 从 Google Maps 搜索开始,查找目标市场中的商家——提取商家名称、网站和域名
    2. 将提取的域名传递给 GET /emails-and-contacts,从公司网站抓取电子邮件地址
    3. 如需进一步丰富数据,请使用公司名称或域名调用 GET /contacts-and-leads,查找每家公司最多 3 位联系人及其姓名、职务、电子邮件和电话号码
    4. 开始联系前,使用 GET /email-validator 验证所有收集到的电子邮件地址——移除无效和有风险的地址
    5. 使用 GET /company-insights 丰富公司数据,获取公司特征数据、技术栈和社交资料,以便根据 ICP 匹配度确定潜在客户的优先级
    6. 导出整合后的数据集,以便导入 CRM 或联系工具
  4. 设置用于异步结果的 webhook 回调:

    1. 大多数 Outscraper 端点采用异步处理——会立即返回请求 ID
    2. 不要轮询 GET /requests/{id},而是添加 webhook 参数并填入你的回调 URL
    3. 任务完成后,Outscraper 会将结果 POST 到你的 webhook URL
    4. 你的 webhook 端点应尽快返回 200 状态码——在你自己的服务端异步处理数据
    5. 如需与 Zapier 集成,请使用“Task Finished”触发器启动后续工作流
  5. 从 Business Catalog 构建潜在客户名单:

    1. 选择适合的层级:测试或获取最多 1,000 条结果的小型名单时,使用 POST /businesses-free(API key);如需完整的生产环境访问权限,则使用 POST /businesses(OAuth2)
    2. 设置筛选条件:通过 country_code、states/cities/postal_codes 指定地理范围,通过 types 指定商家类别(例如 ["restaurant", "cafe"]),设置 rating(例如 "4.0+")、has_website: true、has_phone: true,以确保商家可以联系
    3. 在同一个请求中添加数据丰富选项:使用 contacts_n_leads,并设置 contacts_per_company 和 emails_per_contact,以获取决策者的电子邮件;还可添加 company_insights 获取公司特征数据
    4. 使用 fields 数组仅返回所需的列,以减小响应大小并加快处理速度
    5. 使用 cursor 分页——每个响应都包含 next_cursor 和 has_more。循环处理,直到 has_more 为 false
    6. 结果会即时返回(无需异步轮询)——该目录是预先构建的数据库,而不是抓取任务
    7. 开始联系前,使用抓取 API 上的 GET /email-validator 验证丰富数据中获取的电子邮件地址
  6. 使用 Python SDK:

    1. 安装:pip install outscraper
    2. 初始化:from outscraper import OutscraperClient; client = OutscraperClient(api_key='YOUR_KEY')(旧的 ApiClient 名称仍可作为向后兼容别名使用,但当前使用的是 OutscraperClient)
    3. Google Maps 搜索:results = client.google_maps_search('restaurants, NYC', limit=100)
    4. 评论:reviews = client.google_maps_reviews('place_id_here', reviews_limit=50, sort='newest')
    5. 电子邮件验证:results = client.validate_emails(['[email protected]'])
    6. 所有 SDK 方法都支持批处理——传入查询列表即可高效处理

注意事项

根据研究整理的尽力而为内容——请检查以下事项,尤其是与套餐限制功能和集成注意事项有关、可能已过时的内容。

  1. Google Maps 查询的结果上限为每个查询 500 条——宽泛搜索无法涵盖所有商家。 如果搜索“restaurants, New York”,最多会得到 500 条结果,而不是纽约的所有餐厅。若要全面覆盖,请将查询拆分为更小的地理区域(邮政编码、社区、行政区),并对不同请求的结果去重。
  2. 异步结果需要轮询或 Webhook——不要指望 API 立即返回结果。 大多数端点会立即返回请求 ID。你必须轮询 GET /requests/{id},直到状态变为完成,或使用 webhook 参数通过回调接收结果。Python SDK 会自动处理轮询,但使用原始 API 的用户需要自行实现。
  3. 电子邮件验证和联系人信息补充是独立模块,费用也各不相同——不要以为 Contacts & Leads 中的电子邮件已经过验证。 /contacts-and-leads 端点会查找电子邮件,但不会验证其是否可送达。联系对方前,务必先通过 /email-validator 验证找到的电子邮件,以避免退信并维护发件人信誉。
  4. 速率限制较宽松,约为 20 QPS,但批处理才是提升吞吐量的关键——请使用最多 25 条查询的批处理限制。 与其发送 25 个单独请求,不如将它们合并为一个请求,并在数组中最多传入 25 条查询。这样效率更高,也能避免触发速率限制。如需持续处理大量请求,请联系 Outscraper 提高 QPS 限制。
  5. 抓取评论的费用会随数量增加——请设置 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:为销售区域抓取本地商家

用户说:“我需要整理达拉斯-沃思堡都会区所有暖通空调公司的名单,包括联系方式和评分。” 技能执行:

  1. 设计查询策略:将 DFW 划分为具体城市和邮政编码,以突破每次查询 500 条的限制,尽可能扩大覆盖范围——例如,“HVAC, Dallas, TX”“HVAC, Fort Worth, TX”“HVAC, Arlington, TX”“HVAC, Plano, TX”“HVAC, Irving, TX”等。
  2. 使用批量查询调用 GET /google-maps-search(每次请求最多 25 个查询),每个查询设置 limit=500
  3. 返回结果包含公司名称、完整地址、电话号码、网站、Google 评分、评论数、营业时间和类别
  4. 使用 place_id 作为唯一键对不同查询的结果去重(同一家商家可能出现在地理范围重叠的搜索结果中)
  5. 对提取到的网站调用 GET /emails-and-contacts,查找用于外联的电子邮件地址
  6. 通过 GET /email-validator 验证收集到的电子邮件,在导入 CRM 前移除无效地址 结果:用户获得一份全面且去重后的 DFW 暖通空调公司名单,其中包含已验证的联系方式、评分和评论数,可直接导入 CRM 并用于销售外联
示例 2:跨平台分析竞争对手评论

用户说:“我想监控客户在 Google Maps、Yelp 和 Trustpilot 上对我们前三大竞争对手的评价。” 技能执行:

  1. 确定每个竞争对手在 Google Maps 上的 place_id(通过搜索或手动查找)
  2. 设置跨三个平台提取评论:使用 GET /maps/reviews-v3 提取 Google Maps 评论,使用 GET /yelp/reviews 提取 Yelp 评论,使用 GET /trustpilot/reviews 提取 Trustpilot 评论
  3. 使用 sort=newest 和 cutoff 日期参数,仅提取近期评论(例如,最近 90 天),兼顾相关性和成本
  4. 将每个平台上每家企业的 reviewsLimit=100,以控制数据量
  5. 将结果导出为 CSV 进行分析——建议关注评分分布随时间的变化、常见投诉主题,以及回复率和回复质量
  6. 建议使用 Zapier 或调用 API 的 cron job 设置定期提取(每月或每周一次),以跟踪情绪趋势随时间的变化 结果:用户获得一份结构化数据集,包含三个平台上的近期竞争对手评论,可据此开展竞争情报分析,了解客户满意度、常见痛点和潜在机会
示例 3:使用公司概况数据丰富目标客户名单

用户说:“我有一份包含 200 个公司域名的名单,需要补充员工人数、行业、技术栈,并查找决策者的联系方式。” 技能执行:

  1. 将 200 个域名按每批 25 个分组,调用 GET /company-insights——总计 8 次批量 API 调用
  2. Company Insights 返回:行业、员工人数范围、收入范围、技术栈、社交资料、成立年份和总部所在地
  3. 使用相同域名调用 GET /contacts-and-leads——每家公司最多返回 3 个联系人的姓名、职位、电子邮件、电话号码和 LinkedIn 资料
  4. 根据职位相关性为联系人排序(例如,根据用户的目标人物画像,优先考虑销售副总裁、运营总监或 CTO)
  5. 通过 GET /email-validator 验证所有找到的电子邮件——标记无效和有风险的地址以便移除
  6. 将公司概况数据和联系人数据合并为一个丰富的数据集,可直接导入 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 验证和其他验证服务,这类服务会利用历史发送数据或社交资料匹配等额外信号。

评论

支持 Markdown