Google Maps AI Leads | Score + Outreach avatar

Google Maps AI Leads | Score + Outreach

Pricing

from $3.00 / 1,000 scored leads

Go to Apify Store
Google Maps AI Leads | Score + Outreach

Google Maps AI Leads | Score + Outreach

Google Maps AI lead generator: scrape local businesses, score HOT/WARM/COLD by ICP, get Claude outreach. Multi-city. Phones, websites, ratings. AI off $3/1k · AI on $5/1k. Sales-ready B2B leads—not a raw Maps dump.

Pricing

from $3.00 / 1,000 scored leads

Rating

0.0

(0)

Developer

Rohit

Rohit

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Google Maps AI lead generator for sales teams and agencies: scrape Google Maps businesses, score local leads HOT/WARM/COLD by ICP, and write Claude Sonnet 5 outreach in one run.

Extract names, phones, websites, ratings, review counts, addresses, then get a lead score, tier, reason, and ready-to-send outreach — multi-city, not a raw field dump.

AI offScored leads $3 / 1,000
AI onScore + Claude outreach $5 / 1,000
AI modelClaude Sonnet 5 (Terra fallback)
Best forB2B local leads, no-website agency lists, multi-city prospecting

Search this Actor as: Google Maps AI leads, Google Maps lead extractor, scored local leads, Google Maps outreach.


What is Google Maps AI Leads?

This Google Maps scraper for lead generation finds businesses by keyword + city (e.g. dentists in Austin, plumbers Dallas), pulls public listing data, then ranks who to call first.

Unlike a classic Google Maps data extractor that only dumps places, this Actor is built for sales-ready B2B leads:

Use caseHow this helps
Any product outboundDefault ranking: phone + rating + reviews (website OK)
Web / digital agenciesICP mode: no website = HOT; has website = COLD
Multi-city lead genMany queries × many locations in one run
AI outreachClaude Sonnet 5 drafts research-backed messages
CRM / automationExport JSON/CSV/Excel; API, Make, Zapier, Sheets

It is not a full clone of mega Maps scrapers (every review photo, hotels, Q&A). Use those for raw dumps. Use this for who to contact and what to say.


✨ What you get per lead

Core Maps fields (always when found)

Field
🔗Place name, category / categories, place ID, Maps URL
📍Address, city, state, postal code, country, lat/lng
☎️Phone number
🌐Website (and hasWebsite boolean)
⭐️Average rating + review count
🧑‍🍳Opening hours (when available)
🔒Business status (open / temporarily closed / permanently closed)
🏷Claimed status (when available)
🔎searchQuery + locationQuery that produced the row
🕒scrapedAt timestamp

Lead intelligence (default on)

Field
🎯leadScore / icpFitScore 0–100 (fit for your sales mode)
📊qualityScore — universal business quality (rating, reviews, phone)
🔥leadTierHOT / WARM / COLD
🏷icpTags + icpPresetUsed
🧠leadReason — why this lead ranks (Claude Sonnet 5 when AI on)
✉️outreachMessage — research-backed outreach draft
📈contactScore, aiConfidence, aiModel when AI ran

Optional enrichment (off by default)

Field
📧Public emails from the business website
📱Public social links (Instagram, Facebook, LinkedIn, Twitter/X) when found on site
📈End-of-run market report row (recordType: "market_report")

🚀 Abilities that matter for lead gen

  • Multi-query × multi-location in a single run — e.g. ["dentists", "orthodontists"] × ["Austin, TX", "Dallas, TX"]
  • ICP ranking modes (two-layer score: quality + fit):
    • sales_general (default) — any product: phone + reputation
    • agency_no_website — web agencies: no website = HOT
    • franchise_expansion — market density: high reviews + rating
  • AI modes that map to price (powered by Claude Sonnet 5, Terra fallback — see Pricing):
    • off — rules score only → $3/1k
    • all — AI outreach on every saved lead → $5/1k
    • hot — AI only on HOT leads → ~$3–5/1k (pay AI only when used)
  • Extract modes for speed vs depth:
    • list (default) — search cards only; fastest for volume
    • hybrid — list first; open detail only if phone/website/rating missing
    • detail — full place page every time; richest, slowest
  • Hard capsmaxPlacesPerLocation + maxPlacesTotal so runs stay predictable
  • Quality filtersminRating, minReviews, mustHavePhone, websiteFilter, excludeClosed, onlyOutputMinScore
  • Proxy-ready — Apify Proxy on by default for platform runs
  • Budget-safe PPE — charges per saved lead (and per AI outreach when written); respects max total charge

