Google Maps Conversion Gap Leads
Pricing
Pay per event
Google Maps Conversion Gap Leads
Find Google Maps local businesses and flag public website conversion gaps for agency prospecting.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Turn Google Maps local businesses into an agency-ready prospect list. This Actor searches a service and US location, opens each public business listing, then checks the linked website for observable conversion gaps.
The result combines public contact details with practical signals such as missing online booking, weak mobile markup, slow or heavy homepages, missing contact forms, no click-to-call link, and absent calls to action. It is designed for recurring, evidence-based agency prospecting—not generic bulk scraping.
What does this Actor do?
For each search term and location, the Actor:
- searches Google Maps in a browser;
- collects public business names and place URLs;
- opens each place panel for its address, phone, website, category, rating, and coordinates;
- fetches the public business homepage when enabled;
- detects conversion signals in the returned HTML;
- computes a transparent 0–100 conversion-gap opportunity score;
- saves one typed dataset row per accepted business.
A failed website request is reported as an audit error. It is never silently interpreted as proof that a feature is missing.
Who is it for?
- Web-design agencies building city-and-niche prospect lists
- Local SEO agencies prioritizing businesses with visible website gaps
- Booking and CRM consultants looking for appointment-flow opportunities
- Sales operations teams enriching public local-business records
- Researchers comparing public conversion features across local markets
The Actor is especially useful when a campaign needs a reason for outreach beyond “we found your business.” Each row records the observed gap behind the score.
Why use conversion-gap leads?
A generic Maps export tells you who exists. This Actor adds a bounded homepage audit so you can prioritize businesses with observable opportunities.
Examples include:
- no public website;
- an unreachable homepage;
- no observed online booking path;
- missing viewport/responsive signals;
- a slow response or unusually heavy homepage;
- no HTTPS;
- no contact form;
- no click-to-call link;
- no meaningful meta description;
- no obvious primary call to action.
These are technical observations, not claims about a business's revenue or quality.
What data does the Actor extract?
| Group | Fields |
|---|---|
| Discovery | name, category, searchTerm, location, googleMapsUrl |
| Maps contacts | address, phone, website, latitude, longitude |
| Reputation | rating, reviewsCount |
| Reachability | websiteReachable, httpStatus, finalWebsiteUrl, auditError |
| Performance signals | responseTimeMs, pageSizeBytes, slowPageSignal |
| Mobile and security | usesHttps, hasViewportMeta, hasResponsiveCss, mobileReady |
| Conversion features | hasBooking, bookingProvider, hasContactForm, hasPhoneLink, hasEmailLink |
| Marketing signals | publicEmails, hasAnalytics, hasMetaDescription, hasPrimaryCallToAction |
| Prioritization | conversionGaps, gapScore, gapSummary, auditedAt |
Nullable fields mean the source did not expose the value or the check could not
establish it. false means the corresponding signal was checked and not observed.
How to get started
- Open the Actor input page.
- Add one or more services under Business categories or services.
- Add one or more US cities or metro areas.
- Choose a lead limit.
- Keep website auditing enabled for conversion-gap signals.
- Optionally set a minimum gap score to focus the output.
- Run the Actor and export the default dataset as JSON, CSV, Excel, or XML.
A useful first input is:
{"searchTerms": ["dentists"],"locations": ["Austin, TX"],"maxLeads": 20,"auditWebsites": true,"minGapScore": 0}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | string[] | required | Services or business niches to search |
locations | string[] | required | US cities or metro areas added to every term |
maxLeads | integer | 20 | Maximum unique rows, from 1 to 200 |
auditWebsites | boolean | true | Run bounded public-homepage checks |
requireWebsite | boolean | false | Exclude businesses with no Maps website link |
minGapScore | integer | 0 | Keep rows at or above this 0–100 score |
websiteTimeoutSecs | integer | 12 | Per-homepage timeout, from 5 to 30 seconds |
A run supports up to 50 term/location combinations. The lead limit applies across the whole run, not separately to every combination.
Output example
This shortened row reflects the Actor's current output shape:
{"name": "ATX Family Dental","category": "Dentist","address": "1700 S 1st St, Austin, TX 78704","phone": "+1 512-717-3147","website": "https://www.atxfamilydental.com/","rating": 4.9,"searchTerm": "dentists","location": "Austin, TX","websiteReachable": true,"responseTimeMs": 881,"pageSizeBytes": 81941,"mobileReady": true,"hasBooking": true,"hasContactForm": true,"hasPhoneLink": true,"publicEmails": ["info@atxfamilydental.com"],"hasMetaDescription": false,"conversionGaps": ["no_meta_description"],"gapScore": 4,"gapSummary": "no meta description","auditedAt": "2026-08-14T06:41:17.834Z"}
Source pages can change, so values and nullability vary between runs.
How is the gap score calculated?
The score is a weighted sum capped at 100. Higher-impact observations such as no website or an unreachable website contribute more than markup-level signals such as a missing meta description.
The score is intended for sorting a prospect list. It is not a performance benchmark, accessibility audit, Lighthouse score, or promise that outreach will convert.
Review conversionGaps and the raw boolean fields before acting on a lead.
How much does it cost to find conversion-gap business leads?
The Actor uses pay-per-event pricing: one run-start event plus one event for each accepted dataset row. The start event is $0.0065 and, at the BRONZE tier, each conversion-gap lead is $0.00396.
| Accepted leads | Example BRONZE cost |
|---|---|
| 1 | 0.01046 USD |
| 10 | 0.04610 USD |
| 25 | 0.10550 USD |
| 100 | 0.40250 USD |
Rows filtered out by requireWebsite or minGapScore are not charged as lead events.
Actual platform usage and plan tier can differ; check the run's charge details.
Website audit definitions
- Mobile ready requires viewport markup plus responsive CSS or a device-width viewport.
- Slow/heavy homepage means the observed response took at least 2.5 seconds or the checked HTML was at least 1.5 MB.
- Online booking means booking-oriented text or a recognized provider was present in returned homepage HTML.
- Contact form means a form and contact-oriented wording were both observed.
- Primary CTA checks common phrases such as “get a quote,” “contact us,” “call now,” or “book now.”
The audit checks server-returned homepage markup. Features injected only after complex interaction may not be observed.
Tips for better prospect lists
- Use specific services such as
emergency plumbersinstead of broad terms likebusiness. - Run one metro at a time when you need clear campaign attribution.
- Set
requireWebsitewhen your offer depends on auditing an existing site. - Start with
minGapScore: 0, inspect the distribution, then choose a threshold. - Keep
maxLeadssmall while refining a niche. - Schedule the same input when you need a fresh snapshot for a recurring campaign.
Limits and failure behavior
Google Maps can vary results by geography, language, ranking, and time. A city query can include nearby businesses from the wider metro area. The Actor does not claim exhaustive coverage or strict municipal boundaries.
Browser challenge or empty-shell responses fail the affected search instead of
creating false empty output.
Individual website failures remain visible in auditError.
A run may finish with fewer rows when filters exclude discovered businesses.
The Actor uses a direct, resource-blocked browser connection for Maps and does not expose a proxy mode. There is no automatic residential-proxy fallback. Business websites are fetched directly with a bounded timeout.
Export and integration workflows
Common workflows include:
- export CSV rows with
gapScore >= 20into a CRM review queue; - group by
conversionGapsto tailor an agency offer; - send no-booking prospects to an appointment-system campaign;
- compare scheduled dataset snapshots in your own warehouse;
- route unreachable websites to a manual verification step;
- enrich accepted leads with internal ownership or CRM history.
Always review contact data and follow applicable outreach laws before messaging anyone.
Run with the Apify API using cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~google-maps-conversion-gap-leads/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms":["plumbers"],"locations":["Miami, FL"],"maxLeads":10,"auditWebsites":true}'
Use the returned run's default dataset ID to download items.
Run with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/google-maps-conversion-gap-leads').call({searchTerms: ['med spas'],locations: ['Phoenix, AZ', 'Las Vegas, NV'],maxLeads: 25,minGapScore: 20,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Run with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/google-maps-conversion-gap-leads').call(run_input={'searchTerms': ['dentists'],'locations': ['Austin, TX'],'maxLeads': 20,'auditWebsites': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use through MCP
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/google-maps-conversion-gap-leads"
Claude Desktop
Use this server entry in Claude Desktop:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/google-maps-conversion-gap-leads"}}}
Cursor
Add the same mcpServers.apify.url value in Cursor's MCP settings.
VS Code
Add the same HTTP MCP server URL in your VS Code MCP configuration.
Example prompt:
Find up to 20 med spas in Phoenix from Google Maps, audit their public websites, and summarize businesses with gap scores of 20 or more by observed conversion gap.
Responsible use and legality
This Actor processes publicly visible business listings and public website markup. You are responsible for your use, data retention, and compliance with Google terms, website terms, privacy rules, anti-spam laws, and outreach regulations.
Do not use results for harassment, discrimination, deceptive messaging, or decisions that require consent or regulated personal data. Respect opt-outs and verify a signal before making a claim to a business.
FAQ
Why are there fewer leads than requested?
Maps may expose fewer unique businesses, a search may fail, or your website/score
filters may exclude rows. Lower minGapScore and inspect a smaller unfiltered run.
Why is a website feature null?
Null means the audit was disabled, no website was available, or the check could not
establish the value. Review websiteReachable, httpStatus, and auditError.
Why was a booking tool missed?
The homepage may load it only after interaction or from a page the Actor did not visit. The Actor checks the returned homepage, not an entire website crawl.
Does this measure Core Web Vitals?
No. slowPageSignal uses observed response time and HTML size only.
Use a dedicated performance tool for lab or field Core Web Vitals.
Related automation-lab Actor
Use Google Maps Email Extractor & Lead Finder when your main job is broad Maps contact and email extraction without this Actor's conversion-gap scoring workflow.