claude-skills/.claude/skills/scrape-leads/SKILL.md
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.
npx skillsauth add aiagentwithdhruv/automation scrape-leadsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scrape leads using Apify (code_crafter/leads-finder), verify their relevance (industry match > 80%), and save them to a Google Sheet. For large scrapes (1000+ leads), use parallel scraping for 3-5x faster performance.
All scripts are in ./scripts/:
scrape_apify.py - Single scrape, for <1000 leadsscrape_apify_parallel.py - Parallel scraping, for 1000+ leadsclassify_leads_llm.py - LLM-based lead classificationenrich_emails.py - Email enrichment via AnyMailFinderupdate_sheet.py - Batch sheet updatesread_sheet.py - Read data from Google SheetsTest Scrape
python3 ./scripts/scrape_apify.py --query "INDUSTRY" --location "LOCATION" --max_items 25 --no-email-filter --output .tmp/test_leads.json
Verification
.tmp/test_leads.jsonFull Scrape
python3 ./scripts/scrape_apify.py --query "INDUSTRY" --location "LOCATION" --max_items TOTAL_COUNT --no-email-filter --output .tmp/leads.json
[Optional] LLM Classification (for complex niches)
python3 ./scripts/classify_leads_llm.py .tmp/leads.json --classification_type product_saas --output .tmp/classified_leads.json
Upload to Google Sheet
python3 ./scripts/update_sheet.py .tmp/leads.json --title "Leads - INDUSTRY"
Enrich Missing Emails
python3 ./scripts/enrich_emails.py SHEET_URL
Test Scrape (same as above with 25 items)
Parallel Full Scrape
python3 ./scripts/scrape_apify_parallel.py \
--query "INDUSTRY" \
--total_count 4000 \
--location "United States" \
--strategy regions \
--no-email-filter
Geographic partitioning is automatic:
Continue with steps 4-6 from small scrapes
The ONLY deliverable is the Google Sheet URL. Local JSON files in .tmp/ are temporary intermediates.
.envRequires in .env:
APIFY_API_TOKEN=your_token
GOOGLE_APPLICATION_CREDENTIALS=path/to/credentials.json
ANTHROPIC_API_KEY=your_key
ANYMAILFINDER_API_KEY=your_key
| Name | Type | Required | Description |
|------|------|----------|-------------|
| industry | string | Yes | Target industry (e.g., 'Plumbers', 'Software Agencies') |
| location | string | Yes | Target location (e.g., 'Texas', 'United States') |
| total_count | integer | Yes | Total number of leads desired |
| classification_type | string | No | LLM classification type (e.g., 'product_saas') |
| Name | Type | Description |
|------|------|-------------|
| sheet_url | string | Google Sheet URL with scraped leads |
| lead_count | integer | Number of leads found |
| Name | Source |
|------|--------|
| APIFY_API_TOKEN | .env |
| GOOGLE_APPLICATION_CREDENTIALS | .env |
| ANTHROPIC_API_KEY | .env |
| ANYMAILFINDER_API_KEY | .env |
Skills that chain well with this one: classify-leads, casualize-names, instantly-campaigns, onboarding-kickoff
$0.01-0.02 per lead + $0.30/1K for classification
content-media
Find viral YouTube videos in your niche for competitive intelligence. Use when user asks to find YouTube outliers, monitor competitors, or track viral videos.
tools
Send welcome email sequence to new clients. Use when user asks to send welcome emails, onboard new client with emails, or trigger welcome sequence.
tools
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.
tools
Scrape Upwork jobs and generate personalized proposals with cover letters. Use when user asks to find Upwork jobs, create Upwork proposals, or apply to Upwork listings.