# Google Maps Scraper | B2B Lead Extractor (`victorl90/mapleads-pro`) Actor

Extract B2B leads from Google Maps worldwide. Get emails, phones, websites & addresses filtered by rating. Clean, deduplicated data for sales outreach.

- **URL**: https://apify.com/victorl90/mapleads-pro.md
- **Developed by:** [Víctor López](https://apify.com/victorl90) (community)
- **Categories:** Lead generation, Automation, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

🚀 Google Maps B2B Lead Extractor | MapLeads Pro

Looking for a reliable Google Maps scraper and lead generation tool to find qualified B2B leads for your sales team? MapLeads Pro automatically extracts business names, phone numbers, emails, websites, addresses, categories, opening hours and coordinates from any industry and any city in the world — clean, deduplicated, and ready to load straight into your outreach workflow.

Most Google Maps scrapers stop at name and rating. MapLeads Pro goes further: it visits each business listing individually to pull real contact details, including email extracted directly from the business's own website — included in the base price, not sold as a separate paid add-on like some competing tools.

✨ Why choose MapLeads Pro?

Clean structure: data arrives organized in columns, with no redirect links or extra text.

Real contact data: visits each individual business listing to extract phone number and official website, not just the name.

Built-in email finder: unlike other scrapers on the market, email is extracted directly from the business website within the base price — no separate email finder add-on needed.

No duplicates: automatically detects and discards repeated businesses, even when combining search results with direct URLs.

Fully customizable: activate only the data you need with optional add-ons.

Works in any country: interface forced to English internally for consistent behavior regardless of local search language.

Easy to use: no coding required. Fill in the form, hit "Run" and download your ready-to-use database — no web scraping or programming experience necessary.

💡 Use cases

Marketing agency lead generation: extract 100+ local businesses in a specific industry and city in minutes, complete with phone and email, ready for a cold outreach and sales prospecting campaign.

Competitor research: pull ratings, categories, price levels and opening hours for every competitor in your area to spot gaps in the market.

CRM enrichment: already have a list of company names? Use the direct URL add-on to fill in missing phone numbers, websites and emails for records you already have.

Multi-city expansion research: search several cities at once to compare business density and competition before opening a new location.

📊 Data included by default

🏢 Business name
📞 Phone number
🔗 Website
⭐ Rating
💬 Review count
🏙️ City searched

🧩 Optional add-ons (toggle in the input form)

📍 Extract physical address
🏷️ Extract category and price level (e.g. "Italian restaurant", €20–30)
🕒 Extract opening hours
🌐 Extract coordinates (latitude/longitude)
✉️ Extract email from the business website
✅ Only businesses with a website
🌍 Additional locations — search the same term in several cities at once
🔗 Direct Google Maps URLs — paste specific business URLs to extract them directly, skipping search

📦 Sample inputs

Basic search:
{ "search": "Dentists", "location": "Manchester", "maxResultados": 30 }

Multi-city search:
{ "search": "Gyms", "location": "Berlin", "ubicacionesAdicionales": \["Munich", "Hamburg"], "maxResultados": 20 }

Full enrichment with all add-ons:
{ "search": "Restaurants", "location": "Barcelona", "extraerDireccion": true, "extraerCategoriaYPrecio": true, "extraerHorario": true, "extraerCoordenadas": true, "extraerEmail": true }

📦 Sample output (JSON)

{
"nombre": "Prado de Flores Restaurant",
"telefono": "+34 933 21 50 93",
"web": "https://pradodeflores.es/",
"rating": 4.8,
"numResenas": 13260,
"ciudad": "Barcelona",
"direccion": "Carrer de Santa Anna, 11, Ciutat Vella, 08002 Barcelona, Spain",
"categoria": "Mediterranean restaurant",
"nivelPrecio": "€20–30",
"horario": "Closes soon · 12 AM · Opens 9 AM Tue",
"latitud": "41.3851526",
"longitud": "2.1711624",
"email": "reservas@pradodeflores.com"
}

If an add-on isn't enabled, its field simply won't appear in the result — no empty columns or confusing blanks.

🔌 Using your results elsewhere

Google Sheets / Excel: from the run's dataset view, use the "Export" button to download as CSV or XLSX, or connect directly via Google Sheets import.

Zapier / Make / n8n: trigger this Actor via the Apify API and pipe the resulting dataset into your automation of choice to sync leads into your CRM automatically.

API access: every run's results are available via the Apify API as JSON, ready to integrate into your own scripts or dashboards.

❓ FAQ

How many runs do I need to extract 1,000 leads?
Set "Maximum results" to however many you need in a single run (up to 100 per location) — you don't need multiple runs, just raise the number and, if needed, add multiple cities.

Are emails verified or just extracted?
Extracted, not verified — as an email finder, MapLeads Pro pulls a real email address from the business's public website when available. It does not check mailbox validity.

Does it work in every country?
Yes — the Actor works for any industry and any city Google Maps covers, with the interface forced to English internally for consistent results worldwide.

What happens if a business doesn't have a public phone, email, or price listed?
The field shows "No disponible" — some data (like price range or email) depends on whether the business made it public on Google Maps or its own website, not on the Actor.

⏱️ About run times

Time depends on how many add-ons are enabled and how many results you request:

- Basic data only: ~10-15 seconds per business.
- With email add-on enabled: ~25-35 seconds per business.
- Large extractions (50+ results) with several add-ons active can take 20-30 minutes — that's expected, let the Actor finish.

📹 Watch a 55-second demo: https://youtu.be/KpdC7CBlzno

⚠️ Note: this Actor performs web scraping and data extraction of publicly available information from Google Maps listings and business websites. Use of the resulting data is the user's responsibility. Some fields (email, price, opening hours) depend on whether the business has made that information public.

# Actor input Schema

## `search` (type: `string`):

E.g. Restaurants, Hotels, Cafes

## `location` (type: `string`):

City or neighborhood, e.g. Barcelona

## `ubicacionesAdicionales` (type: `array`):

Add more cities to search the same term in all of them at once. Increases run time proportionally.

## `urlsDirectas` (type: `array`):

Paste one or more direct Google Maps business URLs to extract them directly, skipping search. Rating filter does not apply to these.

## `maxResultados` (type: `integer`):

How many businesses to open per city searched. A low value (10) keeps test runs fast; you can raise it up to 100.

## `minRating` (type: `number`):

Only extract businesses with this rating or higher

## `extraerDireccion` (type: `boolean`):

Adds the business's address to the result

## `soloConWeb` (type: `boolean`):

Discards businesses without a website

## `extraerCategoriaYPrecio` (type: `boolean`):

Adds the business type and price range (€) if available

## `extraerHorario` (type: `boolean`):

Adds the business's opening hours, if available

## `extraerCoordenadas` (type: `boolean`):

Adds the exact latitude and longitude of the business

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

Visits the business website and looks for a public email address. Increases run time per business.

## Actor input object example

```json
{
  "search": "Restaurants",
  "location": "Barcelona",
  "maxResultados": 10,
  "minRating": 4,
  "extraerDireccion": false,
  "soloConWeb": false,
  "extraerCategoriaYPrecio": false,
  "extraerHorario": false,
  "extraerCoordenadas": false,
  "extraerEmail": false
}
```

# Actor output Schema

## `results` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("victorl90/mapleads-pro").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("victorl90/mapleads-pro").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call victorl90/mapleads-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=victorl90/mapleads-pro",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/KwfFfK5IyL32v3v48/builds/ghgrDAj6sAfj83K6x/openapi.json
