← 返回 Skills 市场
hundevmode

Website Phone Number Finder (Apify)

作者 hundevmode · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
42
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install website-phone-number-finder-apify
功能描述
Use this skill when the user needs public business phone numbers, tel links, optional emails, social profiles, source URLs, and crawl diagnostics from websit...
使用说明 (SKILL.md)

Website Phone Number Finder Apify Skill

Overview

This skill helps an AI agent run the Apify Website Phone Number Finder actor for public website phone extraction from domains and URLs.

Default actor:

  • Actor ID: HE8ML7ZqmGI6OtyFU
  • Actor name: x_guru/website-phone-number-finder
  • Store page: https://apify.com/x_guru/website-phone-number-finder
  • Console source: https://console.apify.com/actors/HE8ML7ZqmGI6OtyFU/source

Use this skill when a user asks to:

  • scrape public phone numbers from website domains
  • find business phone numbers from company websites, landing pages, contact pages, locations pages, booking pages, or domain lists
  • extract tel: links, visible phone numbers, source URLs, social profiles, optional emails, and crawl diagnostics
  • enrich lead lists from Google Maps, CRMs, spreadsheets, directories, search results, company databases, or agency prospecting workflows
  • return only websites with phones, only websites with any contact, or all scanned websites
  • control Apify spend with maxTotalChargeUsd
  • export phone lead rows for Sheets, Airtable, n8n, CRM, BI, CSV, JSON, or agent workflows

Quick Workflow

  1. Clarify submitted domains or website URLs and desired saved phone result count.
  2. Use resultMode: "phonesOnly" by default for phone lead extraction.
  3. Use contactsOnly when social profiles or optional emails are useful even without phones.
  4. Use allWebsites only when the user needs diagnostics for every submitted website.
  5. Keep maxPagesPerWebsite at 3 for fast runs; use 5-10 when phone numbers are likely on locations, booking, contact, legal, imprint, or team pages.
  6. Keep extractPhones=true; disable extractEmails unless secondary email enrichment is requested.
  7. Set includePersonalData=false when personal LinkedIn profile URLs or person-like optional emails should be excluded.
  8. Set a budget guard with Apify maxTotalChargeUsd when spend matters.
  9. Run scripts/website_phone_number_finder_actor.py or call the Apify API directly.
  10. Return compact metrics and website phone rows. Check RUN_SUMMARY for diagnostics when counts are lower than requested.

Payload Rules

  • Use domains for bare domains and full website URLs.
  • urls and startUrls can be normalized into domains by the runner for agent convenience.
  • maxResults is the maximum number of saved dataset rows.
  • resultMode must be phonesOnly, contactsOnly, or allWebsites.
  • maxPagesPerWebsite must be 1-25; default is 3.
  • concurrency must be 1-500; default is 100.
  • requestTimeoutSecs must be 2-30; default is 5.
  • extractPhones, extractEmails, extractSocials, includePersonalData, and sameDomainOnly are booleans.
  • Do not send Google Maps search fields such as searchStringsArray, placeIds, locationQuery, or review fields to this website-only actor.
  • Pass maxTotalChargeUsd as an Apify run option, not inside actor input. The included script exposes it as --budget-usd.

Authentication

Use the Apify API token from the environment:

export APIFY_TOKEN='apify_api_xxx'

Never hardcode or print the full token in user-facing output.

Script Usage

The bundled script uses only Python standard library.

Run a quick phone scrape:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/website_phone_number_finder_actor.py quick-domains \
  --domains alchemist.dk disfrutarbarcelona.com \
  --max-results 50 \
  --budget-usd 1

Run with deeper phone discovery:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/website_phone_number_finder_actor.py quick-domains \
  --domains alchemist.dk disfrutarbarcelona.com diverxo.com \
  --max-results 100 \
  --max-pages 5 \
  --result-mode phonesOnly \
  --budget-usd 1

Run custom JSON:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/website_phone_number_finder_actor.py run \
  --input-file references/sample_input.json \
  --budget-usd 1

Recommended Inputs

Public phone leads only

{
  "domains": ["alchemist.dk", "disfrutarbarcelona.com", "diverxo.com"],
  "maxResults": 1000,
  "resultMode": "phonesOnly",
  "maxPagesPerWebsite": 3,
  "concurrency": 100,
  "requestTimeoutSecs": 5,
  "extractPhones": true,
  "extractEmails": false,
  "extractSocials": true,
  "includePersonalData": true,
  "sameDomainOnly": true
}

