Generación de Leads de Google Maps
Objetivo
Generar leads B2B de alta calidad desde Google Maps con enriquecimiento profundo de contactos, raspando sitios web y utilizando Claude para extraer datos de contacto estructurados.
Entradas
| Parámetro | Obligatorio | Descripción |
|---|---|---|
--search | Sí | Consulta de búsqueda (ej., "fontaneros en Madrid") |
--limit | No | Resultados máximos (predeterminado: 10) |
--sheet-url | No | Hoja existente a la que agregar datos |
--workers | No | Trabajos en paralelo (predeterminado: 3) |
Scripts
./scripts/gmaps_lead_pipeline.py- Orquestación principal./scripts/gmaps_parallel_pipeline.py- Versión paralela./scripts/scrape_google_maps.py- Raspador de Google Maps./scripts/extract_website_contacts.py- Extractor de contactos de sitios web./scripts/update_sheet.py- Sincronización con Google Sheets
Proceso
Uso Básico
# Crear nueva hoja con 10 leads
python3 ./scripts/gmaps_lead_pipeline.py --search "fontaneros en Madrid" --limit 10
# Agregar a hoja existente (recomendado para construir base de datos)
python3 ./scripts/gmaps_lead_pipeline.py --search "dentistas en Barcelona" --limit 25 \
--sheet-url "https://docs.google.com/spreadsheets/d/..."
# Mayor volumen
python3 ./scripts/gmaps_lead_pipeline.py --search "contratistas de techos en Valencia" \
--limit 50 --workers 5
Pasos del Pipeline
- Raspado de Google Maps - Apify
compass/crawler-google-placesdevuelve listados - Raspado de Sitios Web - Obtiene la página principal + hasta 5 páginas de contacto
- Enriquecimiento con Búsqueda Web - DuckDuckGo busca información de contacto del propietario
- Extracción con Claude - Claude 3.5 Haiku extrae contactos estructurados
- Sincronización con Google Sheets - Agrega nuevos leads, elimina duplicados por lead_id
Esquema de Salida (36 campos)
Datos Básicos del Negocio: business_name, category, address, city, state, zip_code, phone, website, rating, review_count
Contactos Extraídos: emails, additional_phones, business_hours
Redes Sociales: facebook, twitter, linkedin, instagram, youtube, tiktok
Información del Propietario: owner_name, owner_title, owner_email, owner_phone, owner_linkedin
Contactos del Equipo: Arreglo JSON de miembros del equipo
Metadatos: lead_id, scraped_at, search_query, pages_scraped, enrichment_status
Costo
| Componente | Por Lead |
|---|---|
| Apify Google Maps | ~$0.01-0.02 |
| Claude Haiku | ~$0.002 |
| DuckDuckGo/HTTP | Gratis |
| Total | ~$0.012-0.022 |
Para 100 leads: ~$1.50-2.50 en total
Solución de Problemas
- "No se encontraron negocios": Incluye ubicación en la consulta
- 403 Prohibido: ~10-15% de los sitios bloquean raspadores (manejado con elegancia)
- Problemas de autenticación: Elimina
token.jsony vuelve a autenticarte - Duplicados: Usa lead_id (MD5 de nombre|dirección) para eliminar duplicados
Entorno
APIFY_API_TOKEN=tu_token
ANTHROPIC_API_KEY=tu_clave
Esquema
Entradas
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
search | string | Sí | Consulta de búsqueda (ej., 'fontaneros en Madrid') |
limit | integer | No | Resultados máximos (predeterminado: 10) |
sheet_url | string | No | Hoja existente a la que agregar datos |
workers | integer | No | Trabajos en paralelo (predeterminado: 3) |
Salidas
| Nombre | Tipo | Descripción |
|---|---|---|
sheet_url | string | URL de Google Sheet con datos de 36 campos por lead |
lead_count | integer | Número de leads extraídos |
Credenciales
| Nombre | Fuente |
|---|---|
APIFY_API_TOKEN | .env |
ANTHROPIC_API_KEY | .env |
Combinable Con
Skills que se integran bien con este: classify-leads, casualize-names, instantly-campaigns, onboarding-kickoff
Costo
$0.012-0.022 por lead