# Leads Finder — B2B Leads with Emails by Title, Industry, Tech ✅ (`neuralverge/neuralverge-leads-finder`) Actor

Find B2B leads with work emails by job title, seniority, department, location, company, industry, tech stack, funding, traffic and hiring. 10–100 leads per run with LinkedIn URL, title, company and firmographics. No cookies or account required.

- **URL**: https://apify.com/neuralverge/neuralverge-leads-finder.md
- **Developed by:** [NeuralVerge](https://apify.com/neuralverge) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.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/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

### Leads Finder — B2B Leads with Emails ✅ No Cookies

Find **B2B leads** across a database of hundreds of millions of professional profiles,
filtered by job title, seniority, department, location, company, industry, **tech stack**,
**funding**, website traffic, **hiring signals** and HQ location. Get name, title,
seniority, department, location, LinkedIn URL and the employer's firmographics per
person. Powered by the Neuralverge API. **No cookies or account required.**

Ideal for outbound sales prospecting, ABM lists, recruiting and market mapping.

### ✨ Why this Actor

- 🎯 **70+ filters in one search** — person, location, company, NAICS / SIC / LinkedIn
  industry, CRM / cloud / ERP and other tech, funding stage and amount, traffic, team
  headcount and open roles, HQ — combine any of them.
- 🏢 **Firmographics on every row** — company name, domain, LinkedIn URL, headcount,
  industry, revenue band, founding year, HQ, funding and traffic, no second lookup needed.
- 📇 **Clean lead table** — one row per person, ready for a spreadsheet, CRM, sequencer
  or AI pipeline.
- 🍪 **No cookies, login or account** — never share LinkedIn credentials or risk account
  restrictions. Everything runs on the Neuralverge backend.
- 📧 **Find email** — switch on `findEmail` to get each lead's work email from their name and
  company domain, **$10 per 1,000 results**.
- 📄 **Deep paging** — walk a big search page by page (up to 500,000 pages of 10–100
  leads) without paying twice for the same people.
- 💳 **Simple pricing** — **$2 per 1,000 results** ($0.002 each, one result = one lead). A search that matches nobody returns a
  single `no result` row and costs **$0.002**. A run that *fails* is never charged.

### 🔧 How it works

1. **Pick your filters** — e.g. `jobTitles: ["Head of Sales"]` + `countries: ["Germany"]`.
   Optionally restrict to one company with `companyLinkedinUrl`.
2. **Choose the page size** — `pageSize` from 10 to 100 leads, and `page` to continue
   further down the list.
3. **Run the Actor.** You get **one dataset row per lead** — or a single `no result` row if
   the filters matched nobody. The run log shows how many people match in total and how
   many pages there are. Export to CSV, JSON or Excel, or pull it over the Apify API.

### Input

At least one filter or a `companyLinkedinUrl` is required.

The input form has the same tabs and filters as Neuralverge's own Leads search page.

| Tab | Fields |
|---|---|
| — | `pageSize` (Leads per page, 10–100, default `25`), `page` (up to 500,000, default `1`), `findEmail` (default `false`) |
| **Person** | `firstName`, `lastName`, `personHeadline` / `excludePersonHeadline` (Headline), `jobTitles` / `excludeJobTitles` (Job Title, contains match), `seniorityLevels` (`C-Level`, `VP`, `Director`, `Manager`, `Staff`, `Other`), `departments` (22 departments), `skills`, `languages` |
| **Location** | `countries`, `continents`, `states` (State / Province), `cities` |
| **Company** | `companyLinkedinUrl` (search only inside this company), `companyNames` (+ `companyNameFuzzy`), `companyHeadline` / `excludeCompanyHeadline`, `companyOverview` / `excludeCompanyOverview`, `domains` / `excludeDomains`, `employeesMin` / `employeesMax`, `revenue` |
| **Industry** | `naicsIndustries` (NAICS), `sicIndustries` (SIC) |
| **LinkedIn** | `linkedinIndustries` |
| **Tech Stack** | `crm`, `salesAutomation`, `marketingAutomation`, `analytics`, `cms`, `cloudProvider`, `development`, `ecommerce`, `erp`, `emailHosting`, `emailSecurity`, `appSecurity`, `cloudSecurity`, `abm`, `conversationIntelligence` |
| **Funding** | `fundingTypes`, `minTotalFunding`, `minLastFunding`, `leadInvestors`, `minInvestors` |
| **Traffic & Growth** | `minTotalTraffic`, `minOrganicTraffic`, `minPaidTraffic`, `minAdSpend`, `minLinkedinGrowth` (all ≥) |
| **Hiring** | Team headcount ≥ `minEngineeringHeadcount`, `minSalesHeadcount`, `minMarketingHeadcount`; open roles ≥ `minSalesOpenRoles`, `minEngineeringOpenRoles`, `minMarketingOpenRoles`, `minItOpenRoles`, `minDevopsOpenRoles` |
| **Company Attributes** | `hasMobileApp`, `hasWebApp`, `hasCiso`, `hasCio` — `yes` / `no` |
| **HQ Location** | `hqCountries`, `hqCities`, `hqState` |

```json
{
  "jobTitles": ["Head of Sales"],
  "countries": ["Germany"],
  "pageSize": 25,
  "page": 1
}
```

### What you'll receive

**One dataset row per lead:**

- **Person** — `ranking`, `fullName`, `firstName`, `lastName`, `headline`, `linkedinUrl`,
  `jobTitle`, `seniorityLevel`, `department`, `skills`
- **Email** (with `findEmail`) — `email`, `emailStatus` (`found` / `not_found` / `no_domain` /
  `no_name` / `error`), `emailConfidence` — right after `linkedinUrl`
- **Location** — `location`, `city`, `state`, `country`
- **Company** — `company`, `companyLinkedinUrl`, `companyDomain`, `emailDomain`,
  `companyEmployeeCount`, `companyIndustry`, `companyRevenue`, `companyFoundedOn`, `companyHq`
- **Signals** — `companyTotalFunding`, `companyLastFundingType`, `companyLastFundingDate`,
  `companyMonthlyTraffic`, `companyLinkedinGrowthRate`

> **Nulls are normal.** Only fields known for the person or company are filled.
> `ranking` is the lead's position in the whole result list, so rows from different pages
> never collide.

#### Example output (real run)

One lead from a search for `jobTitles: ["Head of Sales"]`, `countries: ["Germany"]`:

```json
{
  "ranking": 1,
  "fullName": "Anna Heller",
  "firstName": "Anna",
  "lastName": "Heller",
  "headline": "head of sales operations jokey group",
  "linkedinUrl": "https://www.linkedin.com/in/anna-heller-5739652a3",
  "location": "Germany",
  "city": null,
  "state": null,
  "country": "Germany",
  "emailDomain": "jokey.com",
  "jobTitle": "Head of Sales Operations Jokey Group",
  "seniorityLevel": "Other",
  "department": "Other",
  "skills": [],
  "company": "Jokey Group",
  "companyLinkedinUrl": "https://www.linkedin.com/company/jokey-group",
  "companyDomain": "jokey.com",
  "companyEmployeeCount": 745,
  "companyIndustry": "Offices of Other Holding Companies;All Other Plastics Product Manufacturing;Other Chemical and Allied Products Merchant Wholesalers",
  "companyRevenue": "$10M to <$50M",
  "companyFoundedOn": "1968",
  "companyHq": "Wipperfürth, Germany",
  "companyTotalFunding": 0,
  "companyLastFundingType": null,
  "companyLastFundingDate": null,
  "companyMonthlyTraffic": 41,
  "companyLinkedinGrowthRate": 2
}
```

> Genuine output from a live run — one of 10,305 leads matching this search.

#### When nothing is found

A search that runs but matches nobody still returns a row, so a batch never silently loses
an input:

| Column | Value |
|---|---|
| `companyLinkedinUrl` | the company you submitted, or `null` |
| `page` | the page you asked for |
| `found` | `false` |
| `message` | why nothing was returned |

Filter these out with `found != false`. This row is billed as one result — see Pricing.

### Pricing — pay per event

This Actor uses Apify **Pay-Per-Event**:

| Event | Price | Charged |
|---|---|---|
| Actor start | **free** | never |
| Result (one lead = one dataset row) | **$2 per 1,000 results** ($0.002 each) | every lead, including the `no result` row |
| Email lookup result | **$10 per 1,000 results** ($0.01 each) | only with `findEmail` — every lookup that runs, email found or not |

A run that returns 25 leads costs **25 × $0.002 = $0.05**; 1,000 leads cost **$2.00**. With `findEmail`, 25 leads cost **25 × ($0.002 + $0.01) = $0.30**;
a lead without a company domain is not looked up and not charged for the email.

**A completed search is billed even when it matches nobody** — it writes one explicit
`no result` row (`found: false` and a `message`), so it costs **$0.002**. A run that *fails*
(missing input, bad key, upstream error) writes no row; and is not charged.

#### Rate limit

There is a ceiling on how fast one Apify account can pull from the Neuralverge backend: **5
requests per second** across the Neuralverge Actors. One run is one request, so this is about how
many runs you start at once, not about the size of a single run.

Above the ceiling the backend answers **HTTP 429**. The Actor waits out the `Retry-After` it asks
for and retries a few times before giving up; a run that does give up writes no row and is **not
charged**.

If you need a higher rate for a bulk job, get in touch.

#### Free plan limits

Users on any **paid Apify plan** are not affected by anything in this section.

On the **Apify Free plan** this Actor may be started **3 times per calendar month per user**. A run
that finds nothing still counts, because the search is performed either way. Every Neuralverge Actor
carries its own allowance — running one never uses up another's.

In addition, on the Free plan:

- a run returns at most **25 leads**;
- **Find email** is unavailable — such a run continues without emails and says so in the log.

When a limit is reached the Actor stops gracefully with a status message naming it; everything resets
on the 1st of every month, and **any paid Apify plan removes all of it**.

Pricing is on top of your Apify platform usage.

### Integrations & API

Results are stored in a standard Apify dataset — export as CSV, JSON, XML or Excel,
or fetch on demand through the [Apify API](https://docs.apify.com/api). The Actor
also plugs into Apify's integrations (Make, Zapier, n8n, webhooks) and can be called
from any [MCP](https://mcp.apify.com/) client.

### FAQ

**Do I need a LinkedIn account or cookies?** No. Everything runs on the Neuralverge
backend — you never provide credentials or a session.

**How do I get more than 100 leads?** Run again with `page: 2`, `3`, … — the run log tells
you how many pages the search has. Each page is new people, so you never pay twice.

**How do I get emails?** Switch on `findEmail` — each lead gets a work email looked up from
its name and company domain ($10 per 1,000 results).

**What is the difference from LinkedIn People Search?** This Actor searches a B2B database
with company-level signals (tech stack, funding, traffic, hiring) and returns firmographics on
every row. LinkedIn People Search queries LinkedIn's own people search.

### 🔗 Other Neuralverge Actors

- [Company Employees Finder](https://apify.com/neuralverge/neuralverge-company-employees) — every employee of one company, by its LinkedIn URL.
- [LinkedIn People Search](https://apify.com/neuralverge/neuralverge-linkedin-people-search) — search people with LinkedIn's own filters.
- [LinkedIn Profile Scraper](https://apify.com/neuralverge/neuralverge-linkedin-person) — the full profile behind any lead's URL.
- [LinkedIn Email Scraper](https://apify.com/neuralverge/neuralverge-linkedin-email) — the same profile plus a work email.
- [Email Finder](https://apify.com/neuralverge/neuralverge-email-finder) — name + company domain → work email.
- **More Neuralverge Actors** — the full catalogue (LinkedIn, contact data, company registers, reviews): [apify.com/neuralverge](https://apify.com/neuralverge).

***

**Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed
by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of
LinkedIn Corporation. All trademarks are property of their respective owners.

# Actor input Schema

## `pageSize` (type: `integer`):

How many leads one run returns. Each lead is one dataset row. Apify Free plan: this Actor can be started 3 times per calendar month per user (a run that finds nothing counts too; every Neuralverge Actor has its own allowance), and each run returns at most 25 rows. Any paid Apify plan removes all of these.

## `page` (type: `integer`):

Which page of the result list to return. Page 2 with 25 leads per page = leads 26–50. Use it to walk a large search across several runs without paying twice for the same people.

## `findEmail` (type: `boolean`):

Also find each person's work email from their name and company domain — $10 per 1,000 results ($0.01 each), charged for every lookup that runs, email found or not. People without a company domain are not looked up and not charged. Adds the columns email, emailStatus (found / not_found / no_domain / no_name / error) and emailConfidence. Available on paid Apify plans only.

## `firstName` (type: `string`):

Name — first.

## `lastName` (type: `string`):

Name — last.

## `personHeadline` (type: `array`):

LinkedIn headline keywords to include.

## `excludePersonHeadline` (type: `array`):

Drop people whose headline contains any of these keywords.

## `jobTitles` (type: `array`):

Type a job title, press Enter.

## `excludeJobTitles` (type: `array`):

Exclude titles containing these keywords (contains match).

## `seniorityLevels` (type: `array`):

Select seniority level...

## `departments` (type: `array`):

Select department...

## `skills` (type: `array`):

Type a skill, press Enter.

## `languages` (type: `array`):

Type a language, press Enter.

## `countries` (type: `array`):

Select country...

## `continents` (type: `array`):

Select continent...

## `states` (type: `array`):

Select state / province...

## `cities` (type: `array`):

Search city...

## `companyLinkedinUrl` (type: `string`):

Search only inside this company, e.g. https://www.linkedin.com/company/stripe. Leave empty to search every company.

## `companyNames` (type: `array`):

Type a company name, press Enter. Exact match unless "Company Name — fuzzy match" is on.

## `companyNameFuzzy` (type: `boolean`):

Switch to fuzzy match: names that contain the text instead of exact names.

## `companyHeadline` (type: `array`):

Company headline keywords to include.

## `excludeCompanyHeadline` (type: `array`):

Drop companies whose headline contains any of these keywords.

## `companyOverview` (type: `array`):

Company overview keywords to include.

## `excludeCompanyOverview` (type: `array`):

Drop companies whose overview contains any of these keywords.

## `domains` (type: `array`):

e.g. google.com, acme.io

## `excludeDomains` (type: `array`):

Drop people at these domains.

## `employeesMin` (type: `integer`):

Minimum company headcount.

## `employeesMax` (type: `integer`):

Maximum company headcount.

## `revenue` (type: `array`):

Select revenue...

## `naicsIndustries` (type: `array`):

North American Industry Classification System — standard used by US, Canada, and Mexico

## `sicIndustries` (type: `array`):

Standard Industrial Classification — 4-digit codes used for business categorization

## `linkedinIndustries` (type: `array`):

Select industry...

## `crm` (type: `array`):

Select CRM...

## `salesAutomation` (type: `array`):

Select sales automation...

## `marketingAutomation` (type: `array`):

Select marketing automation...

## `analytics` (type: `array`):

Select analytics...

## `cms` (type: `array`):

Select CMS...

## `cloudProvider` (type: `array`):

Select cloud provider...

## `development` (type: `array`):

Select development...

## `ecommerce` (type: `array`):

Select e-commerce...

## `erp` (type: `array`):

Select ERP...

## `emailHosting` (type: `array`):

Select email hosting...

## `emailSecurity` (type: `array`):

Select email security...

## `appSecurity` (type: `array`):

Select app security...

## `cloudSecurity` (type: `array`):

Select cloud security...

## `abm` (type: `array`):

Select ABM...

## `conversationIntelligence` (type: `array`):

Select conversation intelligence...

## `fundingTypes` (type: `array`):

Select funding type...

## `minTotalFunding` (type: `integer`):

Any.

## `minLastFunding` (type: `integer`):

Any.

## `leadInvestors` (type: `string`):

e.g. Sequoia Capital

## `minInvestors` (type: `integer`):

Any.

## `minTotalTraffic` (type: `integer`):

> \= 0

## `minOrganicTraffic` (type: `integer`):

> \= 0

## `minPaidTraffic` (type: `integer`):

> \= 0

## `minAdSpend` (type: `integer`):

> \= 0

## `minLinkedinGrowth` (type: `integer`):

> \= 0

## `minEngineeringHeadcount` (type: `integer`):

> \= 0

## `minSalesHeadcount` (type: `integer`):

> \= 0

## `minMarketingHeadcount` (type: `integer`):

> \= 0

## `minSalesOpenRoles` (type: `integer`):

> \= 0

## `minEngineeringOpenRoles` (type: `integer`):

> \= 0

## `minMarketingOpenRoles` (type: `integer`):

> \= 0

## `minItOpenRoles` (type: `integer`):

> \= 0

## `minDevopsOpenRoles` (type: `integer`):

> \= 0

## `hasMobileApp` (type: `string`):

Company has a mobile application

## `hasWebApp` (type: `string`):

Company has a web application

## `hasCiso` (type: `string`):

Company has a Chief Information Security Officer

## `hasCio` (type: `string`):

Company has a Chief Information Officer

## `hqCountries` (type: `array`):

Select HQ country...

## `hqCities` (type: `array`):

Search hq city...

## `hqState` (type: `string`):

e.g. California

## Actor input object example

```json
{
  "pageSize": 25,
  "page": 1,
  "findEmail": false,
  "jobTitles": [
    "Head of Sales",
    "VP Sales"
  ],
  "countries": [
    "Germany"
  ],
  "companyNameFuzzy": false
}
```

# Actor output Schema

## `results` (type: `string`):

Structured lead rows (name, title, seniority, department, location, LinkedIn URL, company and firmographics), one row per person.

# 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 = {
    "pageSize": 25,
    "page": 1,
    "jobTitles": [
        "Head of Sales"
    ],
    "countries": [
        "Germany"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("neuralverge/neuralverge-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 = {
    "pageSize": 25,
    "page": 1,
    "jobTitles": ["Head of Sales"],
    "countries": ["Germany"],
}

# Run the Actor and wait for it to finish
run = client.actor("neuralverge/neuralverge-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 '{
  "pageSize": 25,
  "page": 1,
  "jobTitles": [
    "Head of Sales"
  ],
  "countries": [
    "Germany"
  ]
}' |
apify call neuralverge/neuralverge-leads-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neuralverge/neuralverge-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/sjNWrNevcmPOde0BG/builds/2tMgZ9xspCdBOTb5l/openapi.json
