Google Maps Lead Finder & Website Opportunity Scores
Pricing
from $3.00 / 1,000 enriched local business leads
Google Maps Lead Finder & Website Opportunity Scores
Find local businesses by niche and location and assess public website, review and contact signals. Export explainable opportunity scores for agency prospecting. Results depend on source access and available public data.
Pricing
from $3.00 / 1,000 enriched local business leads
Rating
0.0
(0)
Developer
Scopras Data Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Google Maps Local Business Opportunity Finder
Generate qualified local business leads for web agencies, SEO consultants and sales teams. Search Google Maps by niche and location, find businesses with clear digital gaps, and prioritize outreach using explainable scores.
Discovers local businesses from Google Maps searches or direct place URLs and scores each one for website, SEO, reputation and outreach opportunity using a deterministic formula.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
searchQueries | string[] | [] | Categories/keywords. Combined with every location. |
locations | string[] | [] | One task per query × location. Without searchQueries, the generic term "business" is searched. |
startUrls | array | [] | Google Maps search URLs or direct place URLs ({ "url": "..." } or a bare string). Invalid or non-Maps URLs are skipped with a warning; requestsFromUrl is not supported. |
maxResultsPerSearch | integer | 20 | Cap per search task. |
maxTotalResults | integer | 100 | Global cap on unique businesses emitted. |
includeClosedBusinesses | boolean | false | When false, permanently/temporarily closed places are dropped; their status is still reported when true. |
language | string | "en" | hl hint passed to Google Maps. |
requestTimeoutSecs | integer | 30 | Per-request timeout for Maps and website fetches. |
enrichFromWebsite | boolean | true | Enables the SSRF-guarded website crawl. |
maxWebsitePagesPerBusiness | integer | 2 | Homepage + N−1 same-origin secondary pages. |
websiteConcurrency | integer | 5 | Parallel website fetches. |
respectRobotsTxt | boolean | true | Skip pages disallowed by the site's robots.txt. |
maxWebsiteBytes | integer | 1500000 | Hard byte ceiling per website page. |
Every input field changes behaviour; there are no inert options.
Output
One dataset item per unique business — see .actor/dataset_schema.json for the
full contract. Highlights:
placeId— a realChIJ…Place ID or0x…:0x…CID only when present in the source. URL slugs never become a Place ID; the value isnullotherwise.identityKey— deterministicname + address + rounded geo(orPlace ID, orname + phone). The source URL is deliberately excluded so the same business found via different URLs merges while the same name at another address stays separate.matchedSearches— every search input that produced the business; unioned on merge.businessStatus—OPERATIONAL | CLOSED_TEMPORARILY | CLOSED_PERMANENTLY | UNKNOWN.websiteEnrichment—requested/attempted/status(ok | skipped | failed | not-requested) /reason, plus HTTPS, mobile viewport, title, meta description, and only literally present emails, phones and social profiles. No email guessing.opportunityScore,leadPriorityScore(0–100),opportunityGrade(A–F),opportunityReasons,recommendedPitch,scoreBreakdown.
The run writes a SUMMARY record to the default key-value store with search /
dedupe / website counters and failuresByReason.
Scoring
opportunityScore is a weighted average of 0–1 signals: no website (w3),
insecure website (w2), no mobile viewport (w2), missing meta description (w1),
weak reputation vs. a 3.0–4.8 benchmark (w2), low review count (w2). Missing data
lowers a signal — it never fabricates an opportunity. leadPriorityScore
blends the opportunity with reachability (phone/website/email/social) and review
volume. Grades use the shared 80/65/50/35 bands.
Safety
- Google Maps host allow-list; non-Maps hosts and non-http(s) URLs are rejected
with an actionable
ConfigError. - Website fetches go through the shared
safeFetch: http/https only, DNS checked against private/loopback/link-local/CGNAT/metadata ranges on every hop, manual redirects with a cap + loop detection, content-type allow-list, real byte ceiling,AbortControllertimeout always cleared infinally. - robots.txt is honoured for website pages when
respectRobotsTxtis on. - Only same-origin secondary pages are crawled.
- No CAPTCHA solving, no login, no private endpoints.
Known limitations
- Google Maps returns its JavaScript shell to plain HTTP requests. This Actor reads Maps with simple HTTP fetches (no browser). Google's response to such a request contains no place listings (they are loaded afterwards by JavaScript), so live runs will usually find 0 businesses. In that case the run still finishes normally, the status message says so, and nothing is charged. Scoring, deduplication and website enrichment work, but they need places to work on; a browser-based collector is required for reliable Maps data.
- Input problems (bad URLs, out-of-range numbers) are repaired or skipped with a warning instead of failing the run.
categoryNameis only populated when the payload exposes it.
Pricing
Events are charged only after leads are written to the dataset, and only if at
least one lead was delivered: actor-start once, lead-enriched per lead. Runs
with zero results cost nothing. Delivery stops at your max-charge limit.