# Google Maps Scraper España: leads de empresas con email (`rianone/google-maps-leads-espana`) Actor

Extrae empresas y pymes españolas de Google Maps por sector y ciudad: nombre, teléfono, web, dirección, rating, reseñas y email de contacto público con comprobación del dominio. Exporta a Excel, CSV o JSON. Rápido y económico.

- **URL**: https://apify.com/rianone/google-maps-leads-espana.md
- **Developed by:** [Riccardo Pongetti](https://apify.com/rianone) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Google Maps Scraper España: leads de empresas con email

Extrae empresas y pymes españolas de Google Maps por sector y ciudad. Cada resultado puede incluir nombre, categoría, ciudad, teléfono, web, dirección, rating, reseñas y el email de contacto que el propio negocio haya publicado. Exporta los leads a Excel, CSV o JSON.

### Para quién es

Agencias de marketing, comerciales B2B, consultores y cualquier empresa que venda a pymes españolas y necesite listas de contactos por sector y ciudad.

### Qué obtienes

El dataset **Leads** contiene un registro por negocio encontrado con estas columnas principales:

- Nombre, categoría y ciudad.
- Teléfono, web y enlace del negocio en Google Maps.
- Email público, cuando está publicado en la web del negocio.
- Estado `emailDominioMx`: comprobación de que el dominio tiene registros MX.
- Rating y número de reseñas.

La comprobación MX indica que el dominio puede recibir correo. No garantiza que un buzón individual exista, pertenezca al negocio o acepte mensajes.

### Cómo usarlo

1. Escribe una o varias búsquedas con el formato «negocio + ciudad».
2. Elige el máximo de leads para controlar el volumen; `0` elimina el límite.
3. Ejecuta el actor y abre el dataset **Leads**.
4. Si activas la exportación, descarga también `leads-es.csv` o `leads-es.xlsx`.

Ejemplo de entrada:

```json
{"searchTerms": ["clínica dental Madrid", "taller mecánico Valencia", "peluquería Sevilla"]}
```

### Ejemplo de resultado ficticio

Los siguientes registros son ficticios; cada uno solo ilustra el formato y no representa negocios, contactos ni resultados reales:

```json
[
  {
    "nombre": "Clínica Dental Ejemplo S.L.",
    "categoria": "Clínica dental",
    "ciudad": "Madrid",
    "telefono": "+34 910 000 000",
    "web": "https://ejemplo.invalid",
    "email": "contacto@ejemplo.invalid",
    "emailDominioMx": "mx_presente",
    "rating": 4.7,
    "numeroResenas": 128,
    "url": "https://www.google.com/maps/"
  },
  {
    "nombre": "Taller Mecánico Ejemplo",
    "categoria": "Taller mecánico",
    "ciudad": "Valencia",
    "telefono": "+34 960 000 000",
    "web": "https://ejemplo.invalid",
    "email": null,
    "emailDominioMx": null,
    "rating": 4.3,
    "numeroResenas": 56,
    "url": "https://www.google.com/maps/"
  }
]
```

Si el negocio no publica email, el campo queda vacío: no se inventan direcciones.

### Entradas

- `searchTerms`: una o más búsquedas de negocio y ciudad en España.
- `maxResults`: número máximo de leads; usa `0` para no establecer límite.
- `extraerEmail`: busca emails publicados en la web del negocio.
- `metodoVerificacion`: usa `mx` para comprobar el dominio del email o `ninguna` para omitirlo.

Las opciones de rendimiento, proxy y exportación están en **Avanzado**.

### Salidas

- Dataset **Leads**: datos en JSON mediante la exportación estándar del dataset.
- `leads-es.csv`: CSV descargable cuando se activa la exportación.
- `leads-es.xlsx`: Excel descargable cuando se activa la exportación.
- `RESULT-sintesis.json`: resumen gratuito del run.

### Precio

Pagas solo por lo que obtienes:

- **Lead**: 0,002 $ por cada negocio devuelto (2 $ por 1.000).
- **Email con dominio válido**: 0,005 $ por cada negocio con email público cuyo dominio puede recibir correo (5 $ por 1.000).

Ejemplo: 1.000 leads, de los que unos 550 tienen email, cuestan unos 4,75 $. Con los 5 $ de crédito gratuito de Apify puedes probarlo sin pagar nada.
El resumen del run (RESULT-sintesis.json) es gratuito.

### Preguntas frecuentes

#### ¿Por qué obtengo unos 20 resultados por búsqueda?

Google Maps devuelve unos 20 negocios por búsqueda. Para obtener más, divide por ciudades o barrios: por ejemplo, «clínica dental Chamberí», «clínica dental Salamanca», «clínica dental Retiro». Como referencia, 50 búsquedas dan unos 1.000 leads.

#### ¿Qué significa «dominio con MX»?

Que el dominio del email (por ejemplo, @clinicaejemplo.es) está configurado para recibir correo. Descarta emails de dominios caducados o mal configurados, pero no garantiza que el buzón concreto exista.

#### ¿El actor verifica que un email existe?

No. Solo puede buscar correos publicados y, si se selecciona `mx`, comprobar que el dominio declara registros MX. No realiza verificación SMTP ni valida buzones individuales.

#### ¿Por qué puede faltar el email?

No todos los negocios publican un correo en su web, algunas webs pueden no estar disponibles y el actor no inventa direcciones de email.

#### ¿Puedo obtener Excel, CSV y JSON?

Sí. El dataset de Apify se puede exportar como JSON. Con `exportFiles` activado se generan además CSV y XLSX descargables.

#### ¿Qué significa `maxResults: 0`?

Que no se establece un límite de resultados. Úsalo con precaución para controlar el volumen y el coste.

#### ¿Puedo usar los datos para contactar negocios?

Sí, pero consulta la sección Uso responsable.

### Uso responsable

Los datos proceden de fichas públicas de Google Maps y de las webs de los propios negocios. En España, el envío de comunicaciones comerciales por email está regulado por la LSSI (Ley 34/2002) y el RGPD. El usuario es responsable del uso que haga de los leads.

### English summary

Google Maps Scraper Spain finds Spanish businesses by sector and city. It returns public business data such as name, phone, website, address, rating, reviews and publicly listed contact emails, with optional MX-domain checking. Results are available in the Apify dataset as JSON and can also be exported as CSV or XLSX. MX checks confirm only that a domain advertises mail exchange records; they do not validate an individual mailbox.

# Actor input Schema

## `searchTerms` (type: `array`):

Añade una o varias búsquedas, por ejemplo: tipo de negocio + ciudad española.

## `maxResults` (type: `integer`):

Tope de lugares a emitir en el run para controlar el gasto.

## `extraerEmail` (type: `boolean`):

Busca correos de contacto publicados en la web del negocio.

## `metodoVerificacion` (type: `string`):

MX comprueba si el dominio del email puede recibir correo; no valida el buzón individual.

## `exportFiles` (type: `boolean`):

Guarda también los resultados en CSV y XLSX descargables.

## `maxEmailsPorNegocio` (type: `integer`):

Número máximo de correos candidatos a devolver por negocio.

## `maxPaginasWeb` (type: `integer`):

Número de páginas de la web del negocio a consultar.

## `emailConcurrencia` (type: `integer`):

Número de webs consultadas en paralelo.

## `timeoutWebSegundos` (type: `number`):

Tiempo máximo por petición a la web de un negocio.

## `usarProxy` (type: `boolean`):

Ayuda a reducir bloqueos al consultar Google Maps.

## `proxyGrupo` (type: `string`):

Deja el valor por defecto salvo que necesites otro grupo de proxy.

## `exportLanguage` (type: `string`):

Idioma solicitado a Google para los resultados.

## `country` (type: `string`):

Este actor trabaja con búsquedas en España.

## Actor input object example

```json
{
  "searchTerms": [
    "clínica dental Madrid",
    "peluquería Valencia"
  ],
  "maxResults": 200,
  "extraerEmail": true,
  "metodoVerificacion": "mx",
  "exportFiles": true,
  "maxEmailsPorNegocio": 3,
  "maxPaginasWeb": 2,
  "emailConcurrencia": 8,
  "timeoutWebSegundos": 6,
  "usarProxy": true,
  "proxyGrupo": "",
  "exportLanguage": "es",
  "country": "ES"
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `xlsx` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "clínica dental Madrid",
        "peluquería Valencia"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rianone/google-maps-leads-espana").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchTerms": [
        "clínica dental Madrid",
        "peluquería Valencia",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("rianone/google-maps-leads-espana").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "clínica dental Madrid",
    "peluquería Valencia"
  ]
}' |
apify call rianone/google-maps-leads-espana --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rianone/google-maps-leads-espana"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PQ5hFUwY82lV0JgaM/builds/K82zoKUBNWD282dtK/openapi.json
