# Leads Finder (`lisbuenas/leads-finder`) Actor

Meet Leads Finder—the lean, powerful alternative to ZoomInfo, Lusha, and Apollo. Get instant access to verified B2B emails, active LinkedIn profiles, and deep firmographic insights at scale. No bloated contracts, no wasted budget—just the clean, actionable leads you need to fuel your pipeline.

- **URL**: https://apify.com/lisbuenas/leads-finder.md
- **Developed by:** [Felipe Lisboa](https://apify.com/lisbuenas) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## ✨ Leads Finder — B2B leads from Google Maps with emails

Turn **Google Maps** into a steady stream of qualified B2B leads. This actor scrapes business listings, enriches each result with **emails and social profiles** from the company website, and gives you a fast, no-API-key way to build local and SMB prospect lists that are ready for CRM or outreach.

### 🚀 What this actor does

1. Builds Google Maps searches from your **search terms × locations**.
2. Scrolls each results feed and opens every business to extract **name, category, rating, reviews, phone, website, address and coordinates**.
3. (Optional) Visits each business **website** (home + contact/about pages) and harvests **emails** and **LinkedIn / Facebook / Instagram / X / YouTube** links.
4. Pushes one normalized **lead** per business to the dataset (export to JSON / CSV / Excel).

No third-party data API or API key is required — it's a real browser scrape using Puppeteer with stealth.

### 🧩 Input

> Full schema: [.actor/input_schema.json](.actor/input_schema.json). Example: [input.json](input.json).

| Field | Type | Description |
| --- | --- | --- |
| `search_terms` *(required)* | array | Business types to find (e.g. `"marketing agency"`, `"dentist"`). |
| `contact_location` | array | Region/country/state/city to search in. |
| `contact_city` | array | City-level targeting (used instead of `contact_location` when set). |
| `company_keywords` | array | Extra keywords appended to every search term. |
| `fetch_count` | integer | Max leads to collect (default 100). |
| `file_name` | string | Run label attached to every record. |
| `scrape_website_contacts` | boolean | Visit each website for emails/socials (default `true`). |
| `require_email` | boolean | Drop businesses with no email found (default `false`). |
| `language_code` | string | Google interface language (`hl`), default `en`. |
| `max_concurrency` | integer | Parallel pages; keep low (1–3) to avoid blocks. |

Each `search_term` is combined with each location, so `["dentist","orthodontist"] × ["Austin","Dallas"]` runs 4 searches.

```json
{
    "search_terms": ["marketing agency", "digital agency"],
    "contact_location": ["Austin, TX"],
    "fetch_count": 20,
    "scrape_website_contacts": true
}
````

### 📤 Output

One dataset item per business. Full list: [.actor/output\_schema.json](.actor/output_schema.json).

- **Business:** `company_name`, `category`, `company_phone`, `company_website`, `rating`, `reviews_count`, `google_maps_url`, `latitude`, `longitude`
- **Address:** `company_full_address`, `company_street_address`, `company_city`, `company_state`, `company_country`, `company_postal_code`
- **Contacts (from website):** `email`, `emails[]`, `linkedin`, `facebook`, `instagram`, `twitter`, `youtube`
- **Context:** `search_term`, `search_location`, `file_name`

```json
{
    "company_name": "Acme Agency",
    "category": "Marketing agency",
    "email": "hello@acme.com",
    "emails": ["hello@acme.com", "sales@acme.com"],
    "company_phone": "+1 512-555-0100",
    "company_website": "https://acme.com",
    "company_full_address": "123 Main St, Austin, TX 78701, United States",
    "rating": 4.7,
    "reviews_count": 134,
    "linkedin": "https://linkedin.com/company/acme",
    "google_maps_url": "https://www.google.com/maps/place/..."
}
```

> **Note on fields:** Google Maps lists *businesses*, not individual people, so person-level fields (job title, seniority, personal LinkedIn) aren't available from this source. The output focuses on the company + best business email found on the site.

# Actor input Schema

## `search_terms` (type: `array`):

Business types / services to look for on Google Maps (e.g. "marketing agency", "dentist", "law firm"). Each term is combined with each location.

## `contact_location` (type: `array`):

Where to search (e.g. "United States", "California", "London, UK"). To target a single city, leave this empty and use City instead.

## `contact_city` (type: `array`):

One or more cities. Used instead of Location when set, for city-level targeting.

## `company_keywords` (type: `array`):

Optional extra keywords appended to every search term to refine results.

## `fetch_count` (type: `integer`):

Maximum number of business leads to collect across all searches. The free Apify plan effectively caps results per run.

## `file_name` (type: `string`):

Custom run label attached to every record of this run.

## `scrape_website_contacts` (type: `boolean`):

When enabled, the actor visits each business website (home + contact page) to extract emails and social profiles. Disable for a faster, Maps-only run.

## `require_email` (type: `boolean`):

Skip businesses where no email could be found on the website. Requires "Scrape emails & socials" to be enabled.

## `language_code` (type: `string`):

Google interface language (hl parameter), e.g. "en", "pt-BR".

## `max_concurrency` (type: `integer`):

How many pages to scrape in parallel. Keep low (1-3) to reduce the chance of being blocked.

## Actor input object example

```json
{
  "search_terms": [
    "marketing agency"
  ],
  "fetch_count": 100,
  "scrape_website_contacts": true,
  "require_email": false,
  "language_code": "en",
  "max_concurrency": 1
}
```

# 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 = {
    "search_terms": [
        "marketing agency"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lisbuenas/leads-finder").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 = { "search_terms": ["marketing agency"] }

# Run the Actor and wait for it to finish
run = client.actor("lisbuenas/leads-finder").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 '{
  "search_terms": [
    "marketing agency"
  ]
}' |
apify call lisbuenas/leads-finder --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Leads Finder",
        "description": "Meet Leads Finder—the lean, powerful alternative to ZoomInfo, Lusha, and Apollo. Get instant access to verified B2B emails, active LinkedIn profiles, and deep firmographic insights at scale. No bloated contracts, no wasted budget—just the clean, actionable leads you need to fuel your pipeline.",
        "version": "0.0",
        "x-build-id": "HuyZZfjL4e6c5xEB0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lisbuenas~leads-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lisbuenas-leads-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lisbuenas~leads-finder/runs": {
            "post": {
                "operationId": "runs-sync-lisbuenas-leads-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lisbuenas~leads-finder/run-sync": {
            "post": {
                "operationId": "run-sync-lisbuenas-leads-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "search_terms"
                ],
                "properties": {
                    "search_terms": {
                        "title": "🔎 Search terms (what to find)",
                        "type": "array",
                        "description": "Business types / services to look for on Google Maps (e.g. \"marketing agency\", \"dentist\", \"law firm\"). Each term is combined with each location.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "contact_location": {
                        "title": "🌍 Location (Region / Country / State)",
                        "type": "array",
                        "description": "Where to search (e.g. \"United States\", \"California\", \"London, UK\"). To target a single city, leave this empty and use City instead.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "contact_city": {
                        "title": "🏙️ City",
                        "type": "array",
                        "description": "One or more cities. Used instead of Location when set, for city-level targeting.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "company_keywords": {
                        "title": "🔑 Extra keywords",
                        "type": "array",
                        "description": "Optional extra keywords appended to every search term to refine results.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "fetch_count": {
                        "title": "#️⃣ Number of leads to fetch",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of business leads to collect across all searches. The free Apify plan effectively caps results per run.",
                        "default": 100
                    },
                    "file_name": {
                        "title": "📁 File name / Run label",
                        "type": "string",
                        "description": "Custom run label attached to every record of this run."
                    },
                    "scrape_website_contacts": {
                        "title": "✉️ Scrape emails & socials from each website",
                        "type": "boolean",
                        "description": "When enabled, the actor visits each business website (home + contact page) to extract emails and social profiles. Disable for a faster, Maps-only run.",
                        "default": true
                    },
                    "require_email": {
                        "title": "📧 Only keep leads with an email",
                        "type": "boolean",
                        "description": "Skip businesses where no email could be found on the website. Requires \"Scrape emails & socials\" to be enabled.",
                        "default": false
                    },
                    "language_code": {
                        "title": "🌐 Language",
                        "type": "string",
                        "description": "Google interface language (hl parameter), e.g. \"en\", \"pt-BR\".",
                        "default": "en"
                    },
                    "max_concurrency": {
                        "title": "⚙️ Max concurrency",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many pages to scrape in parallel. Keep low (1-3) to reduce the chance of being blocked.",
                        "default": 1
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
