Pymes en España: leads de Google Maps con email (dominio MX)
Pricing
from $2.00 / 1,000 lugar emitidos
Pymes en España: leads de Google Maps con email (dominio MX)
Busca pymes españolas en Google Maps por tipo de negocio y ciudad y devuelve un lead por lugar: nombre, categoría, dirección, teléfono, web, rating, reseñas y email de contacto público con dominio MX (no valida el buzón individual). Solo mercado español; sin navegador, rápido y barato.
Pricing
from $2.00 / 1,000 lugar emitidos
Rating
0.0
(0)
Developer
Riccardo Pongetti
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Actor Apify que convierte una lista de búsquedas ("tipo de negocio + ciudad española") en una lista de leads de pymes españolas con su email de contacto público y el estado del dominio de ese email (registros MX).
Un item por lugar:
nombre, categoria, direccion, ciudad, pais, telefono, web, rating, numeroResenas,email, emailDominioMx, emailDominioMxDetalle, emailAlternativos,emailMetodoVerificacion, placeId, url, latitud, longitud
Solo mercado español (country = ES). No usa navegador, así que es rápido y barato.
Por qué es barato (diseño)
No usa navegador. Dos peticiones HTTP por búsqueda:
GET /maps/search/<búsqueda>?hl=es&gl=ES— el HTML incluye un<link>de prefetch a/search?tbm=map&...&pb=...con la búsqueda ya serializada.GETde ese link — devuelve)]}'+ JSON con los 20 lugares de la primera página (nombre, dirección, teléfono, web, rating, reseñas, Place ID, país, coordenadas).
Navegar con Playwright costaba ~2,9 s por lugar (página de listado + página de detalle); este enfoque cuesta ~0,065 s por lugar de crawl y no necesita instalar Chromium (imagen Docker pequeña, 1 GB de memoria suficiente).
Después, para cada negocio con web, se piden (best-effort) la home y 1 página de
contacto típica y se extraen los correos publicados por el propio negocio. Cada petición
(y cada salto de redirect) pasa por la política anti-SSRF de src/url_safety.py: solo
http/https, DNS resuelto y rechazo de loopback, rangos privados, link-local
(169.254.x.x), multicast, reservadas y CGNAT, y TLS verificado.
Qué comprueba emailDominioMx (y qué NO)
| Método | Qué comprueba | Coste | ¿Funciona en Apify? |
|---|---|---|---|
mx (por defecto) | El dominio del email tiene registros MX (ese dominio puede recibir correo) | ~10 ms | Sí |
smtp | RCPT TO sin enviar mensaje, además del MX | ~1-6 s | No: la plataforma bloquea el puerto 25 → estado desconocido |
ninguna | — | 0 | — |
Importante: el actor no comprueba que el buzón individual exista o sea entregable.
Por eso el campo se llama emailDominioMx y el evento email-dominio-mx, no
"email verificado". Valores del campo:
mx_presente— el dominio tiene registros MX (puede recibir correo).sin_mx— el dominio no tiene registros MX (no puede recibir correo).null/ vacío — no se pudo determinar (timeout DNS) o no se pidió verificación.
Con el método smtp se añaden emailSmtpEstado (smtp_aceptado, smtp_rechazado,
smtp_temporal, desconocido) y emailMetodoVerificacion = mx+smtp. Las respuestas
4xx de SMTP (450, 452…) son temporales: no se etiquetan como rechazo permanente; solo
los 5xx (550, 551, 553, 554…) son smtp_rechazado.
Entrada
searchTerms(obligatorio): p. ej.["clínica dental Madrid", "panadería Sevilla"]. Google Maps devuelve hasta ~20 resultados por búsqueda; para más leads, añade búsquedas por ciudad/barrio (50 búsquedas ≈ 1.000 leads).maxResults(0 = sin límite),country(soloES),extraerEmail,metodoVerificacion,maxEmailsPorNegocio,maxPaginasWeb,emailConcurrencia,timeoutWebSegundos,usarProxy,proxyGrupo,exportFiles,exportLanguage.
Salida
- Dataset: un item por lugar.
- Key-value store:
RESULT-sintesis.json(resumen del run),leads-es.csv(RFC-4180) yleads-es.xlsx(cabecera congelada, autofiltro, números reales).
Precio (pay-per-event, precios ACTIVOS)
lugar— 0,002 $ por lugar emitido.email-dominio-mx— 0,003 $ por lugar con email cuyo dominio tiene MX.informe— 0,01 $ por run.
Local (sin token)
uv venv .venv --python 3.13uv pip install --python .venv/bin/python -r requirements.txt.venv/bin/python -m pytest tests -q # 59 tests, sin red.venv/bin/python -m src.main --local examples/input.json
Coste medido (run real en plataforma, plan free)
Run 9BA8vn8qnTWFE2z6Z (22-09-2026, proxy datacenter, 1 GB RAM): 5 búsquedas → 99 lugares,
54 con email de dominio con MX, 81,4 s, 0,0226 CU = 0,00539 $.
| medido | por 1.000 lugares | |
|---|---|---|
| Coste total (CU + storage + transferencia) | 0,00539 $ / 99 | 0,0545 $ |
| Coste CU | 0,0226 CU / 99 | 0,228 CU = 0,0457 $ |
| Emails con dominio MX | 54 (55 % de lugares) | ~545 |
| Coste por email con MX | — | 0,0001 $ |
Proxy datacenter incluido en el plan (0 $ de proxy residencial). Detalle completo en ./INFORME-COSTE.md.
Estimación de cobro PPE (aritmética, no ingreso observado): un volumen como el del run de medida (99 lugares, 54 emails, 1 run) serían 99×0,002 + 54×0,003 + 0,01 = 0,37 $. Para 1.000 lugares en 50 runs (≈545 emails con MX): 2,00 + 1,635 + 0,50 = 4,135 $. El coste de producción de esos 1.000 lugares es ~0,055 $.
Roadmap
- Más de 20 lugares por búsqueda: rejilla de viewports (el
pbde Google admite centro/zoom) para multiplicar resultados por término y bajar el coste por 1.000. - Verificación del buzón individual: integración con un verificador de dirección real (API externa) como campo aparte, sin renombrar el actual.
- Filtros de calidad: descartar negocios sin web, o sin teléfono, o con rating bajo.
- Enriquecimiento: redes sociales, horarios, "cerrado permanentemente" (Google lo
informa en el payload:
p[203]). - Verticales: plantillas de búsquedas por sector (clínicas, talleres, hostelería).
Limitaciones
- Los selectores/estructura del payload de Google cambian sin aviso: el parser está aislado
en
src/maps_http.pyy hay un fixture real entests/fixtures/para detectarlo en tests. emailDominioMxvalida el dominio, no el buzón: unmx_presenteno garantiza que la dirección concreta reciba correo.- Queda un TOCTOU mínimo entre la resolución DNS y la conexión (DNS rebinding); cerrarlo del todo exige fijar la IP resuelta en la conexión.
- La extracción de email es best-effort: muchas pymes no publican correo (usan formulario).
- Uso responsable: datos públicos de Google Maps; respeta los ToS y el RGPD al usar los leads.