AS
Apify Store
/code-node-tools/google-maps-lead-scraper
Google Maps Lead Scraper: Email, Phone number, Fast & Lean
Fast Google Maps lead scraper. Searches Google Maps for businesses matching your queries, fetches full contact details (website, phone, email, socials), and streams leads to the dataset. Uses Apify residential proxy on the platform and direct connection locally.
liveasyncunknown~30s typical
LEAD_GENERATIONAUTOMATIONDEVELOPER_TOOLS
$0.0020
per result + $0.01 call
plus $0.001 platform fee per run
Usage-based actor: event charges passed through at cost plus 25%
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /code-node-tools/google-maps-lead-scraper for me.
Input
| Field | Type | Description |
|---|---|---|
| queries* | array | List of Google Maps search queries. Each query is scraped independently with its own per-keyword max-results cap. Example: ['restaurants in Paris', 'dentists in Berlin', 'coffee shops in Amsterdam']. |
| maxResultsPerKeyword | integer | Maximum number of places to scrape PER query. Each query gets its own budget — e.g. 50 with 3 queries = up to 150 leads. Leave empty for unlimited (use with caution). default 150 |
| extractEmails | boolean | When ON, visit each business's website to extract a contact email when Google Maps does not already provide one. Turn OFF to skip website visits entirely and speed-up extraction. default false |
| minRating | number | Drop places with a star rating BELOW this value (1.0 - 5.0). Leave empty for no minimum. Example: 4.0 keeps only 4-star and above. Places with no rating are kept regardless. |
| maxRating | number | Drop places with a star rating ABOVE this value (1.0 - 5.0). Leave empty for no maximum. Example: 4.5 keeps only 4.5-star and below. Useful for finding underperforming competitors. |
| businessStatus | array | Keep only places whose Google Maps status matches one of these. Defaults to all three (no filtering). default ["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"] |
| dropIfNoContact | boolean | When ON (default), drop places that have NONE of: phone number, or social links. Lead-generation mode — only keep businesses you can actually contact. Turn OFF to keep all places regardless of contact info. default true |
| lang | string | Google Maps UI language code (hl parameter). Affects the language of returned text fields like address, categories, etc. default "en" |
| gl | string | Google Maps country/region code (gl parameter). Affects which regional results are returned. default "us" |
| keepExtraFields | boolean | When ON, retain photos, menu, and about sections in the output. OFF (default) strips these heavy fields to speed up processing, recommended for pure lead generation. default true |
Call it
curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
-H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
-d '{"provider":"apify","endpoint":"/code-node-tools/google-maps-lead-scraper","input":{"queries":[],"maxResultsPerKeyword":150,"extractEmails":false,"businessStatus":["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"],"dropIfNoContact":true,"lang":"en","gl":"us","keepExtraFields":true},"wait":false}'poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."cli
npx cracked-ai run -p apify -e /code-node-tools/google-maps-lead-scraper -i '{"queries":[],"maxResultsPerKeyword":150,"extractEmails":false,"businessStatus":["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"],"dropIfNoContact":true,"lang":"en","gl":"us","keepExtraFields":true}' -w 120mcp
run_tool({ provider: "apify", endpoint: "/code-node-tools/google-maps-lead-scraper", input: {"queries":[],"maxResultsPerKeyword":150,"extractEmails":false,"businessStatus":["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"],"dropIfNoContact":true,"lang":"en","gl":"us","keepExtraFields":true}, wait: false })Try it
Runs against your signed-in workspace balance. Sign in if you have not.