Google Maps Lead Scraper + Website Audit Score (A-F)
Pricing
from $150.00 / 1,000 results
Google Maps Lead Scraper + Website Audit Score (A-F)
Scrape Google Maps business leads with a website quality audit score (A-F). Get emails, phones, reviews, and identify businesses needing help.
Pricing
from $150.00 / 1,000 results
Rating
0.0
(0)
Developer
George Kioko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Google Maps Leads + Website Audit (Problem Score A-F)
Find businesses that are EASY TO CLOSE. This actor scrapes Google Maps for business leads, then audits every website across 20+ checks and assigns a Problem Score (A-F). Grade F businesses have broken websites and desperately need your help. Stop cold-calling. Start closing.
How It Works
flowchart LRA["Search Query\n(e.g. dentists in Dallas TX)"] --> B["Google Maps\nScrape"]B --> C["Website Audit\n20+ Checks"]C --> D["Problem Scoring\nA-F Grade"]D --> E["Hot Leads\nOutput"]style A fill:#4285F4,color:#fff,stroke:nonestyle B fill:#34A853,color:#fff,stroke:nonestyle C fill:#FBBC05,color:#000,stroke:nonestyle D fill:#EA4335,color:#fff,stroke:nonestyle E fill:#7B1FA2,color:#fff,stroke:none
- Search -- Enter a Google Maps query like "plumbers in Austin TX"
- Scrape -- Puppeteer extracts business listings with contact info
- Audit -- Each website is tested across 20+ technical checks
- Score -- A Problem Score (0-100) and letter grade (A-F) are calculated
- Output -- Leads sorted by pain level, ready for outreach
Architecture
flowchart TBsubgraph InputQ[Search Query] --> Config[maxResults / filters]endsubgraph PipelineConfig --> MS[Maps Scraper\nPuppeteer]MS -->|Business + URL| WA[Website Auditor]WA --> PS[PageSpeed API]WA --> MC[Mobile Check]WA --> SEO[SEO Checks]WA --> SEC[Security Checks]WA --> TECH[Tech Detection]PS & MC & SEO & SEC & TECH --> SC[Problem Scorer]endsubgraph OutputSC --> HL[Hot Leads View\nGrade + Contact]SC --> FA[Full Audit View\n20+ metrics]endstyle MS fill:#34A853,color:#fffstyle WA fill:#FBBC05,color:#000style SC fill:#EA4335,color:#fffstyle HL fill:#7B1FA2,color:#fffstyle FA fill:#7B1FA2,color:#fff
What Gets Audited
| Category | Checks |
|---|---|
| Performance | PageSpeed score, load time, First Contentful Paint |
| Mobile | Mobile-friendliness score, viewport meta, responsive layout |
| SEO | Meta description, title tag, heading structure, canonical URL |
| Security | SSL certificate, HTTPS redirect, mixed content |
| Analytics | Google Analytics, Tag Manager, Facebook Pixel |
| Technical | Schema markup, CMS detection, broken links |
The Problem Score
The Problem Score is what makes this actor different from every other lead scraper. Instead of just pulling names and numbers, it tells you who needs help the most.
Grade A (0-20) -- Website is solid. Low priority.Grade B (21-40) -- Minor issues. Some optimization opportunities.Grade C (41-60) -- Notable problems. Good prospect for a pitch.Grade D (61-80) -- Serious issues. High-pain business. Easy close.Grade F (81-100) -- Website is broken. They need you yesterday.
Agency playbook: Filter for Grade D and F leads. These businesses have broken SSL, no mobile support, 10-second load times, and missing analytics. They are losing customers every day and they know it. Your pitch practically writes itself.
Use Cases
mindmaproot((Google Maps\nLeads + Audit))Agency Lead GenWeb design agenciesSEO agenciesDigital marketing firmsFreelance developersLocal SEOAudit local competitorsFind underserved marketsBenchmark performanceWeb Design SalesIdentify broken sitesProof-based cold outreachPortfolio gap analysisCompetitor AuditCompare tech stacksBenchmark load timesTrack CMS adoption
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQuery | string | required | Google Maps search (e.g. "dentists in Dallas TX") |
maxResults | integer | 100 | Number of leads to scrape (1-500) |
deepScrape | boolean | false | Extract additional details from each listing |
auditWebsites | boolean | true | Run the 20+ check website audit |
directContactOnly | boolean | false | Only return leads with phone or email |
auditConcurrency | integer | 3 | Parallel audit workers (1-10) |
pageSpeedApiKey | string | "" | Optional Google PageSpeed API key for higher rate limits |
language | string | "en" | Language for Google Maps results |
Example Input
{"searchQuery": "dentists in Dallas TX","maxResults": 50,"auditWebsites": true,"directContactOnly": true,"auditConcurrency": 5}
Output
The actor produces two dataset views.
Output Schema
erDiagramLEAD {string namestring problemGradeint problemScorestring problemSummarystring categorystring phonestring emailstring websitestring addressfloat rating}AUDIT {int performanceScoreint mobileScorefloat loadTimebool hasSSLbool hasAnalyticsbool hasSchemaMarkupbool hasMetaDescriptionstring cmsint criticalCountint highCountint mediumCount}LEAD ||--o| AUDIT : "has"
Hot Leads View (by Problem Score)
Sorted by pain level. The leads most likely to convert are at the top.
| Field | Description |
|---|---|
name | Business name |
problemGrade | Letter grade A-F |
problemScore | Numeric score 0-100 |
problemSummary | Human-readable list of issues found |
category | Business category from Google Maps |
phone | Phone number |
email | Email address (when available) |
website | Website URL |
address | Full street address |
rating | Google Maps star rating |
Full Audit Details View
Every technical metric from the 20+ checks.
| Field | Description |
|---|---|
performanceScore | PageSpeed performance (0-100) |
mobileScore | Mobile-friendliness (0-100) |
loadTime | Page load time in seconds |
hasSSL | SSL certificate present |
hasAnalytics | Google Analytics / Tag Manager detected |
hasSchemaMarkup | Structured data present |
hasMetaDescription | SEO meta description present |
cms | Detected CMS (WordPress, Wix, Squarespace, etc.) |
criticalCount | Number of critical issues |
highCount | Number of high-severity issues |
mediumCount | Number of medium-severity issues |
Example Output
{"name": "Dallas Smile Center","problemGrade": "D","problemScore": 72,"problemSummary": "No SSL, 8.2s load time, missing analytics, no schema markup","category": "Dentist","phone": "+1-214-555-0123","email": "info@dallassmilecenter.com","website": "http://dallassmilecenter.com","address": "1234 Elm St, Dallas, TX 75201","rating": 3.8,"performanceScore": 28,"mobileScore": 45,"loadTime": 8.2,"hasSSL": false,"hasAnalytics": false,"hasSchemaMarkup": false,"hasMetaDescription": false,"cms": "WordPress","criticalCount": 3,"highCount": 4,"mediumCount": 2}
AI Agent Integration
JavaScript (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('george.the.developer/google-maps-leads-website-audit').call({searchQuery: 'dentists in Dallas TX',maxResults: 50,auditWebsites: true,directContactOnly: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();// Filter for high-pain leads (Grade D and F)const hotLeads = items.filter(lead => ['D', 'F'].includes(lead.problemGrade));console.log(`Found ${hotLeads.length} hot leads ready for outreach`);
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("george.the.developer/google-maps-leads-website-audit").call(run_input={"searchQuery": "dentists in Dallas TX","maxResults": 50,"auditWebsites": True,"directContactOnly": True,})items = client.dataset(run["defaultDatasetId"]).list_items().items# Filter for high-pain leads (Grade D and F)hot_leads = [lead for lead in items if lead.get("problemGrade") in ("D", "F")]print(f"Found {len(hot_leads)} hot leads ready for outreach")
cURL
# Start the actorcurl -X POST "https://api.apify.com/v2/acts/george.the.developer~google-maps-leads-website-audit/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "dentists in Dallas TX","maxResults": 50,"auditWebsites": true,"directContactOnly": true}'# Fetch results (replace DATASET_ID from the run response)curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_APIFY_TOKEN"
Pricing
| Event | Cost |
|---|---|
| Lead audited | $0.01 |
Each scraped and audited lead costs $0.01. A run with maxResults: 100 costs approximately $1.00.
| Leads | Cost |
|---|---|
| 50 | $0.50 |
| 100 | $1.00 |
| 250 | $2.50 |
| 500 | $5.00 |
One closed client from a Grade F lead pays for thousands of runs.
Comparison
vs. Manual Auditing
| Manual | This Actor | |
|---|---|---|
| Time per lead | 15-30 minutes | ~5 seconds |
| Checks | 3-5 (whatever you remember) | 20+ automated |
| Consistency | Varies by person | Identical every time |
| Scale | 10-20/day max | 500 per run |
| Cost | Your hourly rate | $0.01/lead |
vs. Other Lead Gen Tools
| Generic Scrapers | This Actor | |
|---|---|---|
| Contact info | Yes | Yes |
| Website audit | No | 20+ checks |
| Problem scoring | No | A-F grade |
| Prioritization | Manual guesswork | Automatic by pain level |
| Pitch material | None | Problem summary per lead |
| Agency-ready | No | Built for agencies |
FAQ
Q: Do I need a Google PageSpeed API key? A: No. The actor works without one. Adding a key increases rate limits for faster audits on large runs. Get a free key at Google Cloud Console.
Q: How accurate is the Problem Score? A: The score is calculated from real PageSpeed data, live SSL checks, DOM analysis for analytics/schema, and mobile viewport testing. It reflects actual technical issues, not estimates.
Q: Can I scrape any location? A: Yes. Use any query that works on Google Maps: city, state, ZIP, country. Examples: "restaurants in London", "lawyers near 90210", "hotels in Tokyo".
Q: What happens if a business has no website? A: The lead is still returned with contact info and Google Maps data. The audit fields will be empty and no Problem Score is assigned.
Q: How many leads can I scrape per run? A: Up to 500 per run. For larger datasets, run the actor multiple times with different queries or location variations.
Q: What CMS platforms can it detect? A: WordPress, Wix, Squarespace, Shopify, Webflow, Joomla, Drupal, GoDaddy Builder, and more. Detection is based on DOM signatures and response headers.
Q: Can I use this with my CRM? A: Yes. Export results as JSON, CSV, or Excel. Use Apify integrations to push data directly to Google Sheets, Zapier, Make, or any webhook endpoint.
Q: Is this compliant with Google's terms? A: This actor scrapes publicly available information from Google Maps. Review Apify's terms of service and your local regulations before use.
Support
- Open an issue on the actor page
- Apify Discord -- tag
@george.the.developer