Overview
Full enrichment pipeline for solo agencies. Discover via local-pack SERP, verify via website extract, score AI visibility, dedupe, write CRM-ready CSV. Drops directly into HubSpot, Pipedrive, or Salesforce import.
Trigger
Weekly Monday 7 AM or webhook-triggered
Schedule
Weekly or webhook
Workflow Steps
Define seed cities + niches
Config file with (city, niche) tuples.
Local-pack SERP per seed
Scavio search returns business listings.
Verify website via extract
Fetch homepage as markdown, confirm valid site.
Score AI visibility per business
Branded SERP plus AI Overview citation check.
Dedupe by phone + domain
Merge duplicates from overlapping seeds.
Write CRM-ready CSV
Columns: name, phone, website, address, ai_visibility_score, opener_draft.
Import to CRM
HubSpot, Pipedrive, or Salesforce import.
Python Implementation
import os, requests, csv
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY}
def enrich(city, niche):
leads = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'query': f'{niche} {city}', 'search_type': 'local'}).json().get('local_results', [])
for lead in leads:
if lead.get('website'):
md = requests.post('https://api.scavio.dev/api/v1/extract', headers=H,
json={'url': lead['website'], 'format': 'markdown'}).json()
lead['site_excerpt'] = md.get('markdown', '')[:500]
return leads
with open('leads.csv', 'w') as f:
w = csv.DictWriter(f, fieldnames=['name','phone','website','address','site_excerpt'])
w.writeheader()
for lead in enrich('Austin TX', 'dentist'): w.writerow(lead)JavaScript Implementation
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function enrich(city, niche) {
const r = await fetch('https://api.scavio.dev/api/v1/search', { method: 'POST', headers: H, body: JSON.stringify({ query: `${niche} ${city}`, search_type: 'local' }) }).then(r => r.json());
return r.local_results || [];
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews