gmaps-leads
Google Maps Lead Generation
Goal
Generate high-quality B2B leads from Google Maps with deep contact enrichment by scraping websites and using Claude to extract structured contact data.
Inputs
| Parameter | Required | Description |
|---|---|---|
--search |
Yes | Search query (e.g., "plumbers in Austin TX") |
--limit |
No | Max results (default: 10) |
--sheet-url |
No | Existing sheet to append to |
--workers |
No | Parallel workers (default: 3) |
Scripts
./scripts/gmaps_lead_pipeline.py- Main orchestration./scripts/gmaps_parallel_pipeline.py- Parallel version./scripts/scrape_google_maps.py- Google Maps scraper./scripts/extract_website_contacts.py- Website contact extractor./scripts/update_sheet.py- Google Sheets sync
Process
Basic Usage
# Create new sheet with 10 leads
python3 ./scripts/gmaps_lead_pipeline.py --search "plumbers in Austin TX" --limit 10
# Append to existing sheet (recommended for building database)
python3 ./scripts/gmaps_lead_pipeline.py --search "dentists in Miami FL" --limit 25 \
--sheet-url "https://docs.google.com/spreadsheets/d/..."
# Higher volume
python3 ./scripts/gmaps_lead_pipeline.py --search "roofing contractors in Austin TX" \
--limit 50 --workers 5
Pipeline Steps
- Google Maps Scrape - Apify
compass/crawler-google-placesreturns listings - Website Scraping - Fetches main page + up to 5 contact pages
- Web Search Enrichment - DuckDuckGo search for owner contact info
- Claude Extraction - Claude 3.5 Haiku extracts structured contacts
- Google Sheet Sync - Appends new leads, deduplicates by lead_id
Output Schema (36 fields)
Business Basics: business_name, category, address, city, state, zip_code, phone, website, rating, review_count
Extracted Contacts: emails, additional_phones, business_hours
Social Media: facebook, twitter, linkedin, instagram, youtube, tiktok
Owner Info: owner_name, owner_title, owner_email, owner_phone, owner_linkedin
Team Contacts: JSON array of team members
Metadata: lead_id, scraped_at, search_query, pages_scraped, enrichment_status
Cost
| Component | Per Lead |
|---|---|
| Apify Google Maps | ~$0.01-0.02 |
| Claude Haiku | ~$0.002 |
| DuckDuckGo/HTTP | Free |
| Total | ~$0.012-0.022 |
For 100 leads: ~$1.50-2.50 total
Troubleshooting
- "No businesses found": Include location in query
- 403 Forbidden: ~10-15% of sites block scrapers (handled gracefully)
- Auth issues: Delete
token.jsonand re-authenticate - Duplicates: Uses lead_id (MD5 of name|address) for deduplication
Environment
APIFY_API_TOKEN=your_token
ANTHROPIC_API_KEY=your_key
Schema
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
search |
string | Yes | Search query (e.g., 'plumbers in Austin TX') |
limit |
integer | No | Max results (default: 10) |
sheet_url |
string | No | Existing sheet to append to |
workers |
integer | No | Parallel workers (default: 3) |
Outputs
| Name | Type | Description |
|---|---|---|
sheet_url |
string | Google Sheet URL with 36-field lead data |
lead_count |
integer | Number of leads scraped |
Credentials
| Name | Source |
|---|---|
APIFY_API_TOKEN |
.env |
ANTHROPIC_API_KEY |
.env |
Composable With
Skills that chain well with this one: classify-leads, casualize-names, instantly-campaigns, onboarding-kickoff
Cost
$0.012-0.022 per lead
More from aiagentwithdhruv/skills
image-to-video
Generate AI video from static images using Kling 3.0, Hailuo, Luma Ray3, Runway Gen-4.5, and 8 other tools. Covers free vs paid tools, prompt writing (motion-only), camera control, and face stability. Use when user asks to animate an image, create AI video, or convert photo to video.
91mac-control
MCP server for AI-powered macOS control — apps, display, audio, files, screenshots, clipboard
60excalidraw-visuals
Use when someone asks for a hand-drawn visual, PNG image, rendered diagram, visual explanation, or says "excalidraw image" or "excalidraw visual". This generates PNG images, not editable files.
34video-edit
Complete video editing toolkit - silence removal, auto-captions, vertical crop, YouTube clipping, 3D transitions, and social media compression. Use when user asks to edit video, remove silences, add captions/subtitles, crop to vertical/shorts, download YouTube clips, compress video, or create video teasers.
29design-website
Generate a premium mockup website for a prospect using the buildinamsterdam.com template style. Use when user asks to design a website, create a mockup, or build a prospect website.
27scrape-leads
Scrape and verify business leads using Apify, classify with LLM, enrich emails, and save to Google Sheets. Use when user asks to find leads, scrape businesses, generate prospect lists, or build lead databases for any industry or location.
26