Install
$ agentstack add skill-aiagentwithdhruv-skills-gmaps-leads ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
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: businessname, category, address, city, state, zipcode, phone, website, rating, review_count
Extracted Contacts: emails, additionalphones, businesshours
Social Media: facebook, twitter, linkedin, instagram, youtube, tiktok
Owner Info: ownername, ownertitle, owneremail, ownerphone, owner_linkedin
Team Contacts: JSON array of team members
Metadata: leadid, scrapedat, searchquery, pagesscraped, 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
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: aiagentwithdhruv
- Source: aiagentwithdhruv/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.