Google Maps Leads Website Audit & Pitch Generator
Pricing
from $4.00 / 1,000 business auditeds
Google Maps Leads Website Audit & Pitch Generator
Audit local business websites from a Google Maps dataset or URL list. Get a 0-100 problemScore and A-F grade, the owner's name, emails, phones and socials, plus a personalised cold email opener. For web design, SEO and marketing agencies. No AI cost.
Pricing
from $4.00 / 1,000 business auditeds
Rating
0.0
(0)
Developer
LatentLark
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Turn a list of local businesses into qualified, ready-to-pitch leads. Give it a Google Maps scraper dataset or a list of websites. For every business it audits the website, scores how much help it needs (0–100), finds the owner's name, emails, phones and social profiles, and writes a personalised pitch angle and cold-email opener from what it found.
Built for web designers, SEO and marketing agencies, freelancers, lead-gen sellers and anyone selling services to local businesses (plumbers, dentists, salons, restaurants, contractors, clinics…).
- 🔎 Website audit: HTTPS/SSL, title & meta description, mobile viewport, H1, outdated © year, load time & page size, Google Analytics/GTM, Meta/TikTok/Google Ads pixels, online booking, live chat, contact forms, LocalBusiness schema, site builder (WordPress, Wix, Squarespace, GoDaddy, Shopify, Duda, Webflow…).
- 🎯 problemScore + grade (A–F): sort by score, and the businesses that need you most come first. A lead with no website or a broken site scores 100.
- 👤 Owner & contacts: owner/founder name from the about, team and contact pages; emails (generic vs personal, with an MX check), phones, Facebook/Instagram/LinkedIn/Yelp/… links.
- ✉️ Pitch angle + email opener: template-based (no AI cost, no hallucinations), built from the lead's biggest real issue, e.g. "Hi Dr. Smith, I couldn't find a way to book or send a request on …".
- ⭐ Keeps Google Maps rating and review count and flags low ratings or few reviews.
- 🔐 Limited permissions: it can read only the one dataset you pick, nothing else in your account.
- 💸 Pay only for results: blocked sites, errors and duplicates are free.

