Google Maps Lead Priority Scorer
Pricing
from $1.50 / 1,000 scored leads
Google Maps Lead Priority Scorer
Scores Google Maps places (from any Google Maps scraper's output) into a single 0-100 lead-priority score by combining missing website, unclaimed profile, GBP completeness, and relative review count. Zero-fetch, zero-LLM.
Pricing
from $1.50 / 1,000 scored leads
Rating
0.0
(0)
Developer
オレンジ Tb
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
What does Google Maps Lead Priority Scorer do?
Type a business type (e.g. "plumber") and a city, and this Actor returns Google Maps leads sorted by a single, sortable lead-priority score from 0 to 100 for every business — in one run, no separate scraper step required. It calls Google Maps Scraper for you under the hood to fetch the places, then combines four signals that local SEO and marketing agencies already sell against — no independent website, an unclaimed Google Business Profile, missing profile fields, and a below-median review count versus similar nearby businesses — into one number plus a plain-English list of reasons.
It makes no external API or LLM calls of its own. You can also skip the built-in fetch and paste in the output of any Google Maps scraper you already ran — see Advanced below.
Key features
- 🔎 One-run search — give it a business type and a city; it fetches and scores in a single Actor run, no separate scraper Actor to configure first.
- 🎯 Combined lead-priority score — no independent website, unclaimed profile, GBP completeness, and relative review count merged into a single 0-100 number instead of four separate exports to juggle.
- 🧹 Filter before you pay — set
leadFilter(e.g. "no website OR unclaimed") and only matching leads are scored and charged for. - 📈 Change tracking between runs — run this Actor again later on the same area and every lead is tagged
NEW,UPDATED, orUNCHANGEDvs. last time, so you only re-review what actually moved. - 🚫 Closed businesses excluded automatically — places marked permanently closed on Google Maps are dropped before scoring, so you never call a business that no longer exists.
- 🔔 Built-in Slack / Discord / webhook notifications — post a summary of new or updated leads straight to your team, no separate integration setup required.
Why use this Actor?
Existing tools give you one signal at a time — a list of businesses with no website, or a list of unclaimed profiles. But a business missing a website and unclaimed and falling behind its neighbors on reviews is a much hotter lead than one missing just a website. This Actor combines the signals so your sales team can sort by a single number instead of juggling four separate exports — and does the Google Maps fetch itself, so you don't need to run and configure a separate scraper Actor first.
Typical users: local SEO agencies and freelancers doing outbound prospecting, marketing agencies building target lists for a specific city or category, and directory/listing sites prioritizing which businesses to reach out to for profile claims.
How to use Google Maps Lead Priority Scorer
- Set Business types to search for (
searchTerms, one per line, e.g. "plumber") and Location (location, one city/area per run, e.g. "Leeds, UK"). Minimal input:{ "searchTerms": ["plumber"], "location": "Leeds, UK" } - Optionally narrow with Lead filter (
leadFilter) and Minimum priority tier (minTier) so you only pay to score/output the leads you actually want. - Run it. Results are sorted highest-priority first, each with
checksAppliedshowing which checks fed into its score. - Already have a Google Maps scraper's dataset output? Skip the fetch entirely — see Advanced below.
Input
| Field | Type | Description |
|---|---|---|
searchTerms | array of strings | Business types to search for, one per line (e.g. ["dentist"]) |
location | string | One city/area per run (e.g. "Austin, Texas") |
maxPlacesPerSearch | integer | Default 100 — max places fetched per search term. Charged to your own Apify account by Google Maps Scraper, ~$4/1,000 places on the free plan |
language | string | Language for the Google Maps results — en (default), ja, de, fr, es, pt-BR, it, nl |
leadFilter | string | all (default), noWebsiteOrUnclaimed, noWebsiteAndUnclaimed, noWebsite, unclaimed — only matching places are scored/output |
minTier | string | Hot, Warm, or Cold (default) — the minimum tier to include in the output |
checkOpeningHours | boolean | Default false — also fetch each place's opening hours (+$0.002/place on the free plan) |
places (advanced) | array | Skip the built-in fetch and score a Google Maps scraper's dataset output you paste in directly — see Advanced |
slackWebhookUrl | string (optional) | Slack Incoming Webhook URL — posts a summary after each run |
discordWebhookUrl | string (optional) | Discord Channel Webhook URL — posts a summary after each run |
webhookUrl | string (optional) | Any URL — receives a structured JSON summary (e.g. for n8n/Make) |
notifyOnlyNewOrUpdated | boolean | Default true — only include NEW/UPDATED leads in notifications |
leadFilter values:
| Value | Keeps a place when |
|---|---|
all | always |
noWebsiteOrUnclaimed | no website OR unclaimed profile |
noWebsiteAndUnclaimed | no website AND unclaimed profile |
noWebsite | no website |
unclaimed | unclaimed profile |
Filtered-out places are never scored or pushed, so they are never charged for.
Output
{"title": "Lemari Coffee","placeId": "ChIJv79rmEfzGGARhXlSEd8ceiQ","priorityScore": 60,"tier": "Warm","changeStatus": "NEW","reasons": ["No independent website (social-media link or none at all)","No business description"],"hasRealWebsite": false,"isUnclaimed": false,"completenessScore": 70,"reviewPercentileInGroup": 25.0,"checksApplied": ["has_website", "is_unclaimed", "completeness", "review_percentile"]}
checksApplied is included when this Actor did the fetch itself (i.e. you gave searchTerms/location); it lists which checks fed into that item's score. It is omitted when you paste in places directly.
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Scoring breakdown
| Signal | Max points |
|---|---|
| No independent website (a bare social-media link doesn't count) | 35 |
| Unclaimed Google Business Profile | 25 |
| Other missing profile fields (phone, description, hours, photos, categories) | 25 |
| Review count below the median for similar nearby businesses | 15 |
Tiers: Hot ≥ 70, Warm 40–69, Cold < 40.
Data table
| Field | Type | Description |
|---|---|---|
title | string | Business name |
placeId | string | Google Maps place ID |
priorityScore | number | 0-100 combined lead-priority score |
tier | string | Hot, Warm, or Cold |
changeStatus | string | NEW, UPDATED, or UNCHANGED vs. the previous run on this Actor |
reasons | array | Plain-English reasons contributing to the score |
hasRealWebsite | boolean | False if no site, or only a social-media link |
isUnclaimed | boolean | True if the Google Business Profile is unclaimed |
completenessScore | number | 0-100 GBP profile completeness |
reviewPercentileInGroup | number | Review-count percentile vs. same city+category peers |
checksApplied | array | Which checks fed this item's score (fetch mode only) |
Pricing / cost estimation
This Actor runs the Google Maps fetch as compass/crawler-google-places on your own Apify account — that fetch is billed to you directly by Google Maps Scraper (about $4 per 1,000 places on the free plan, less on paid tiers). On top of that, this Actor charges its own pay-per-event fee: $0.005 when a run starts (only charged once at least 1 place has been fetched) plus $0.0015 per scored lead actually returned. Filtered-out places (via leadFilter/minTier) are never returned or charged for.
Worked example — 1 search term, maxPlacesPerSearch 1000, free-plan buyer:
| Scenario | Compass fetch (buyer's account) | This Actor's fee | Total |
|---|---|---|---|
leadFilter: all (1,000 leads scored) | $4.00 | $1.51 | ≈ $5.51 |
leadFilter narrowed to the observed ~12% match rate (≈120 leads scored) | $4.00 | $0.19 | ≈ $4.19 |
Paid Apify plans (Bronze/Silver/Gold) get cheaper compass fetch pricing, so the total drops accordingly — this Actor's own fee stays the same either way.
Advanced: score your own scraper output
Already ran a Google Maps scraper and have its dataset? Skip the built-in fetch by pasting that array of place objects into the Google Maps places (places) field instead of setting searchTerms/location (or chain the two Actors together with an Apify integration). No upstream call is made, so you're only charged this Actor's own fees ($0.005 per run + $0.0015 per scored lead) and no upstream fetch cost. In this mode, output items omit checksApplied.
Tips
- Score places from a single city/category batch at a time — the review-percentile signal compares each business against others in the same city and category, so mixing very different markets in one run dilutes that signal.
- Set
minTier: Hotand/or a narrowleadFilterif you only want to pay to fetch and score the highest-value leads. - Set
slackWebhookUrl/discordWebhookUrl/webhookUrlto get notified automatically — by default only new/updated leads are included, so re-running the same area on a schedule only pings you about what actually changed. - Prefer Telegram, WhatsApp, or an app connector like Notion? This Actor's built-in webhooks cover Slack/Discord/generic; for anything else, use this Actor's Integrations tab in Apify Console, which works the same way for every Actor on the platform.
FAQ, disclaimers and support
- The built-in fetch calls Google Maps Scraper on your own Apify account; when you paste
placesdirectly instead, this Actor never fetches any website or calls Google itself, and accuracy depends entirely on the freshness of the place data you feed it. - A business with a social-media page (Instagram, Facebook, etc.) instead of its own website is treated the same as having no website, since that's the actual pitch local SEO agencies make.
- Found an edge case or want a different scoring weight scheme? Use the Issues tab on this Actor's page.
Legal & responsible use
This Actor is an independent, unofficial tool. It is not affiliated with, endorsed by, or sponsored by Google. "Google Maps" and "Google Business Profile" are trademarks of Google LLC, used here only to describe compatibility.
The presence of a phone number or address on a public Google Business Profile does not by itself constitute consent to receive marketing calls or messages. Before using this data for outreach you are responsible for complying with the laws that apply to you and your recipients — for example GDPR/UK GDPR, CAN-SPAM and TCPA in the US, and Japan's Act on Regulation of Transmission of Specified Electronic Mail and Act on Specified Commercial Transactions. This Actor does not verify consent or opt-in status.
Changelog
- 0.2 (2026-09-15) — Added a built-in Google Maps fetch: give
searchTerms+locationand this Actor calls Google Maps Scraper for you instead of requiring a pasted dataset. AddedleadFilter(folds in the former nosite-unclaimed filter modes) andcheckOpeningHours. Pastingplacesdirectly moved to an Advanced section; still supported unchanged. The upstream fetch is capped per run at max(estimate + $0.05, $0.50) — $0.50 is the platform minimum formax_total_charge_usd. - 0.1.7 (2026-09-08) — Prefilled sample input so the Actor runs out of the box / passes automated QA.
- 0.1.6 (2026-09-04) — Public release on Apify Store. Fixed partial-match false positives for social-network domains (e.g.
x.com) in website detection; added Legal & responsible use section, pricing display names, and README examples. - 0.1.1 (2026-08-28) — Initial build.