The Problem
Sales teams manually search Google Maps for local businesses, copy contact info into spreadsheets, then search each business individually to qualify them. The process takes hours per territory and produces inconsistent data. Leads go stale before outreach starts because the discovery-to-contact cycle is too slow.
The Scavio Solution
Automate local lead discovery with Scavio's Google Maps and search APIs. Query Google Maps for businesses by category and location, then enrich each lead with SERP data: website, reviews, social profiles, and recent news. The pipeline outputs qualified leads with enrichment data ready for outreach.
Before
Sales rep spends 3 hours manually searching Google Maps, copying business names, then Googling each one. Gets 20 leads per session. Data is incomplete and inconsistent.
After
Pipeline discovers 100 leads in 10 minutes. Each lead has Google Maps data, website, reviews, social profiles, and recent SERP mentions. Cost: ~$1 in API credits.
Who It Is For
Sales teams and lead gen agencies who need to discover and qualify local businesses at scale without manual Google Maps browsing.
Key Benefits
- 100 qualified leads in 10 minutes vs 3 hours manual work
- Google Maps discovery + SERP enrichment in one pipeline
- Structured output ready for CRM import
- ~$0.01 per enriched lead (2 API calls)
- Consistent data quality across all leads
Python Example
import requests, os, json
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
def discover_leads(category: str, location: str, limit: int = 20) -> list:
"""Discover local businesses via Google Maps."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"{category} in {location}", "platform": "google-maps", "country_code": "us"},
timeout=15,
)
places = resp.json().get("local_results", [])[:limit]
return [{"name": p.get("title", ""), "address": p.get("address", ""), "rating": p.get("rating"), "phone": p.get("phone", "")} for p in places]
def enrich_lead(business_name: str, location: str) -> dict:
"""Enrich a lead with SERP data."""
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": f"{business_name} {location}", "country_code": "us"},
timeout=10,
)
data = resp.json()
organic = data.get("organic_results", [])
return {"website": organic[0].get("link", "") if organic else "", "serp_mentions": len(organic)}
leads = discover_leads("plumber", "Austin TX", limit=5)
for lead in leads:
enrichment = enrich_lead(lead["name"], "Austin TX")
lead.update(enrichment)
print(f"{lead['name']}: {lead.get('website', 'N/A')} ({lead.get('rating', 'N/A')} stars)")JavaScript Example
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function discoverLeads(category, location, limit=20) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:category+' in '+location, platform:'google-maps', country_code:'us'})});
const places = (await r.json()).local_results || [];
return places.slice(0,limit).map(p=>({name:p.title||'', address:p.address||'', rating:p.rating, phone:p.phone||''}));
}
async function enrichLead(name, location) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:name+' '+location, country_code:'us'})});
const organic = (await r.json()).organic_results || [];
return {website:organic[0]?.link||'', serpMentions:organic.length};
}
const leads = await discoverLeads('plumber', 'Austin TX', 5);
for (const lead of leads) {
const e = await enrichLead(lead.name, 'Austin TX');
Object.assign(lead, e);
console.log(lead.name+': '+(lead.website||'N/A')+' ('+lead.rating+' stars)');
}Platforms Used
Google Maps
Local business search with ratings and contact info
Web search with knowledge graph, PAA, and AI overviews