Quick start (first run in about 1 minute)
Try it now: the form is prefilled with 2 websites. Click Start and you get 2 audited leads in under a minute for about $0.02.
With your own leads:
- Run any Google Maps scraper (for example
compass/crawler-google-places) for e.g. "plumber in Austin, TX". - In Google Maps dataset here, pick that run's dataset (or paste its dataset ID) and click Start.
- Open the Overview tab: leads with the highest problemScore first, with owner name, email and a ready-made opener.
No Maps data? Paste website URLs into Websites instead (Joe's Plumbing | joesplumbing.com lets you add the business name too).

What you can do with it
- Web design / SEO agencies: find local businesses with outdated, slow, insecure or non-mobile sites, or with no website at all, and pitch each one with a specific, verifiable reason.
- Marketing / ads freelancers: find businesses without analytics or ad pixels ("you can't retarget your visitors").
- Booking / chat / review software sellers: filter on
checks.bookingTools,checks.chatWidgetsand Maps rating. - Lead-gen sellers: enrich a Maps export with owner names, emails and a qualification score before you sell or import it.
- Monitoring: schedule it with
onlyNewto audit only businesses you haven't seen before.
Input
| Field | Type | Description |
|---|---|---|
mapsDatasetId | dataset | Dataset (ID or name) from a Google Maps scraper run (compass/crawler-google-places format and similar). Uses title, website, phone, rating, review count, category, city, emails. |
websites | array | Website URLs or domains. Optional Business Name | domain.com format. Can be combined with the dataset. |
businessNames | array | Optional names matching websites by position. |
maxBusinesses | integer | Maximum businesses to audit (default 100). |
includePitch | boolean | Generate pitchAngle and emailOpener (default true). |
includeNoWebsite | boolean | Also output Maps businesses with no website (no-website leads are great web-design leads). Default true. |
onlyNew | boolean | Skip businesses audited in earlier runs (stored per monitorKey). |
monitorKey | string | Name of the onlyNew memory, e.g. austin-plumbers. |
maxSubpages | integer | About/team/contact pages to crawl per site to find owner and email (0–5, default 3). |
checkMx | boolean | Check that the email domain accepts mail (default true). |
maxConcurrency | integer | Sites audited in parallel (default 10). |
proxyFallback | boolean | Retry blocked sites once through Apify datacenter proxy (default true). Residential is never used unless you set it. |
Example inputs
From a Google Maps scraper dataset:
{"mapsDatasetId": "YOUR_MAPS_DATASET_ID","maxBusinesses": 200,"onlyNew": true,"monitorKey": "austin-plumbers"}
From a list of websites:
{"websites": ["Joe's Pizza | joespizzanyc.com", "https://www.example-dental.com"],"includePitch": true}
Output
One row per business. Example (shortened):
{"businessName": "Example Family Dentistry","website": "https://www.examplefamilydentistry.com/","domain": "examplefamilydentistry.com","category": "Dentist","city": "Austin","rating": 4.9,"reviewCount": 120,"status": "ok","problemScore": 26,"grade": "B","topIssues": ["No analytics installed", "No retargeting/ad pixel", "No booking, contact form or chat"],"issueCodes": ["NO_ANALYTICS", "NO_AD_PIXEL", "NO_LEAD_CAPTURE", "NO_LOCAL_SCHEMA"],"ownerName": "Dr. Jane Smith","ownerTitle": "Owner and Lead Dentist","primaryEmail": "info@…","emailType": "generic","emailMxValid": true,"phones": ["(512) …"],"socials": {"facebook": "https://facebook.com/…", "instagram": "https://instagram.com/…"},"checks": {"https": true, "sslValid": true, "builder": null, "analytics": [], "adPixels": [], "bookingTools": [], "chatWidgets": [], "hasContactForm": false, "copyrightYear": 2026, "responseTimeMs": 467, "pageSizeKb": 95},"pitchAngle": "Add online booking / a lead form","emailOpener": "Hi Dr. Smith, I couldn't find a way to book or send a request on examplefamilydentistry.com. Visitors who don't want to phone have no way to reach you."}
status is one of ok, noWebsite, down, httpError, blocked (bot protection, not charged), error (not charged).
The run also saves a SUMMARY record in the key-value store: counts by status and grade, average problemScore and charged events.
problemScore
Points per issue, capped at 100: no website / site down 100, broken site 85, no HTTPS or invalid SSL 20, not mobile-friendly 18, very slow (>6 s) 14, no booking/form/chat 10, low Google rating (<4.0) 9, no analytics 8, slow (>3 s) 8, outdated © year 7, missing title 7, few reviews 6, no http→https redirect 6, no ad pixel 5, missing meta description 5, heavy page 4, and smaller items (no H1, no LocalBusiness schema, no social links, no online booking) 2–3. Grades: A ≤20, B ≤40, C ≤60, D ≤80, F >80.
Pricing
Pay per event, no subscription:
| Event | Price |
|---|---|
| Actor start | $0.005 per run |
| Business audited | $0.004 |
| Contact found (owner name or website email) | $0.002 extra |
Example: 500 businesses with contacts found for 300 = $0.005 + 500 × $0.004 + 300 × $0.002 = $2.61. Blocked sites, errors, duplicates, permanently closed listings and already-audited businesses (onlyNew) are free. Set a max charge per run in Apify and the Actor stops cleanly at the limit.
Limitations
- Checks the homepage plus up to 5 about, team or contact pages. It isn't a full SEO crawl or Lighthouse test. Load time is measured server-side.
- Sites behind strong bot protection (Cloudflare challenges, AWS WAF) are marked
blockedand not charged. - Owner names are found from page text and structured data. Small sites often don't name the owner, so
ownerNamemay be empty.contactNamethen holds the best other named person when there is one. - The Actor finds only emails that are published on the website. It doesn't guess or verify mailboxes; the MX check only confirms the domain accepts mail.
- Pitch texts are templates. Review them before sending, and follow anti-spam and privacy rules (CAN-SPAM, GDPR) in your country.
- This Actor doesn't scrape Google Maps itself. Chain it after a Maps scraper dataset.
FAQ
Which Google Maps scraper works? Any dataset with title, website, phone and optional totalScore/reviewsCount/categoryName/city, the format of compass/crawler-google-places. Common alternative field names (name, rating, reviews, site) are also recognised.
Does it use AI? No. Openers are deterministic templates filled with real findings, so there's no AI cost and nothing is invented.
Can I run it on a schedule? Yes. Use onlyNew with a monitorKey to pay only for new businesses.
Can I send results to Google Sheets? Yes, with our Google Sheets Export Actor below.
More from LatentLark
- Google Sheets Export & Import (No OAuth): send these leads to a Google Sheet on a schedule without Google login or expiring tokens.
- Competitor Ads Monitor: see which local competitors run Google or LinkedIn ads, a great add-on for the "no ad pixel" pitch.
- Career Page Jobs API: every open job from Workday, Personio, Greenhouse, Lever, Ashby and 3 more ATS as clean JSON, with only-new-jobs monitoring.
- Telegram Channel Monitor: public Telegram channel posts as JSON, with only-new-post monitoring.