Resumen
Este flujo de trabajo genera local business leads diario by querying Google for servicio categorias a traves de objetivo cities. It extrae business detalles de local pack resultados, deduplicates contra existing leads, y salidas nuevo leads for sales outreach. Replaces Google Maps scraping con compliant API-based generacion de leads at un fraction of el cost.
Desencadenador
Cron programar (diario at 8 AM UTC)
Programación
Ejecuta diario at 8:00 AM UTC
Pasos del flujo de trabajo
Cargar service-city matrix
Leer objetivo servicios y cities de configuracion.
Consulta Google local resultados
For cada service-city pair, consulta Scavio Google to obtener local pack datos.
Extraer business detalles
Analizar business names, sitios web, fragmentos, y rating informacion.
Deduplicate
Eliminar businesses ya in el lead base de datos.
Salida nuevo leads
Escribir nuevo leads to CRM o CSV for sales team.
Implementacion en Python
import requests
import json
import csv
from pathlib import Path
API_KEY = "your_scavio_api_key"
def generate_leads(services: list[str], cities: list[str]) -> list[dict]:
seen_path = Path("maps_seen.json")
seen = set(json.loads(seen_path.read_text())) if seen_path.exists() else set()
new_leads = []
for svc in services:
for city in cities:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "google", "query": f"{svc} in {city}"},
timeout=15,
)
if not res.ok:
continue
for r in res.json().get("organic", [])[:10]:
link = r.get("link", "")
if link and link not in seen:
seen.add(link)
new_leads.append({"service": svc, "city": city, "name": r.get("title", ""), "link": link, "snippet": r.get("snippet", "")})
seen_path.write_text(json.dumps(list(seen)))
# Export to CSV
if new_leads:
with open("new_leads.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=new_leads[0].keys())
writer.writeheader()
writer.writerows(new_leads)
return new_leads
leads = generate_leads(["plumber", "electrician"], ["Austin TX", "Dallas TX", "Houston TX"])
print(f"Generated {len(leads)} new leads")Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
async function generateLeads(services, cities) {
const leads = [];
for (const svc of services) {
for (const city of cities) {
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: `${svc} in ${city}` }),
});
if (!res.ok) continue;
for (const r of ((await res.json()).organic ?? []).slice(0, 10)) {
leads.push({ service: svc, city, name: r.title ?? "", link: r.link ?? "" });
}
}
}
console.log(`Generated ${leads.length} leads`);
return leads;
}
await generateLeads(["plumber"], ["Austin TX", "Dallas TX"]);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA