ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo construir una canalización local de generación de leads
Tutorial

Cómo construir una canalización local de generación de leads

Cree un canal de generación de leads local automatizado utilizando datos de la API de búsqueda. Encuentre empresas, enriquezca con datos de presencia web y obtenga clientes potenciales automáticamente.

Obtener clave API gratisDocumentacion API

La generación de leads locales a escala requiere encontrar empresas en una categoría objetivo, enriquecerlas con datos de presencia web y calificarlas según su probabilidad de conversión. La investigación manual no va más allá de unas pocas docenas de clientes potenciales. Este tutorial crea un canal automatizado que busca empresas locales utilizando la API de Scavio, enriquece cada cliente potencial con señales de calidad del sitio web y produce una lista de clientes potenciales calificada lista para su divulgación. El proceso completo cuesta alrededor de $0,015 por cliente potencial (3 llamadas API).

Requisitos previos

  • Python 3.9+ instalado
  • solicita biblioteca instalada
  • Una clave API de Scavio de scavio.dev
  • Una categoría de negocio objetivo y una lista de ubicaciones

Guia paso a paso

Paso 1: Encuentre empresas locales a través de datos SERP

Busque empresas en su categoría objetivo en varias ubicaciones. Extraiga nombres, calificaciones e información de contacto básica de los resultados locales.

Python
import os, requests, json, time, csv

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}
URL = 'https://api.scavio.dev/api/v1/search'

def find_businesses(category: str, location: str) -> list:
    resp = requests.post(URL, headers=H,
        json={'query': f'{category} {location}', 'country_code': 'us', 'num_results': 10})
    data = resp.json()
    leads = []
    for b in data.get('local_results', data.get('local_pack', [])):
        leads.append({
            'name': b.get('title', b.get('name', '')),
            'address': b.get('address', ''),
            'phone': b.get('phone', ''),
            'rating': b.get('rating', ''),
            'reviews': b.get('reviews', 0),
            'website': b.get('website', b.get('link', '')),
            'category': category,
            'location': location,
        })
    return leads

leads = find_businesses('dental offices', 'Denver CO')
print(f'Found {len(leads)} dental offices in Denver')

Paso 2: Enriquezca los clientes potenciales con señales de presencia web

Para cada empresa con un sitio web, busque su presencia en la web para evaluar la madurez digital. Las empresas con una presencia web débil tienen mejores perspectivas para los servicios de marketing.

Python
def enrich_lead(lead: dict) -> dict:
    name = lead['name']
    website = lead.get('website', '')
    domain = website.split('/')[2] if '/' in website and len(website.split('/')) > 2 else ''
    if not domain:
        lead['web_score'] = 0
        lead['web_signals'] = 'no website'
        return lead
    # Check web presence
    resp = requests.post(URL, headers=H,
        json={'query': f'site:{domain}', 'country_code': 'us', 'num_results': 5})
    indexed_pages = len(resp.json().get('organic_results', []))
    time.sleep(0.3)
    # Check social presence
    resp2 = requests.post(URL, headers=H,
        json={'query': f'"{name}" ({lead["location"]})', 'country_code': 'us', 'num_results': 5})
    mentions = len(resp2.json().get('organic_results', []))
    # Score: higher = more established web presence
    lead['indexed_pages'] = indexed_pages
    lead['web_mentions'] = mentions
    lead['web_score'] = min(indexed_pages * 2 + mentions, 20)
    lead['web_signals'] = 'strong' if lead['web_score'] > 10 else 'moderate' if lead['web_score'] > 5 else 'weak'
    return lead

enriched = enrich_lead(leads[0])
print(f'{enriched["name"]}: web_score={enriched["web_score"]}, signals={enriched["web_signals"]}')

Paso 3: Calificar y exportar la lista de clientes potenciales

Calcule una puntuación compuesta de clientes potenciales basada en la calificación, el recuento de reseñas y la presencia en la web. Exportar resultados puntuados a CSV ordenados por puntuación.

Python
def score_lead(lead: dict) -> float:
    score = 0
    # Rating score (high rating = established business)
    rating = float(lead.get('rating', 0) or 0)
    score += rating * 4  # Max 20
    # Reviews (more reviews = larger business)
    reviews = int(lead.get('reviews', 0) or 0)
    score += min(reviews / 10, 15)  # Max 15
    # Web presence (weak = better prospect for services)
    web = lead.get('web_score', 0)
    if web <= 5:
        score += 15  # Weak web = needs help
    elif web <= 10:
        score += 8
    return round(score, 1)

