Las agencias de marketing digital necesitan un flujo constante de clientes potenciales calificados: empresas locales que necesitan sitios web, SEO o servicios de marketing digital. La prospección manual en Google Maps requiere de 4 a 6 horas por sesión para entre 30 y 40 clientes potenciales. Este tutorial automatiza el proceso: busque empresas en nichos y ciudades objetivo, evalúe su presencia en línea, califiquelas por oportunidad y exporte clientes potenciales calificados para su divulgación.
Requisitos previos
- Python 3.8+ instalado
- solicita biblioteca instalada
- Una clave API de Scavio de scavio.dev
- Una lista de nichos y ciudades objetivo
Guia paso a paso
Paso 1: Defina sus nichos y ciudades objetivo
Configure la matriz de búsqueda: qué tipos de negocios y en qué ubicaciones.
NICHES = ['plumber', 'electrician', 'dentist', 'restaurant', 'auto repair']
CITIES = ['Austin TX', 'Denver CO', 'Portland OR', 'Nashville TN']
API_KEY = os.environ['SCAVIO_API_KEY']Paso 2: Búsqueda de empresas
Consulte en Google cada combinación de nicho-ciudad para encontrar empresas locales.
import requests, os
H = {'x-api-key': API_KEY}
def find_businesses(niche: str, city: str) -> list:
resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{niche} {city}'}, timeout=10)
return [{'name': r['title'], 'url': r.get('link', ''), 'snippet': r.get('snippet', '')}
for r in resp.json().get('organic', [])[:10]]Paso 3: Califique cada cliente potencial por oportunidad
Evalúe la presencia en línea del cliente potencial para estimar cuánto necesita sus servicios.
def score_lead(lead: dict) -> dict:
url = lead.get('url', '')
score = 5 # baseline
# No website or directory listing only
if 'yelp.com' in url or 'yellowpages' in url:
score += 3 # high opportunity, no owned website
# Check for reviews mention in snippet
snippet = lead.get('snippet', '').lower()
if 'no reviews' in snippet or 'be the first' in snippet:
score += 2 # low online presence
lead['opportunity_score'] = min(score, 10)
return lead
# Score all leads
scored = [score_lead(l) for l in leads]Paso 4: Ejecutar todo el proceso y exportar
Repita todas las combinaciones de nicho y ciudad, obtenga clientes potenciales y exporte los mejores.
import csv, time
def run_pipeline() -> list:
all_leads = []
for niche in NICHES:
for city in CITIES:
businesses = find_businesses(niche, city)
for b in businesses:
b['niche'] = niche
b['city'] = city
score_lead(b)
all_leads.append(b)
time.sleep(0.5)
all_leads.sort(key=lambda x: x['opportunity_score'], reverse=True)
with open('qualified_leads.csv', 'w', newline='') as f:
w = csv.DictWriter(f, fieldnames=['name', 'niche', 'city', 'url', 'opportunity_score'])
w.writeheader()
w.writerows([{k: l[k] for k in ['name', 'niche', 'city', 'url', 'opportunity_score']} for l in all_leads[:50]])
print(f'Exported top 50 of {len(all_leads)} leads')
return all_leads
run_pipeline()Ejemplo en Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def prospect(niche, city):
data = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': f'{niche} {city}'}, timeout=10).json()
return [{'name': r['title'], 'url': r.get('link', ''), 'directory_only': 'yelp' in r.get('link', '')}
for r in data.get('organic', [])[:10]]Ejemplo en JavaScript
async function prospect(niche, city) {
const data = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: `${niche} ${city}`})
}).then(r => r.json());
return (data.organic || []).slice(0, 10).map(r => ({name: r.title, url: r.link}));
}Salida esperada
A CSV of qualified local business leads scored by opportunity, ready for import into outreach tools like Instantly or Smartlead.