💰 Pricing — cheapest on Apify for AI quality leads

The best value among Apify Maps / lead Actors — especially if you want AI for quality leads, not a raw field dump.

Most competitors either:

  • charge more per 1,000 places for basic scrape data, or
  • stack base scrape + AI summary + AI score + enrichment into a much higher effective bill

We keep one clear story:

ModeInputWhat you getFace price
AI mode OFFaiMode: "off"Scored lead (fields + score + tier + tags)$3 / 1,000 leads
AI mode ONaiMode: "all"Everything above + Claude Sonnet 5 reason + outreach$5 / 1,000 leads

That’s full AI quality leads (score + Claude Sonnet 5 reason + outreach) at $5/1k — typically the lowest all-in AI lead price you’ll find on the Store for this use case.

How events map (pay-per-event)

Event nameConsole titleUnitWhen charged
place-scrapedScored lead$0.003Every lead saved to the dataset
lead-intelligenceAI outreach$0.002Only when AI actually wrote outreachMessage for that lead

Quick math

RunApprox face*
1,000 leads · AI off$3.00
1,000 leads · AI on (all)$5.00
100 leads · AI on (all)$0.50
1,000 leads · AI hot (~30% HOT get outreach)~$3.60

*Face list price before your Apify Store plan discount. Platform also applies a tiny synthetic start fee and compute units (CU) separately. Optional website enrichment / market report are not part of the two main prices (default off).

Publisher note: In Console Monetization, configure the same event names and prices. Prefer synthetic apify-actor-start. Do not also enable synthetic default-dataset-item billing if you charge place-scraped (that double-bills each row).


⬇️ Input

Provide at least one search query and one location. You can set this in the Actor UI or programmatically via API / apify-client.

Minimal example

{
"searchQueries": ["dentists"],
"locations": ["Austin, TX"]
}
{
"searchQueries": ["dentists", "orthodontists"],
"locations": ["Austin, TX", "Dallas, TX"],
"maxPlacesPerLocation": 50,
"maxPlacesTotal": 200,
"extractMode": "list",
"enableLeadIntelligence": true,
"aiMode": "hot",
"icpPreset": "sales_general",
"customIcpNotes": "We sell commercial cleaning to local service businesses.",
"onlyOutputMinScore": 60,
"minRating": 4,
"minReviews": 10,
"mustHavePhone": true,
"excludeClosed": true,
"enableContactEnrichment": false,
"enableMarketReport": false,
"useApifyProxy": true,
"maxConcurrency": 5
}

Search queries

Use distinct terms that match how people search Maps.

GoodBad
["restaurant", "bar", "cafe", "bakery"]["restaurant", "restaurants", "chinese restaurant"] (near-duplicates, slower, little extra coverage)
["plumber", "emergency plumber", "drain cleaning"]One mega-phrase only when you need breadth

Slight category overlap is fine; long lists of synonyms usually only add runtime.

Locations

  • City / metro: "Austin, TX", "Berlin, Germany"
  • Neighborhood or address-level strings work when Maps resolves them
  • Multiple locations = one run (no orchestrator required for normal multi-city jobs)

Key input fields

FieldDefaultPurpose
searchQueriesrequiredKeywords / categories to search
locationsrequiredAreas to search
maxPlacesPerLocation50Cap per city/area after dedup
maxPlacesTotal100Cap for whole run
extractModelistlist · hybrid · detail
enableLeadIntelligencetrueScore + optional AI
aiModehotoff · hot · all (drives pricing)
llmMinScore60Skip LLM below this score
onlyOutputMinScore0Drop low-score rows from output
icpPresetagency_no_websiteScoring profile
customIcpNotes""Extra context for outreach (public business only)
minRating / minReviews0Quality filters
mustHavePhonefalseRequire phone
websiteFilteranyany · has · missing
excludeClosedtrueDrop permanently closed
enableContactEnrichmentfalseCrawl site for public email/social
enableMarketReportfalseOne market summary at end
skipTileExpansiontrueFaster; set false to expand geo tiles when lists plateau
maxConcurrency5Parallel browser pages (more = faster, more CU)
useApifyProxytrueRecommended on platform
languageenMaps UI language (hl)