Phone leads with optional emails

{
  "domains": ["example.com", "https://example.com/contact"],
  "maxResults": 500,
  "resultMode": "phonesOnly",
  "extractPhones": true,
  "extractEmails": true,
  "extractSocials": true
}

Any contact record

{
  "domains": ["example.com", "apify.com"],
  "maxResults": 100,
  "resultMode": "contactsOnly",
  "maxPagesPerWebsite": 5
}

Output Contract

The runner returns JSON:

  • ok
  • actorId
  • fetchedAt
  • inputUsed
  • itemCount
  • rows[]

Rows are actor dataset items. Important groups:

  • Website identity: input, url, domain, status
  • Phones: phones, phoneDetails.phone, phoneDetails.sourceUrl
  • Optional emails: emails, emailDetails.email, emailDetails.type, emailDetails.sourceUrl, emailDetails.domainMatch
  • Contacts: socialLinks, facebooks, instagrams, linkedIns, twitters, youtubes, tiktoks
  • Crawl diagnostics: contactSignals, pagesFetched, fetchedUrls, httpStatusCodes, errors, durationMs

For the full contract, read references/input-output-contract.md.

Agent Response Rules

  • If rows are empty, say the run succeeded but no website phone rows matched the selected mode, then suggest checking RUN_SUMMARY.
  • If fewer rows than requested are returned, explain that submitted websites had fewer public phone numbers, the result mode filtered rows, or budget stopped saving.
  • If phones is empty in contactsOnly or allWebsites, explain that the row was saved due to email/social/diagnostic data.
  • Explain website phone extraction as best-effort because each website controls what it publishes.
  • Use maxTotalChargeUsd for any user concerned about spend.
  • Do not promise Google Maps place discovery from this actor. Use the Google Maps Email Extractor or main Google Maps Scraper when the user needs search-by-keyword/location first.

References

  • references/input-output-contract.md
  • references/sample_input.json
  • references/troubleshooting.md
安全使用建议
Install only if you intend to send target domains or URLs to Apify for public contact extraction. Use --budget-usd to control spend, set includePersonalData=false or pass --no-personal-data unless personal LinkedIn/profile-like data is truly needed, and enable email extraction only when you have a lawful and policy-compliant reason to collect it.
能力评估
Purpose & Capability
The artifacts consistently describe running an Apify actor to extract public phone numbers, tel links, optional emails, social profiles, and diagnostics from user-provided websites. Personal-profile collection is disclosed, though privacy implications are not emphasized enough.
Instruction Scope
The skill is scoped to supplied domains and URLs, rejects unrelated Google Maps fields, and sets crawl limits. The agent prompt is broad and does not require explicit confirmation before using Apify, but Apify use is central to the skill name, metadata, and documentation.
Install Mechanism
Installation is a normal skills CLI flow. The package declares no third-party Python runtime dependencies and requires only python3 plus APIFY_TOKEN.
Credentials
APIFY_TOKEN and network access to Apify are proportionate for this integration. The script sends user-provided domains and actor input to Apify and uses a budget guard option; this is disclosed.
Persistence & Privilege
No background worker, persistence mechanism, privilege escalation, local indexing, deletion, credential harvesting, or token printing was found. The token is read from an argument or environment variable and used for the Apify request.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install website-phone-number-finder-apify
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /website-phone-number-finder-apify 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial Website Phone Number Finder Apify agent skill.
元数据
Slug website-phone-number-finder-apify
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Website Phone Number Finder (Apify) 是什么?

Use this skill when the user needs public business phone numbers, tel links, optional emails, social profiles, source URLs, and crawl diagnostics from websit... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 42 次。

如何安装 Website Phone Number Finder (Apify)?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install website-phone-number-finder-apify」即可一键安装,无需额外配置。

Website Phone Number Finder (Apify) 是免费的吗?

是的,Website Phone Number Finder (Apify) 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Website Phone Number Finder (Apify) 支持哪些平台?

Website Phone Number Finder (Apify) 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Website Phone Number Finder (Apify)?

由 hundevmode(@hundevmode)开发并维护,当前版本 v1.0.0。

💬 留言讨论