← 返回 Skills 市场
hundevmode

Google Maps Email Extractor (Apify)

作者 hundevmode · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
33
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install google-maps-email-extractor-apify
功能描述
Use this skill when the user needs public business email leads from Google Maps through an Apify actor, including emails, email details, websites, phones, so...
使用说明 (SKILL.md)

Google Maps Email Extractor Apify Skill

Overview

This skill helps an AI agent run the Apify Google Maps Email Extractor actor for public business email lead generation from Google Maps.

Default actor:

  • Actor ID: f3dlnXVnBc6v8JMNK
  • Actor name: x_guru/google-maps-email-extractor
  • Store page: https://apify.com/x_guru/google-maps-email-extractor
  • Console source: https://console.apify.com/actors/f3dlnXVnBc6v8JMNK/source

Use this skill when a user asks to:

  • build local business email lead lists from Google Maps
  • find public emails for dentists, roofers, lawyers, photographers, gyms, clinics, restaurants, contractors, agencies, real estate offices, or other local niches
  • enrich Google Maps places with websites, emails, phones, social links, ratings, reviews count, addresses, and coordinates
  • run Google Maps searches by keyword and location with emailsOnly output
  • run exact Google Maps URLs or Google Place IDs and return email lead rows
  • control Apify spend with maxTotalChargeUsd
  • export rows for Sheets, Airtable, n8n, CRM, BI, CSV, JSON, or agent workflows

Quick Workflow

  1. Clarify the niche, location, desired saved email lead count, and whether person-like emails are allowed.
  2. Build a small payload first with searchStringsArray, locationQuery, maxCrawledPlacesPerSearch, contactResultMode: "emailsOnly", website: "withWebsite", and language.
  3. Use startUrls or placeIds when the user already has exact Google Maps sources.
  4. Increase contactPagesLimit only when a niche hides emails on team, staff, legal, imprint, or contact pages.
  5. Use category/rating/website filters when the search is broad or noisy.
  6. Set a budget guard with Apify maxTotalChargeUsd when spend matters.
  7. Run scripts/google_maps_email_extractor_actor.py or call the Apify API directly.
  8. Return compact metrics and email lead rows. Check RUN_SUMMARY for diagnostics when counts are lower than requested.

Payload Rules

  • Standard search uses searchStringsArray, locationQuery, maxCrawledPlacesPerSearch, and language.
  • Default saved-output mode is contactResultMode: "emailsOnly".
  • Use website: "withWebsite" for email extraction because public emails usually come from business websites.
  • maxCrawledPlacesPerSearch is the requested saved lead target. The actor may scan more Google Maps candidates internally to find enough email leads.
  • contactPagesLimit defaults to 2; use 3-5 for deeper email discovery.
  • includePersonalData=false keeps mostly generic company contacts such as info@, sales@, hello@, and contact@.
  • startUrls must be array objects: [{"url": "https://www.google.com/maps/..."}].
  • placeIds accepts raw Google Place IDs and compatible place_id: values.
  • contactResultMode must be emailsOnly, contactsOnly, or allPlaces.
  • Paid filters include categoryFilterWords, placeCategories, customPlaceCategories, searchMatching, placeMinimumStars, website, and skipClosedPlaces.
  • Search area can use locationQuery, countryCode, city, state, county, postalCode, customGeolocation, locationBounds, or strictLocationBounds.
  • Do not use review-row fields such as maxReviews here. Use the Google Maps Reviews Scraper skill for reviews.

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 email-lead search:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_email_extractor_actor.py quick-search \
  --query "wedding photographer" \
  --location "Austin, Texas, USA" \
  --limit 25 \
  --budget-usd 1

Run by Google Maps URL:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_email_extractor_actor.py quick-url \
  --url "https://www.google.com/maps/search/roofing+contractor+Dallas,+TX" \
  --limit 50 \
  --budget-usd 1

Run by Place ID:

APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_email_extractor_actor.py quick-place-id \
  --place-id "ChIJE2Flwy-1RIYRWqJr_ZiMGc" \
  --budget-usd 1

Run custom JSON:

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

Recommended Inputs

Local email leads