Speed tips

  1. Prefer extractMode: "list" for large lead lists
  2. Use aiMode: "hot" so you only pay AI on top leads
  3. Raise maxConcurrency carefully (memory / CU)
  4. Keep skipTileExpansion: true unless you need deeper geographic coverage
  5. Filter early (onlyOutputMinScore, websiteFilter, minReviews) so you don’t store noise

⬆️ Output

Results land in the run Dataset (Output / Storage tab). Export as JSON, CSV, Excel, XML, or HTML. The Leads overview view highlights the columns sales teams care about first.

Sample lead row

{
"placeId": "ChIJ…",
"name": "Example Dental",
"address": "123 Main St, Austin, TX 78701",
"city": "Austin",
"state": "Texas",
"postalCode": "78701",
"countryCode": "US",
"phone": "+15125550123",
"website": null,
"hasWebsite": false,
"category": "Dentist",
"categories": ["Dentist", "Dental clinic"],
"rating": 4.8,
"reviewCount": 142,
"businessStatus": "OPEN",
"isClaimed": true,
"latitude": 30.2672,
"longitude": -97.7431,
"mapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ…",
"openingHours": [
"Monday: 8 AM – 5 PM",
"Tuesday: 8 AM – 5 PM"
],
"searchQuery": "dentists",
"locationQuery": "Austin, TX",
"scrapedAt": "2026-04-08T12:00:00.000Z",
"leadScore": 88,
"leadTier": "HOT",
"leadReason": "Strong ratings and review volume with no website — strong fit for agency outreach.",
"outreachMessage": "Hey — saw Example Dental has solid reviews on Maps but no site yet. curious if you ever thought about a simple page for bookings? happy to share what other dentists do if useful",
"icpTags": ["no_website", "high_rating", "agency_fit"],
"contactScore": 72,
"aiConfidence": 0.82,
"aiModel": "claude-sonnet-5",
"recordType": "place"
}

Dataset views

ViewBest for
Leads overviewSorting by score / tier; calling list with phone + outreach
Full dataset / JSONAutomation, CRM import, custom fields

Metrics

Each run also writes a METRICS object to the default key-value store (places found/output/filtered, intelligence success/fail, charges, early stop flags). Useful for debugging cost and coverage.


🤖 AI outreach — Claude Sonnet 5

This Actor uses Anthropic Claude Sonnet 5 (claude-sonnet-5) for lead intelligence when AI mode is on.

Primary modelClaude Sonnet 5 — reasons + humanized outreach
APIAnthropic Messages · POST {base}/messages
FallbackGPT‑5.6 Terra (gpt-5.6-terra) via OpenAI POST {base}/chat/completions — only if Claude fails after retries
On the rowaiModel is set to claude-sonnet-5 (or the fallback model if used)

What Claude Sonnet 5 writes per lead

  • leadReason — 1–2 sentences on why the lead is HOT/WARM/COLD for your ICP
  • outreachMessage — short, humanized outreach (light natural grammar, not robotic) from public Maps signals
  • aiConfidence + icpTags when returned

How it works

  1. Rules engine scores every place (ICP weights, rating, reviews, website presence, etc.).
  2. Tier is assigned: HOT / WARM / COLD.
  3. If aiMode is hot or all and the lead clears llmMinScore, the Actor calls Claude Sonnet 5 first (end users don’t paste API keys).
  4. Claude returns leadReason + outreachMessage grounded in public listing signals — it does not invent private contacts.
  5. If Claude is down, the run automatically retries on Terra, then continues.
  6. PPE event AI outreach is charged only when outreach was actually written.

If both providers fail, the Actor still returns rule-based scores and tiers (no fake outreach).

Owner LLM gateway (Actor publisher)

Set these as Actor environment variables (keys = Secret):

VariablePurpose
LLM_GATEWAY_BASE_URLShared base, e.g. https://api.contactboxtools.me/v1
LLM_CLAUDE_API_KEYPrimary Claude Sonnet 5 key
LLM_CLAUDE_MODELclaude-sonnet-5
LLM_OPENAI_API_KEYFallback GPT key
LLM_OPENAI_MODELgpt-5.6-terra

