# ✨Leads Finder - $1.5/1k leads with Emails \[Apollo Alternative] (`code_crafter/leads-finder`) Actor

✅ Affordable alternative to ZoomInfo, Lusha & Apollo. ✅ Get Business email, 📞Mobile Number, Personal email, LinkedIn profiles, company details etc..

- **URL**: https://apify.com/code\_crafter/leads-finder.md
- **Developed by:** [Code Pioneer](https://apify.com/code_crafter) (community)
- **Categories:** Lead generation
- **Stats:** 46,919 total users, 2,378 monthly users, 99.2% runs succeeded, 1,638 bookmarks
- **User rating**: 3.60 out of 5 stars

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## ✨Leads Finder — Effortless Data Extraction

*A cost-effective alternative to ZoomInfo, Lusha & Apollo. Get verified B2B emails, LinkedIn profiles, and rich firmographics at scale.*

***

### 🚀 What this actor does

Leads Finder generates **targeted B2B contact lists** using advanced filters (job title, **Location/City**, industry, tech stack, revenue, funding, etc.) and returns **verified emails**, **mobile numbers** (paying plans only), LinkedIn URLs, and detailed **company data** — ready for CRM or outreach.
**Free plan note:** Users on the free Apify plan can fetch up to **100 leads/run**.

**Support:** <codecrafter70@gmail.com>

***

### 🧭 Quick start (UI)

1. Open the actor, set **📁 File name / Run label** (optional).
2. Choose your filters (e.g., **👔 Job Title** = "Marketing Manager", **🌍 Location** = "United States", **🏭 Industry** = "SaaS").
3. Set **#️⃣ Number of leads to fetch** (default 50,000; leave empty to fetch all that match).
4. Click **Run**. When finished, download results from the **Dataset** tab or use the **Overview** table.

> **Location vs City:** Use **Location** for a *region/country/state*. To target a single city, **leave Location empty** and use **City** only. (Same logic for the Exclude fields.)

***

### 🧩 Input schema (fields you can use)

> Fields accept arrays unless noted.

#### General

- **fetch\_count** *(integer, default 100000)* — Max leads to fetch. Leave empty to fetch all matches.
- **file\_name** *(string)* — Custom run label / export name.

#### People targeting

- **contact\_job\_title** / **contact\_not\_job\_title** — Include/Exclude titles ("realtor", "software developer", "teacher", …).
- **seniority\_level** — Founder, Owner, C-Level, Director, VP, Head, Manager, Senior, Entry, Trainee.
- **functional\_level** — C-Level, Finance, Product, Engineering, Design, HR, IT, Legal, Marketing, Operations, Sales, Support.

#### Location (Include)

- **contact\_location** — Region/Country/State (e.g., *EMEA*, *United States*, *California, US*).
- **contact\_city** — One or more cities (use this **instead of** Location when you want city-level targeting only).

#### Location (Exclude)

- **contact\_not\_location** — Region/Country/State to exclude.
- **contact\_not\_city** — One or more cities to exclude.

#### Email quality

- **email\_status** — `validated`, `not_validated`, `unknown` *(prefill: validated)*

#### Company targeting

- **company\_domain** — Limit to specific domains (e.g., `google.com`, `https://apple.com`).
- **size** — 0–1, 2–10, 11–20, 21–50, 51–100, 101–200, 201–500, 501–1000, 1001–2000, 2001–5000, 10000+
- **company\_industry** / **company\_not\_industry** — Include/Exclude industries.
- **company\_keywords** / **company\_not\_keywords** — Include/Exclude free-text keywords.
- **min\_revenue**, **max\_revenue** — Revenue bands (100K → 10B).
- **funding** — Seed, Angel, Series A…F, Venture, Debt, Convertible, PE, Other.

***

### 📤 Output schema (what you get)

Results are written to the run's **Dataset** and rendered in the **Overview** table with these columns:

**Person**

- `first_name`, `last_name`, `full_name`, `job_title`, `headline`, `functional_level`, `seniority_level`
- `email` *(verified when available)*
- `mobile_number` *(available for paying Apify plan users only)*
- `personal_email`
- `linkedin` *(profile link)*
- `city`, `state`, `country`

**Company**

- `company_name`, `company_domain`, `company_website` *(link)*, `company_linkedin` *(link)*, `company_linkedin_uid`
- `company_size`, `industry`, `company_description`
- `company_annual_revenue`, `company_annual_revenue_clean`
- `company_total_funding`, `company_total_funding_clean`
- `company_founded_year`, `company_phone`
- `company_street_address`, `company_city`, `company_state`, `company_country`, `company_postal_code`, `company_full_address`
- `company_market_cap` *(if public)*

**Context**

- `keywords`, `company_technologies`

***

### 🔎 Examples

#### Example 1 — US SaaS marketing leaders

- **contact\_job\_title:** `["Head of Marketing","VP Marketing","CMO"]`
- **functional\_level:** `["marketing"]`
- **contact\_location:** `["united states"]`
- **company\_industry:** `["computer software","internet","information technology & services","marketing & advertising","saas"]`
- **email\_status:** `["validated"]`
- **fetch\_count:** `5000`

#### Example 2 — UK CTOs

- **contact\_job\_title:** `["CTO","Head of Engineering","VP Engineering"]`
- **contact\_location:** `["united kingdom"]`
- **email\_status:** `["validated","unknown"]`

#### Example 3 — Amsterdam city-only (no broader Location)

- **contact\_city:** `["amsterdam"]`
- **contact\_location:** *(leave empty)*

***

### ✅ Best practices

- **Location vs City:** Choose **one**. Use *Location* for region/country/state **or** leave it empty and use *City* for city-only targeting. Same rule for Exclude.
- **Start broad, then narrow.** Begin with Location + title, then add industry/revenue/funding.
- **Use include & exclude.** Quickly remove irrelevant sectors with `company_not_industry` / `company_not_keywords`.
- **Prefer validated emails.** Keep `email_status = ["validated"]` for outreach-ready lists; add `unknown` to increase volume.
- **Deduplicate downstream.** If you merge runs, dedupe by `email` → `linkedin` → (`full_name`,`company_domain`).
- **Stay compliant.** Use for B2B prospecting; follow GDPR/CCPA/PECR and local rules.

***

### 🧪 Output view (in the Apify UI)

The **Overview** tab shows a sortable table with links for `company_website`, `linkedin`, and `company_linkedin`. Export any time to CSV/JSON/XLSX from the Dataset.

***

### 🧰 API usage

Run via API with the same input JSON as the UI.

1. POST a run with your input JSON.
2. Poll for completion.
3. Fetch dataset items (JSON/CSV).

*(See Apify docs for `runs`, `datasets` endpoints.)*

***

### 💵 Pricing & limits

- **From $1.5 / 1,000 leads** (cheaper than typical ZoomInfo/Lusha/Apollo seat pricing).
- On the **free Apify plan**, the platform caps at **100 leads/run**.
- **Mobile numbers** are only enriched and included for users on **paying Apify plans**.

***

### 🧯 Troubleshooting

- **Few or zero results?** Loosen filters (remove `company_not_*`, broaden Location, allow `unknown` email status). Try title synonyms ("Demand Gen" vs "Growth Marketing").
- **Too many results?** Add industry, revenue, funding, or switch from region to country/state/city.
- **Geography mismatches?** Don't mix broad regions with countries/states/cities; use *either* Location *or* City for the same target.

***

### ✨ Changelog (high level)

- v1.1 — **Simplified location filters**: replaced Region/Country/State trio with **Location (Region/Country/State)** + **City**; mirrored for Exclude.
- v1.0 — Initial release with People/Company/Tech/Revenue/Funding filters, validated email preference, and LinkedIn enrichment.

# Actor input Schema

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

Leave this field empty if you want to scrape all leads for your search criteria.

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

Give this run a custom file name or label (for easy recognition in the run history).

## `contact_job_title` (type: `array`):

Include these job titles. E.g., realtor, software developer, teacher etc.

## `contact_not_job_title` (type: `array`):

Exclude these job titles. E.g., realtor, software developer, teacher etc.

## `seniority_level` (type: `array`):

Seniority Level

## `functional_level` (type: `array`):

Functional Level

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

Select one or more locations to filter the leads.

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

Add  one or more cities to filter the leads.

## `contact_not_location` (type: `array`):

Select one or more locations to filter the leads.

## `contact_not_city` (type: `array`):

Add  one or more cities to filter the leads.

## `email_status` (type: `array`):

Email Status

## `company_domain` (type: `array`):

Include Company Website/Domain

## `size` (type: `array`):

Company Size

## `company_industry` (type: `array`):

Include any of these industries

## `company_not_industry` (type: `array`):

Exclude any of these industries

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

Include these keywords. E.g. restaurant, fitness, gym, software development

## `company_not_keywords` (type: `array`):

Exclude these keywords. E.g. restaurant, fitness, gym, software development

## `min_revenue` (type: `string`):

Minimum revenue

## `max_revenue` (type: `string`):

Maximum revenue

## `funding` (type: `array`):

Funding Round

## Actor input object example

```json
{
  "fetch_count": 100000,
  "file_name": "Prospects",
  "email_status": [
    "validated"
  ]
}
```

# 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 = {
    "email_status": [
        "validated"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("code_crafter/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 = { "email_status": ["validated"] }

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

```

## MCP server setup

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

```

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/IoSHqwTR9YGhzccez/builds/0FRSVh6S4FR2DmRcR/openapi.json