{
  "searchStringsArray": ["wedding photographer"],
  "locationQuery": "Austin, Texas, USA",
  "maxCrawledPlacesPerSearch": 100,
  "contactResultMode": "emailsOnly",
  "contactPagesLimit": 2,
  "includePersonalData": true,
  "website": "withWebsite",
  "skipClosedPlaces": true,
  "language": "en"
}

Generic company emails only

{
  "searchStringsArray": ["commercial electrician"],
  "locationQuery": "Denver, Colorado, USA",
  "maxCrawledPlacesPerSearch": 100,
  "contactResultMode": "emailsOnly",
  "includePersonalData": false,
  "website": "withWebsite"
}

Exact sources

{
  "startUrls": [
    {
      "url": "https://www.google.com/maps/search/marketing+agency+near+Chicago,+IL"
    }
  ],
  "maxCrawledPlacesPerSearch": 50,
  "contactResultMode": "emailsOnly",
  "website": "withWebsite"
}

Output Contract

The runner returns JSON:

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

Rows are actor dataset items. Important groups:

  • Business: title, categoryName, categories, rank, searchString
  • Emails: emails, emailDetails.email, emailDetails.type, emailDetails.sourceUrl, emailDetails.domainMatch
  • Contacts: website, phone, phoneUnformatted, additionalPhones, social profile arrays
  • Address: address, street, city, state, postalCode, countryCode, location, plusCode
  • Google metrics: totalScore, reviewsCount, reviewsDistribution, closed flags
  • Google IDs: placeId, fid, cid, kgmid, url, searchPageUrl
  • Diagnostics: contactSignals, contactStatus, additionalInfo.companyContacts, scrapedAt

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

Agent Response Rules

  • If rows are empty, say the run succeeded but no email leads were saved, then suggest checking RUN_SUMMARY.
  • If fewer rows than requested are returned, explain that the niche/area had fewer public emails or the budget/filter stopped saving.
  • If emails is empty in contactsOnly or allPlaces, explain that the row was saved due to other contact data.
  • Explain public email extraction as best-effort because each business controls what its website publishes.
  • Use maxTotalChargeUsd for any user concerned about spend.
  • Do not promise review text or full review datasets from this actor. Use the separate Google Maps Reviews Scraper for reviews.

References

  • references/input-output-contract.md
  • references/sample_input.json
  • references/troubleshooting.md
安全使用建议
Install only if you are comfortable sending lead-search inputs and extracted contact data to Apify and using your APIFY_TOKEN for paid runs. Before running it, set a budget limit, scope the niche and geography tightly, and disable personal data unless you have a lawful and appropriate reason to collect it.
能力评估
Purpose & Capability
The Apify Google Maps lead-extraction purpose is coherent and openly described, and the runner only calls the declared Apify actor by default.
Instruction Scope
The default agent prompt directly tells the agent to build a payload and run the actor, while the script and sample default to includePersonalData=true; the skill mentions clarifying whether person-like emails are allowed but does not enforce explicit opt-in before execution.
Install Mechanism
Installation is a normal skill package with no third-party Python dependencies declared and no hidden install-time execution found.
Credentials
Use of APIFY_TOKEN and external Apify processing is expected for this skill, but user search terms, URLs, place IDs, and resulting contact data are sent to a third-party service and the artifact lacks a clear privacy/compliance notice.
Persistence & Privilege
No background persistence, startup hooks, credential harvesting, local profile access, broad filesystem indexing, or destructive behavior was found; the script reads only a user-specified JSON input file and prints results.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install google-maps-email-extractor-apify
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /google-maps-email-extractor-apify 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
Initial Google Maps Email Extractor Apify agent skill.
元数据
Slug google-maps-email-extractor-apify
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Google Maps Email Extractor (Apify) 是什么?

Use this skill when the user needs public business email leads from Google Maps through an Apify actor, including emails, email details, websites, phones, so... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 33 次。

如何安装 Google Maps Email Extractor (Apify)?

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

Google Maps Email Extractor (Apify) 是免费的吗?

是的,Google Maps Email Extractor (Apify) 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Google Maps Email Extractor (Apify) 支持哪些平台?

Google Maps Email Extractor (Apify) 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Google Maps Email Extractor (Apify)?

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

💬 留言讨论