End users of the Store Actor never paste their own keys for core scoring/outreach.


🔌 Integrate with other tools

Because this is a normal Apify Actor, you can:

  • Schedule recurring multi-city lead pulls
  • Send dataset rows to Google Sheets, Make, Zapier, webhooks, or your CRM
  • Call it from Node or Python with apify-client
  • Chain with other Actors (enrichment, email tools, Slack alerts) after a successful run

Use webhooks to notify your stack when a run succeeds or fails.

API sketch (Node)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('USERNAME/scored-local-leads-maps').call({
searchQueries: ['dentists'],
locations: ['Austin, TX'],
maxPlacesTotal: 50,
aiMode: 'hot',
icpPreset: 'agency_no_website',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

❓ FAQ

How is this different from a classic Google Maps scraper?

Classic scrapers maximize fields per place (reviews, photos, amenities, hotels…). This Actor maximizes sales actionability: score, tier, reason, outreach, multi-city, simple AI on / AI off pricing.

Do I need categories lists with 100 synonyms?

No. Start with a few clear search queries and locations. Use filters (websiteFilter, minRating, onlyOutputMinScore) to shape the list. Over-specifying synonym categories is usually unnecessary here.

Why not more than ~120 results per area?

Google Maps UI search is finite per map view. Use multiple locations (or disable skipTileExpansion for neighbor tiles) and sensible query splits to cover larger metros. Always set maxPlacesPerLocation / maxPlacesTotal for cost control.

Can I extract full review text / reviewer profiles?

Not in the current product focus. You get rating + review count for scoring. For full review NLP, pair with a dedicated reviews Actor if needed.

Can I get emails from the business website?

Yes — turn on optional website contact enrichment to collect public emails and social links from the company site. Core AI outreach uses listing signals (rating, website presence, category, etc.) and does not invent private contacts.

Is this really cheaper than other Apify Maps Actors?

Yes for quality lead output. At $3/1k scored or $5/1k with AI outreach, you avoid the usual pattern of paying a higher base scrape rate plus separate AI / enrichment add-ons. For teams that care about who to call and what to say, this is the cheapest AI quality-leads option on Apify.

What happens if I hit my max charge limit?

Billable work already saved stays in the dataset. The crawl aborts cleanly when the PPE budget limit is reached so you don’t keep spending compute with no billing headroom.

List vs hybrid vs detail — which should I pick?

GoalMode
Max leads / min timelist
Need phone/website when list card is thinhybrid
Deepest place page fields every timedetail

Is website enrichment free?

No — when enabled and successful it can charge the optional enrichment event. It is off by default and not part of the two main AI prices. Prefer filters + AI score first.


🛠 Local development (publishers / contributors)

npm install
cp .env.example .env # LLM gateway secrets — never commit
apify run -p # uses storage/key_value_stores/default/INPUT.json
npm test
npm run build
apify push # deploy build to Apify

Stack: TypeScript, Crawlee PlaywrightCrawler, Apify SDK · Docker image apify/actor-node-playwright-chrome with Playwright pinned for the image.

Hot-fix surface: Google changes DOM often — update src/config/selectors.json and re-test small runs after Maps UI shifts.


🗺 Why teams pick this over other Apify Maps Actors

Typical Maps scraper on ApifyThis Actor
Primary outputHuge place JSONScored quality lead
Who to call firstDIY in sheetsleadScore / leadTier
What to sayBlankoutreachMessage via Claude Sonnet 5
AI modelOften mini / genericClaude Sonnet 5 (+ Terra fallback)
PricingHigher base + AI / enrich add-onsCheapest: $3/1k or $5/1k AI
Multi-cityOften many runsFirst-class locations[]
FocusEvery field on the pageSales-ready quality leads

📣 Feedback

Found a Maps UI break, a scoring miss, or a pricing/docs gap? Open an issue on the Actor’s Issues tab with a short input sample and the run ID.


Google Maps AI Local Leads — multi-city Maps → score, tier, and Claude Sonnet 5 outreach.
AI model: Claude Sonnet 5 · Cheapest AI quality-leads on Apify: $3/1k · $5/1k with AI.