The Problem
Local business lead generation traditionally relies on Google Maps manual searches, purchased lead lists, or expensive data providers like InfoUSA. Manual searches do not scale beyond a few dozen businesses per hour. Lead lists are stale within weeks. Data providers charge $0.10-0.50 per lead and deliver the same contacts everyone else gets. None of these options give you the structured data (name, address, phone, rating, review count, hours) needed to prioritize outreach by business quality signals.
The Scavio Solution
Scavio's Google search returns local pack results as structured JSON, including business names, addresses, ratings, review counts, and categories. Build a lead generation pipeline that searches for business categories in target locations, extracts local pack data, and scores leads by quality signals like review count and rating. The structured data feeds directly into CRM import formats. At $0.005/credit, generating 1,000 leads across 50 searches costs $0.25.
Before
Before Scavio, local lead generation meant manual Google Maps searches at 20 businesses per hour or purchasing stale lead lists at $0.10-0.50 per lead with no quality scoring.
After
After Scavio, a pipeline generates hundreds of scored local business leads per minute from structured local pack data. Quality signals like review count and rating prioritize outreach before it starts.
Who It Is For
Local service businesses, agencies serving local clients, and lead generation companies that need fresh, scored local business data without paying premium rates for stale purchased lists.
Key Benefits
- Structured local pack data with name, address, rating, and reviews
- Quality scoring by review count and rating prioritizes outreach
- 1,000 leads from 50 queries for $0.25
- Fresh data on every run vs stale purchased lead lists
- CRM-ready output format for immediate import
Python Example
import requests
import json
from pathlib import Path
API_KEY = "your_scavio_api_key"
def search_local_businesses(category: str, location: str) -> list[dict]:
query = f"{category} near {location}"
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": query},
timeout=15,
)
res.raise_for_status()
data = res.json()
leads = []
for item in data.get("local_pack", data.get("organic", [])):
leads.append({
"name": item.get("title", item.get("name", "")),
"address": item.get("address", ""),
"phone": item.get("phone", ""),
"rating": item.get("rating"),
"reviews": item.get("reviews", 0),
"category": category,
"location": location,
"link": item.get("link", ""),
})
return leads
def generate_leads(categories: list[str], locations: list[str]) -> list[dict]:
all_leads = []
for category in categories:
for location in locations:
leads = search_local_businesses(category, location)
all_leads.extend(leads)
# Score by review count (proxy for established business)
all_leads.sort(key=lambda x: x.get("reviews", 0), reverse=True)
return all_leads
categories = ["plumber", "electrician", "HVAC contractor"]
locations = ["Austin TX", "Dallas TX", "Houston TX"]
leads = generate_leads(categories, locations)
Path("local_leads.json").write_text(json.dumps(leads, indent=2))
print(f"Generated {len(leads)} leads from {len(categories) * len(locations)} searches")
for lead in leads[:5]:
print(f" {lead["name"]} - {lead.get("rating", "N/A")} stars, {lead.get("reviews", 0)} reviews")JavaScript Example
const API_KEY = "your_scavio_api_key";
async function searchLocal(category, location) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "google", query: `${category} near ${location}` }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
return (data.local_pack ?? data.organic ?? []).map((item) => ({
name: item.title ?? item.name ?? "",
address: item.address ?? "",
rating: item.rating ?? null,
reviews: item.reviews ?? 0,
category,
location,
link: item.link ?? "",
}));
}
const categories = ["plumber", "electrician", "HVAC contractor"];
const locations = ["Austin TX", "Dallas TX"];
const allLeads = [];
for (const cat of categories) {
for (const loc of locations) allLeads.push(...await searchLocal(cat, loc));
}
allLeads.sort((a, b) => b.reviews - a.reviews);
console.log(`Generated ${allLeads.length} leads from ${categories.length * locations.length} searches`);Platforms Used
Web search with knowledge graph, PAA, and AI overviews