____ ____ ____ _ _ ____
| __ )|___ \| __ ) | | ___ __ _ __| | / ___| ___ _ __ __ _ _ __ ___ _ __
| _ \ __) | _ \ | | / _ \/ _` |/ _` | \___ \ / __| '__/ _` | '_ \ / _ \ '__|
| |_) |/ __/| |_) | | |__| __/ (_| | (_| | ___) | (__| | | (_| | |_) | __/ |
|____/|_____|____/ |_____\___|\_,_|\__,_| |____/ \___|_| \__,_| .__/ \___|_|
|_|
v5.0 — Pro Edition
Motor de prospección B2B. Extrae leads verificados desde Google Maps con soporte para múltiples ciudades, múltiples nichos, extracción de emails, sistema de checkpoints y deduplicación inteligente.
El script genera automáticamente todas las combinaciones ciudad × nicho y ejecuta una búsqueda por cada una. Por cada negocio extrae:
- Nombre del negocio
- Categoría (Dental Office, Restaurant, etc.)
- Ciudad
- Dirección completa
- Teléfono
- Email ← nuevo en v5.0 — extraído directamente del sitio web del negocio
- Sitio Web
- URL de Google Maps
Todos los datos provienen directamente de Google Maps y los sitios web de los negocios — 100% verificados, sin suposiciones.
cd lead-scraper
./venv/bin/python scraper.pyPrimera vez (instalar navegador):
./venv/bin/python -m playwright install chromium| Paso | Pregunta | Ejemplo |
|---|---|---|
| 1 | ¿Ciudad(es)? | Southlake TX, Keller TX o Durango, CDMX |
| 2 | ¿Nicho(s)? | Dental Offices, Restaurants, Gyms |
| 3 | ¿Nombre del Cliente/Proyecto? | Orbital Builders |
| 4 | ¿Cuántos leads necesitas? | 500 — Enter para máximo posible |
| 5 | ¿Ejecutar en modo oculto? | y para background, n para debug visual |
Ciudad(es) → Durango, Dgo
Nicho(s) → Dentistas, Gimnasios, Restaurantes
Proyecto → Cliente Durango
Meta leads → 200
Headless → y
El script genera 3 búsquedas y distribuye la meta equitativamente. Al terminar, guarda el Excel automáticamente.
| Campo | Fuente | Confiabilidad |
|---|---|---|
| Nombre del Negocio | Google Maps | ✅ 100% |
| Categoría | Google Maps | ✅ 100% |
| Ciudad | Google Maps | ✅ 100% |
| Dirección | Google Maps | ✅ 98%+ |
| Teléfono | Google Maps | ✅ 95%+ |
| Sitio web del negocio | ✅ ~60% (depende si el sitio lo publica) | |
| Sitio Web | Google Maps | ✅ 95%+ |
| Google Maps URL | Google Maps | ✅ 100% |
| Feature | Descripción |
|---|---|
| ✉️ Extracción de Emails | Entra al sitio web de cada negocio y extrae emails reales (info@, contact@, etc.) |
| ♻️ Sistema de Checkpoint | Guarda el progreso después de cada búsqueda. Si el script se interrumpe, retoma donde se quedó |
| 🔄 Reintentos automáticos | Si Maps no carga, reintenta hasta 3 veces antes de saltar esa búsqueda |
| 🎭 Rotación de User-Agents | Usa 6 User-Agents reales distintos para evitar detección por parte de Google |
| 🧠 Deduplicación Fuzzy | Detecta duplicados similares (ej. "Starbucks" vs "Starbucks Coffee") con 85% de similitud |
| 👻 Modo Debug | Opción de ver el navegador en tiempo real para diagnosticar errores |
Google Maps devuelve hasta ~120 resultados por query. Para maximizar leads:
- Usa más ciudades → más combinaciones → más leads
- Usa nichos específicos → más densidad de resultados
- Ejemplo: 5 nichos × 10 ciudades = 50 búsquedas = hasta 6,000 leads
- Rotación automática de User-Agents en cada sesión.
- Scroll progresivo: para cuando Maps no carga más.
- Espera entre 6 y 12 segundos aleatorios entre búsquedas.
- Máximo recomendado: 300–500 leads por sesión continua.
- Si aparece un CAPTCHA: Detén el script, cambia de red o espera 30 minutos.
Si el script se interrumpe (luz, internet, Ctrl+C), al volver a ejecutarlo con el mismo nombre de proyecto detecta el archivo checkpoint_<proyecto>.json y pregunta si quieres retomar. Las búsquedas ya completadas se saltan automáticamente.
Al finalizar con éxito, el checkpoint se elimina solo.
B2B-Lead-Scraper/
├── lead-scraper/
│ ├── scraper.py ← Script principal
│ ├── requirements.txt ← Dependencias Python
│ ├── venv/ ← Entorno virtual
│ ├── checkpoint_*.json ← Guardado automático de progreso (temporal)
│ └── leads_*.xlsx ← Archivos generados
└── README.md
| Librería | Uso |
|---|---|
playwright |
Navegación automatizada en Google Maps |
openpyxl |
Generación del Excel con formato profesional |
rich |
Interfaz visual en consola |
Nota:
urllib(extracción de emails) ydifflib(deduplicación fuzzy) son librerías nativas de Python — no requieren instalación.
B2B Lead Scraper v5.0 — Pro Edition