def build_lead_list(category: str, locations: list, output: str = 'leads.csv') -> list:
    all_leads = []
    for loc in locations:
        leads = find_businesses(category, loc)
        for lead in leads:
            enrich_lead(lead)
            lead['lead_score'] = score_lead(lead)
            all_leads.append(lead)
            time.sleep(0.2)
        print(f'{loc}: {len(leads)} leads found')
    # Sort by score
    all_leads.sort(key=lambda x: x.get('lead_score', 0), reverse=True)
    # Export
    keys = ['name', 'lead_score', 'phone', 'website', 'rating', 'reviews', 'web_signals', 'location', 'address']
    with open(output, 'w', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=keys, extrasaction='ignore')
        writer.writeheader()
        writer.writerows(all_leads)
    cost = len(all_leads) * 0.015
    print(f'\nPipeline complete: {len(all_leads)} scored leads')
    print(f'Top leads:')
    for lead in all_leads[:5]:
        print(f'  [{lead["lead_score"]:5.1f}] {lead["name"][:30]} | {lead["web_signals"]} web | {lead.get("phone", "N/A")}')
    print(f'Cost: ${cost:.3f}')
    print(f'Saved to {output}')
    return all_leads

build_lead_list('dental offices', ['Denver CO', 'Boulder CO'])

Ejemplo en Python

Python
import os, requests, time

SCAVIO_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json'}

def lead_gen(category, location):
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'query': f'{category} {location}', 'country_code': 'us', 'num_results': 10})
    leads = resp.json().get('local_results', resp.json().get('local_pack', []))
    print(f'{category} in {location}: {len(leads)} leads')
    for b in leads[:5]:
        name = b.get('title', b.get('name', ''))
        rating = b.get('rating', 'N/A')
        phone = b.get('phone', 'N/A')
        print(f'  {name[:30]} | {rating} stars | {phone}')
    print(f'Cost: $0.005')

for loc in ['Denver CO', 'Boulder CO']:
    lead_gen('dental offices', loc)
    time.sleep(0.3)

Ejemplo en JavaScript

JavaScript
const SCAVIO_KEY = process.env.SCAVIO_API_KEY;

async function leadGen(category, location) {
  const resp = await fetch('https://api.scavio.dev/api/v1/search', {
    method: 'POST',
    headers: { 'x-api-key': SCAVIO_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ query: `${category} ${location}`, country_code: 'us', num_results: 10 })
  });
  const data = await resp.json();
  const leads = data.local_results || data.local_pack || [];
  console.log(`${category} in ${location}: ${leads.length} leads`);
  leads.slice(0, 5).forEach(b => {
    console.log(`  ${(b.title || b.name || '').slice(0, 30)} | ${b.rating || 'N/A'} stars`);
  });
}

(async () => {
  await leadGen('dental offices', 'Denver CO');
  await leadGen('dental offices', 'Boulder CO');
})();

Salida esperada

JSON
Found 8 dental offices in Denver
ACE Dental: web_score=4, signals=weak

Denver CO: 8 leads found
Boulder CO: 6 leads found

Pipeline complete: 14 scored leads
Top leads:
  [ 44.2] Mountain View Family Dental    | weak web   | (303) 555-0123
  [ 42.8] Cherry Creek Dental Center     | weak web   | (303) 555-0456
  [ 38.5] Denver Smile Design            | moderate web | (303) 555-0789
  [ 36.1] Boulder Dental Arts            | weak web   | (720) 555-0321
  [ 33.9] Pearl Street Dentistry         | moderate web | (720) 555-0654
Cost: $0.210
Saved to leads.csv

Tutoriales relacionados

  • Cómo extraer datos comerciales locales con la API de búsqueda
  • Cómo crear una investigación de prospectos centrada en API

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.9+ instalado. solicita biblioteca instalada. Una clave API de Scavio de scavio.dev. Una categoría de negocio objetivo y una lista de ubicaciones. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de datos comerciales de Google Maps (mayo de 2026)

Read more
Best Of

La mejor API de Google Maps para la extracción de clientes potenciales en 2026

Read more
Use Case

Generación de leads locales de Google Maps

Read more
Glossary

Extracción de clientes potenciales de Google Maps

Read more
Use Case

Generación de leads para agencias locales de Google Maps

Read more
Glossary

Costo de la API de Google Maps Places

Read more

Empieza a construir

Cree un canal de generación de leads local automatizado utilizando datos de la API de búsqueda. Encuentre empresas, enriquezca con datos de presencia web y obtenga clientes potenciales automáticamente.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad