Apify Store
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

FieldTypeDescription
queries*arrayList 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'].
maxResultsPerKeywordintegerMaximum 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
extractEmailsbooleanWhen 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
minRatingnumberDrop 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.
maxRatingnumberDrop 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.
businessStatusarrayKeep only places whose Google Maps status matches one of these. Defaults to all three (no filtering). default ["OPERATIONAL","CLOSED_TEMPORARILY","CLOSED_PERMANENTLY"]
dropIfNoContactbooleanWhen 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
langstringGoogle Maps UI language code (hl parameter). Affects the language of returned text fields like address, categories, etc. default "en"
glstringGoogle Maps country/region code (gl parameter). Affects which regional results are returned. default "us"
keepExtraFieldsbooleanWhen 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 120
mcp
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.