Unclaimed Google Maps Leads Scraper
Pricing
Pay per usage
Unclaimed Google Maps Leads Scraper
Finds unclaimed Google Maps business listings and enriches them with emails, social links, and AI-ready markdown from their websites.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Pawan Hiray
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Unclaimed Google Maps Leads Scraper | AI-Enriched B2B Lead Generation
Automatically find unclaimed Google Maps business listings, extract contact details, and generate AI-ready markdown profiles — all in one Apify Actor.
Stop wasting hours manually searching for unclaimed Google Business Profiles. This Actor scans Google Maps at scale, identifies businesses that haven't claimed their listings, enriches them with emails, social links, and website content — delivering leads ready for outreach or AI/RAG pipelines.
What This Actor Does
Phase 1 — Google Maps Discovery:
- Accepts multiple search queries (e.g., "Plumbers in Miami", "Auto repair in Chicago")
- Scrolls through Google Maps results, clicking each listing to inspect the detail pane
- Detects the "Own this business?" / "Claim this business" indicator — only keeps unclaimed leads
- Extracts: business name, Maps URL, phone, website, rating, review count, address
Phase 2 — Website Enrichment:
- Visits each unclaimed business's website
- Scrapes homepage + common subpages (/contact, /about, etc.)
- Extracts valid email addresses with domain blacklist filtering
- Discovers Facebook and Instagram profile links
- Converts cleaned website HTML into dense, token-optimized Markdown for LLM/RAG ingestion
Pay-Per-Event Billing:
- Charges
lead-scrapedonly for each successfully enriched unclaimed business
Key Features
| Feature | Description |
|---|---|
| Multi-Query Support | Run unlimited search queries in a single run |
| Smart Unclaimed Detection | Inspects the detail pane for "Own this business?" / "Claim this business" signals — not just sidebar heuristics |
| Email Extraction | Regex-based extraction with domain blacklisting to filter out junk, platform, and placeholder emails |
| Social Link Discovery | Automatically finds Facebook and Instagram profiles from website HTML |
| AI-Ready Markdown | Generates clean, dense Markdown from website content — optimized for LLM context windows and RAG vector stores |
| Contact Page Crawling | Deep-crawls /contact, /about, and related subpages to maximize email discovery |
| Anti-Detection | Custom user agent, automation flag disabling, randomized scroll delays |
| Proxy Support | Built-in Apify Proxy integration for Google Maps block bypass |
| Resilient Error Handling | Every extraction wrapped in isolated try/catch — one bad listing never crashes the run |
Output Schema
Each record in the dataset:
{"businessName": "ABC Plumbing Co","mapsUrl": "https://www.google.com/maps/place/ABC-Plumbing/...","phone": "(214) 555-1234","website": "https://abcplumbing.com","rating": 4.5,"reviewsCount": 127,"extractedEmails": ["info@abcplumbing.com", "service@abcplumbing.com"],"socialLinks": {"facebook": "https://facebook.com/abcplumbing","instagram": "https://instagram.com/abcplumbing"},"isUnclaimed": true,"aiReadyMarkdown": "# ABC Plumbing Co\n\nWe provide 24/7 emergency plumbing services in Dallas..."}
Field Reference
| Field | Type | Description |
|---|---|---|
businessName | String | Official business name from Google Maps |
mapsUrl | String | Direct Google Maps place URL |
phone | String | Business phone number |
website | String | Business website URL |
rating | Number | Google Maps star rating (1-5) |
reviewsCount | Number | Total Google reviews |
extractedEmails | String[] | Valid emails found on the website |
socialLinks.facebook | String | Facebook profile URL (or null) |
socialLinks.instagram | String | Instagram profile URL (or null) |
isUnclaimed | Boolean | Always true — all results are unclaimed |
aiReadyMarkdown | String | Clean Markdown of website content for LLM/RAG use |
Input Configuration
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | String[] | Yes | — | Google Maps search terms (e.g., ["Dentists in Dallas"]) |
maxResultsPerQuery | Integer | No | 100 | Max unclaimed leads per query (1-500) |
proxyConfiguration | Object | No | Apify Proxy | Proxy settings — strongly recommended for Google Maps |
Example Input
{"searchQueries": ["Plumbing services in Miami","Auto repair shops in Houston","Landscaping companies in Chicago"],"maxResultsPerQuery": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Getting Started
- Add to your Apify account — click "Add to My Actors" or deploy via CLI
- Configure inputs — add your search queries and set max results
- Enable Apify Proxy — required for Google Maps (use
RESIDENTIALgroup for best results) - Run the Actor — results appear in the Dataset tab
- Export — download as JSON, CSV, or access via API
Running via CLI
# Install dependenciesnpm install# Run locallynpx apify run# Push to Apifynpx apify-cli push --force
Use Cases
B2B Marketing Agencies
- Lead generation: Find unclaimed businesses that need online presence management
- Cold outreach: Use extracted emails + business context for personalized campaigns
- Service pitching: "I noticed your Google listing is unclaimed — we can help fix that"
AI / RAG Developers
- Knowledge base building: Use
aiReadyMarkdownfor vector embeddings - Business profiling: Structured data + unstructured content in one record
- Automated research: Feed into LLM pipelines for market analysis
SEO & Local Marketing
- Auditing: Identify businesses with weak or non-existent Google presence
- Competitive analysis: Find unclaimed listings in specific niches/locations
- Client acquisition: Build prospect lists for local SEO services
Tips for Best Results
- Search queries matter: Trades and service businesses (plumbers, HVAC, roofing, auto repair) are more likely to be unclaimed than professional services (dentists, lawyers)
- Use specific locations: "Plumbers in Downtown Dallas" yields better results than "Plumbers in Texas"
- Enable Residential Proxy: Google Maps aggressively blocks datacenter IPs — use
RESIDENTIALproxy group - Scale gradually: Start with
maxResultsPerQuery: 10to validate, then increase - Multiple queries: Run several related queries in one batch for maximum coverage
How Unclaimed Detection Works
This Actor does not rely on fragile sidebar heuristics. For each listing:
- Clicks into the business detail pane on Google Maps
- Scans the full page for:
a[href*="place/claim"]ora[href*="business/claim"]elements[data-claim]attributes.claim-bannerelements- Text content containing "Own this business?" or "Claim this business"
- Only listings where at least one indicator is found are kept as leads
This approach is significantly more reliable than checking for the indicator's absence on the sidebar card.
Architecture
Phase 1: Google MapsPlaywrightCrawler → search query → scroll feed → click a.hfpxzc links→ detail pane → isUnclaimed check → extract info → save to allListings[]Phase 2: Website EnrichmentPlaywrightCrawler → visit website → extract emails + social links→ convert to Markdown → push to Dataset → charge per lead
Stack: Node.js + Crawlee (PlaywrightCrawler) + Apify SDK + Turndown (HTML→Markdown)
Dependencies
| Package | Purpose |
|---|---|
apify | Apify Actor SDK — dataset, billing, proxy |
crawlee | Web crawling framework with Playwright support |
playwright | Browser automation for Google Maps navigation |
turndown | HTML-to-Markdown conversion for AI-ready content |
Error Handling
- Navigation failures: Retried up to 2 times with exponential backoff
- DOM extraction: Each field extracted in isolated try/catch — partial data is preserved
- Website timeouts: 25s for homepage, 15s for subpages — gracefully returns empty results
- CAPTCHA/blocking: Apify Proxy with residential IPs mitigates most blocks
License
MIT
Built for lead generation at scale. Whether you're pitching unclaimed businesses on Google Maps management services or building AI-powered market research tools, this Actor delivers structured, enriched data ready for immediate use.