Google Maps Lead Qualifier | Website Gaps + Outreach
Pricing
from $4.00 / 1,000 qualified opportunities
Google Maps Lead Qualifier | Website Gaps + Outreach
Turn Google Maps results or existing business lists into qualified sales opportunities. Audit public websites, detect booking and lead-generation gaps, rank leads by confidence, recommend services, and generate evidence-backed outreach.
Pricing
from $4.00 / 1,000 qualified opportunities
Rating
0.0
(0)
Developer
Murilo Lira
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 hours ago
Last modified
Share
Find local businesses you can pitch today
Enter a niche and US city. Get contactable local businesses with verified booking or lead-capture gaps, the service to pitch, and a tailored first message. Sales-ready leads and high-quality near misses are delivered separately.
This Actor combines Google Maps discovery, public website auditing, contact-route extraction, commercial qualification, and channel-specific outreach. It is built for agencies and freelancers selling online booking, lead capture, websites, tracking, or CRM automation to local businesses.
What you receive
| Result | Included information |
|---|---|
| Business | Name, category, address, rating, reviews, website, and Google Maps URL |
| Best contact route | Public email, phone, checked contact form, or public WhatsApp URL, with source provenance |
| Verified opportunity | Opportunity score, lead tier, top gaps, supporting evidence, and recommended service |
| Ready outreach | Email subject/body, call opener, form message, or WhatsApp message for the available channel |
| Quality controls | Evidence confidence, profile completeness, audit completeness, missing fields, and qualification explanation |
The default view puts the sales decision first:
Business -> lead tier -> best contact -> opportunity -> top gaps-> service to sell -> first message -> website -> Google Maps
Run your first Google Maps lead search
- Leave Input mode set to Google Maps search.
- Enter a niche, city, and state, such as
auto repair shops in Tampa FL. - Choose how many businesses to inspect and run the Actor.
{"inputMode": "maps_search","searchQueries": ["auto repair shops in Tampa FL"],"maxResultsPerQuery": 20,"maxTotalResults": 20,"maxDiscoveryCostUsd": "0.50","targetService": "auto","minimumOpportunityScore": 40,"nearMissMinimumOpportunityScore": 25,"minimumConfidenceScore": 0.90,"minimumInformationCompletenessScore": 0.85,"includeNearMisses": true,"generatePitchAngle": true,"outputLanguage": "en"}
Good starting searches for the US-first offer include:
auto repair shops in Tampa FL;roofing contractors in Charlotte NC;beauty salons in Phoenix AZ.
What makes a lead sales-ready
A row reaches the default Sales-ready leads dataset only when every required gate passes:
opportunity score >= 40evidence confidence >= 90%business profile completeness >= 85%website audit completeness >= max(87%, configured profile floor)commercial output completeness = 100%overall applicable information completeness >= 87%usable public contact route is requiredcritical identity and provenance fields are validaudit status is success, partial, or trusted no_website
The sales-ready score cutoff is fixed at 40. This keeps qualification and per-result charging deterministic; input changes cannot relabel a standard sales-ready score as research output without the qualified event.
The 85% profile and 90% evidence values are minimums and may be raised. The audit gate is always at least 87% and rises with a stricter configured profile floor. The profile minimum allows one optional field to be absent when six of seven profile fields are valid: 6 / 7 = 85.71%. That subscore is exposed separately as weakestGroupCompletenessScore; the buyer-facing informationCompletenessScore is the actual known/applicable total and has its own hard 87% gate.
Critical requirements cannot be compensated by percentages. A sales-ready lead needs:
- a credible business identity;
- a valid website or trusted Google Maps no-website claim;
- a usable email, phone, checked contact form, or public WhatsApp URL;
- evidence supporting at least one commercial gap;
- a matching service recommendation;
- complete channel-specific outreach.
false and numeric 0 are known information. null, blank strings, placeholders, malformed URLs, and unusable phone numbers are not.
Near misses
Near misses are useful leads that pass the same evidence, information, audit, provenance, contactability, and commercial-output gates but score below the sales-ready threshold.
With the defaults, a near miss has an opportunity score from 25 through 39. It is written to the separate Near misses dataset with:
nearMissReason;opportunityPointsNeeded;- the best contact route;
- top verified gaps;
- the matching service and outreach fields.
Near misses do not trigger the qualified-opportunity event. Records below the quality gates are not disguised as near misses; they appear only in optional audit evidence and aggregate run diagnostics.
Contact extraction and outreach
The Actor searches checked public pages for:
mailto:email addresses and visible email text;- the Google Maps source phone;
- same-host contact pages with a usable form;
- public WhatsApp contact links.
The preferred route is selected in this order: usable public email, valid phone, checked contact form, then WhatsApp. The output records both the selected value and its source.
Important email terminology:
domain_matchedmeans the public email domain matches the business website;public_free_providermeans the public email uses a common mailbox provider;public_syntax_validmeans the public address is syntactically usable;- none of these labels claims inbox ownership or guaranteed deliverability.
Generated outreach is evidence-specific and channel-specific. The Actor does not send messages automatically; review the evidence and copy before contacting a business.
Output datasets
Sales-ready leads
The default dataset contains only contactable, fully qualified opportunities. Qualified publication and the qualified-opportunity charge occur atomically.
Important fields include:
businessNameleadTierbestContactChannelbestContactValuebestContactSourceTypebestContactSourceUrlbestEmailphonecontactFormUrlwhatsappUrlopportunityScoretopVerifiedGapsserviceToSellemailSubjectemailBodycallOpenercontactFormMessagewhatsappMessagewebsitemapsUrl
Near misses
When includeNearMisses is true, high-quality records below the opportunity threshold are published to the run-scoped near_misses dataset. They never enter the default export.
Audit evidence
Set outputMode to all_audits to publish every audit outcome to the separate audit_results dataset. This mode is for research and troubleshooting; it does not change membership in Sales-ready leads or Near misses.
Rows that are neither qualified nor valid near misses keep technical diagnostics, scores, detector states, website, and Maps provenance, but salesPackageRedacted is true and usable contact values, discovered secondary-page URLs, raw crawl errors, booking URLs, service recommendations, top gaps, and outreach copy are removed. This prevents stricter or disabled gates from turning the audit dataset into an uncharged sales export.
Dataset views control columns and their order. They do not filter rows. Physical dataset separation provides the output guarantee.
The legacy output.results link and qualified-opportunities view remain available for existing integrations; new clients should use qualifiedLeads and the sales-ready view.
Run summary
The RUN_SUMMARY key-value-store record reconciles:
- discovered, normalized, unique, and duplicate records;
- audited, qualified, near-miss, filtered, pushed, and charged records;
- rejected or unsafe inputs and their reasons;
- worker or publication failures;
- spending-limit termination;
- child Maps Actor ID, run ID, dataset ID, status, cost ceiling, and reported cost;
- all active thresholds, qualification rate, and opportunity-score statistics;
- an explicit zero-qualified reason and suggested next actions.
Pricing
The current primary event costs $0.004 per sales-ready qualified opportunity:
| Qualified leads | Qualified-opportunity events |
|---|---|
| 100 | $0.40 |
| 1,000 | $4.00 |
Near misses do not trigger that event, and zero qualified leads means zero qualified-opportunity events. The small Apify Actor-start event and the compute/discovery work still exist, so near misses do not add a qualified-opportunity event charge, but the run is not cost-free.
Google Maps discovery runs through a child Actor with an explicit maxDiscoveryCostUsd ceiling. The reported child cost is included in RUN_SUMMARY so the run can be reconciled.
Input modes
Exactly one source mode is accepted. Unknown top-level fields and conflicting sources are rejected.
Google Maps search
The default provider is compass/crawler-google-places. Discovery has hard item, cost, memory, and timeout limits, and its dataset is streamed into the audit pipeline.
Existing Apify dataset
{"inputMode": "dataset","apifyDatasetId": "YOUR_DATASET_ID","maxTotalResults": 100,"websiteField": "website","nameField": "title"}
Recognized fallbacks include website, websiteUrl, website_url, title, name, businessName, rating, totalScore, reviewsCount, and reviewCount.
Business objects
{"inputMode": "businesses","businesses": [{"title": "Relax and Smile Dental Care","website": "https://www.relaxandsmile.com/","category": "Dentist","rating": 4.9,"reviewsCount": 500}]}
Domains
{"inputMode": "domains","domains": ["https://www.relaxandsmile.com/"]}
Manual domains do not inherit Google Maps profile fields. If critical profile or contact data cannot be established, the result fails closed instead of being presented as a qualified lead.
Website audit behavior
The auditor fetches public HTML and same-host contact or booking pages. It does not execute JavaScript.
| Outcome | auditStatus | Commercial behavior |
|---|---|---|
| Valid homepage | success | Verified checks may score |
| Valid homepage with a secondary-page failure | partial | Verified checks only |
| Commercially unresolved sparse homepage | partial | Absence checks remain unknown; no false gap scoring |
| Timeout, DNS, TLS, blocked response, 4xx/5xx, empty body, or non-HTML | failed | Cannot qualify |
| Trusted Maps record explicitly has no website | no_website | Source-backed no-website evidence may score |
| Audit disabled or source website field is unknown | skipped | Cannot qualify |
Unknown evidence is preserved as null:
null = unknown, unavailable, or not checkedfalse = checked and absenttrue = checked and present
Failed and skipped audits never qualify. Disabled booking, contact, or chat checks block website qualification because required evidence would be missing.
Opportunity scoring and services
opportunityScore measures observed commercial gaps from 0 to 100. confidenceScore measures technical evidence confidence; it does not claim that the business profile is complete.
Verified checks include online booking, booking providers and URLs, contact form/page, CTA, chat, WhatsApp, HTTPS, mobile viewport, Google Analytics, Google Tag Manager, Meta Pixel, and other technology signals.
targetService supports:
- automatic selection, prioritizing booking and lead capture;
- online booking;
- website redesign;
- lead capture;
- tracking;
- CRM automation.
An explicit service is recommended only when matching evidence exists.
Languages
outputLanguage supports English, Brazilian Portuguese, and Spanish. It controls evidence, score explanations, service recommendations, gap summaries, and outreach copy.
Deduplication and bounded processing
Deduplication priority is Google Maps place ID, canonical website hostname, normalized phone, then normalized name plus a non-empty address. A name without an address is not sufficient to merge records.
Discovery is streamed. Processing occurs in bounded batches and concurrency-sized waves. When the user spending limit is reached, the Actor stops starting new work and records unpublished items in the summary.
Security and responsible use
Before each homepage, redirect, or secondary request, the Actor validates the URL and DNS target, blocks private and metadata addresses, checks every redirect, limits response size, validates content type, and keeps secondary crawling on the same normalized hostname.
The Actor audits publicly accessible business information. Users are responsible for complying with applicable privacy, marketing, outreach, and data-protection laws. Review the evidence and the target jurisdiction's rules before contacting a business.
Limitations
- JavaScript-rendered forms and widgets may not appear in source HTML.
- Detection is heuristic and should be reviewed before outreach.
- Public-email extraction does not prove deliverability or mailbox ownership.
- The Maps provider is an external Actor with its own schema and lifecycle.
- Dataset storage is append-only.
Development and validation
python -m compileall src scriptspython -m ruff check .python -m mypy srcpython -m pytest -vpython scripts/validate_schemas.pyapify validate-schemadocker build -t local-business-opportunity-finder .
GitHub Actions validates dependencies, tests, coverage, lint, types, schemas, Docker, and mock integration. Cost-bearing live validation requires an APIFY_TOKEN secret and an explicit spending ceiling.
Support
When reporting a problem, include the Actor run ID, input mode, redacted input, relevant dataset item, expected behavior, and observed behavior.
The technical Actor slug remains local-business-funnel-gap-finder.