# B2B Leads Finder with Emails (Apollo URL or Filters) (`evascrape/b2b-leads-finder`) Actor

Find B2B contacts with work emails by job title, seniority, location, industry and company size, or paste an Apollo.io people search URL. Optional real-time email verification. Pay only for leads delivered.

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

## Pricing

from $4.50 / 1,000 lead with emails

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

## B2B Leads Finder with Emails (Apollo URL or Filters)

Build a list of B2B contacts with work emails in one run. Choose who you want by **job title, seniority, department, location, industry, company size, revenue and funding**, or paste an **Apollo.io people search URL** and get the matching contacts without an Apollo account or cookie. Add **real-time email verification** if you plan to send email.

Made by [Evascrape](https://evascrape.com/?utm_source=apify\&utm_medium=store\&utm_campaign=b2b-leads-finder). The search runs on Evascrape's servers against a B2B contact database; this Actor starts the search, waits for it and saves the leads to your dataset.

### What you get

One dataset item per lead:

- **Person:** first name, last name, full name, job title, headline, seniority, department, work email, personal email (when listed), mobile number (when listed), LinkedIn profile URL, city, state, country
- **Company:** name, domain, website, LinkedIn URL and ID, employee range, industry, description, annual revenue, total funding, founded year, phone, full address, market cap, technologies
- **Email check** (only with "Verify emails"): `valid`, `risky`, `invalid`, `unknown`, or `not_checked`

Fields that the database does not have for a contact are `null`. You can export the dataset as CSV, Excel, JSON or connect it to Make, Zapier, n8n or the Apify API.

### How it works

1. Pick **Filters** or **Apollo.io people search URL** as the search mode.
2. Set the number of leads (100 to 2,000 per run, in steps of 100).
3. Optionally turn on **Verify emails in real time**.
4. Run. The status line shows progress; leads appear in the Output tab when the search is done.

By default only contacts whose email the database marks as validated are returned. Turn on **Include contacts with unconfirmed emails** to also get contacts whose email status is unknown: you get more leads, but more of them may bounce.

#### Apollo.io URL mode

Copy the address bar of a people search on `app.apollo.io` (it starts with `https://app.apollo.io/#/people?`). The filters are read from the URL and translated to the same search fields as Filters mode. Apollo is not contacted and no Apollo login is used.

**No silent filter dropping.** If your Apollo URL contains a filter that has no equivalent here (for example *department* or a free keyword search), the run stops before the search starts, tells you which filters they were, and nothing is charged. Remove those filters in Apollo, copy the URL again and rerun. A list that quietly ignored part of your targeting would look right but reach the wrong people.

### Pricing

Pay per event. You pay only for what is delivered:

| Event | Price | When it is charged |
|---|---|---|
| Lead | $0.0045 per lead ($4.50 per 1,000) | For each lead with an email address saved to your dataset |
| Verified email | $0.0065 per email ($6.50 per 1,000) | Only with "Verify emails", for each email the verification service returned a result for |

Leads without an email address (8 of 100 in our own test run) are still added to your dataset, free of charge.

There is no start fee. You are **not charged** when the run fails, when no lead matches your filters, when Apollo filters cannot be applied, or for leads that could not be delivered. The run also respects your **Maximum cost per run** setting: it asks only for as many leads as fit in that budget, so you never pay for a lead you did not get.

Example: 1,000 leads with emails cost $4.50. The same 1,000 leads with verification cost up to $11.00.

### Limits

- 100 to 2,000 leads per run, rounded down to a multiple of 100. You may receive fewer leads than requested when fewer contacts match; you pay only for the ones delivered.
- Up to 4,000 leads per user per day (UTC). The service has a shared daily capacity; when it is reached the run stops without charge and asks you to try later.
- **Apify free plan:** 100 leads per run, one run per day, no email verification. Apify does not pass free-plan usage on to us, while our data cost stays the same, so the free plan is limited to a test run.
- People search only. For local business lists (Google Maps), use Evascrape directly.

### Input example

```json
{
  "searchMode": "filters",
  "jobTitles": ["Marketing Manager", "Head of Growth"],
  "seniority": ["manager", "head"],
  "locations": ["united states"],
  "companySizes": ["11-20", "21-50", "51-100"],
  "industries": ["computer software", "marketing & advertising"],
  "maxResults": 500,
  "verifyEmails": true
}
```

Apollo mode:

```json
{
  "searchMode": "apollo_url",
  "apolloUrl": "https://app.apollo.io/#/people?personTitles[]=ceo&personLocations[]=Germany&organizationNumEmployeesRanges[]=11%2C50",
  "maxResults": 200
}
```

Put each job title, domain or keyword on its own line. Values with commas are rejected so that a title such as "CEO, Founder" is not split into two different filters.

### Output example

The example below uses invented values.

```json
{
  "firstName": "Jane",
  "lastName": "Doe",
  "fullName": "Jane Doe",
  "jobTitle": "Head of Growth",
  "seniority": "head",
  "department": "marketing",
  "email": "jane.doe@example.com",
  "emailVerification": "valid",
  "linkedinUrl": "https://www.linkedin.com/in/example",
  "city": "Austin",
  "state": "Texas",
  "country": "United States",
  "companyName": "Example Inc",
  "companyDomain": "example.com",
  "companySize": "51-100",
  "industry": "computer software",
  "source": "Evascrape B2B database"
}
```

The run summary (requested, delivered, charged and verified counts) is saved as `OUTPUT` in the key-value store.

### Use cases

- Outbound lists for SDRs and agencies: one role in one market, ready for your sequencer
- Turning an Apollo search into a CSV without exporting credits or a seat
- Account-based lists: all marketing leaders at a set of company domains
- Enriching a CRM segment with titles, LinkedIn URLs and company data
- Market sizing: how many contacts of a given profile exist in a region

### How long does a run take?

A 100-lead run usually finishes in a few minutes. Larger runs take longer, and email verification adds time on top: usually minutes, sometimes more than an hour for large lists. The run keeps you updated in its status line. The maximum run time is 3 hours; if a search takes longer, it stops without charge.

### Legal and responsible use

This Actor returns personal data about business contacts (names, work emails, phone numbers, profile URLs). You are responsible for how you use it:

- **GDPR / UK GDPR:** you need a lawful basis (usually legitimate interest, with a documented balancing test) to process the data of people in the EU or UK, and you must tell them where you got their data and how to object when you first contact them.
- **CAN-SPAM (US):** commercial email must identify you as the sender, include a valid postal address and a working opt-out, and honor opt-outs within 10 business days. Other countries (for example Canada's CASL) can require prior consent.
- Do not use the data for spam, for sensitive decisions about individuals, or for any purpose the people concerned would not reasonably expect.
- Personal emails and mobile numbers, when present, are more sensitive than work emails. Keep only what you need.

This is general information, not legal advice. Evascrape does not guarantee that a specific use of the data is lawful in your jurisdiction.

### FAQ

**Do I need an Apollo.io or LinkedIn account?** No. Nothing is logged into on your behalf.

**Why did my run stop with "filters have no equivalent here"?** Your Apollo URL had a filter we cannot apply. The run stops on purpose instead of returning a broader list than you asked for. Nothing was charged.

**Why did I get fewer leads than I asked for?** Only contacts with a validated email are returned by default and some audiences are small. You pay only for delivered leads. Try broader filters or include contacts with unconfirmed emails.

**Can I use it from the API or an AI agent?** Yes, like any Apify Actor: call it with the input above and read the dataset.

### Support

Open an issue in the Issues tab of this Actor, or use the contact page on [evascrape.com](https://evascrape.com/?utm_source=apify\&utm_medium=store\&utm_campaign=b2b-leads-finder).

# Actor input Schema

## `searchMode` (type: `string`):

Build the audience with the filters below, or paste a people search URL from Apollo.io. In Apollo mode every filter in the URL must have an equivalent here, otherwise the run stops before it starts and nothing is charged.

## `apolloUrl` (type: `string`):

Only used in "Apollo.io people search URL" mode. Copy the address bar of a people search on app.apollo.io (it starts with https://app.apollo.io/#/people?). No Apollo account or cookie is used: the filters are read from the URL and the search runs on Evascrape.

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

Contacts whose job title matches any of these, for example "Marketing Manager" or "Head of Growth".

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

Leave out contacts whose job title matches any of these.

## `seniority` (type: `array`):

Seniority levels to include.

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

Functional areas to include.

## `locations` (type: `array`):

Countries or regions where the contact is based.

## `excludeLocations` (type: `array`):

Leave out contacts based in these countries or regions.

## `companySizes` (type: `array`):

Employee count ranges of the contact's company.

## `industries` (type: `array`):

Industries of the contact's company.

## `excludeIndustries` (type: `array`):

Leave out companies in these industries.

## `companyDomains` (type: `array`):

Only contacts at these company domains, for example acme.com.

## `companyKeywords` (type: `array`):

Keywords that describe the company, for example "saas" or "dental clinic".

## `excludeCompanyKeywords` (type: `array`):

Leave out companies described by these keywords.

## `minRevenue` (type: `string`):

Lower bound of the company's annual revenue.

## `maxRevenue` (type: `string`):

Upper bound of the company's annual revenue.

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

Latest funding round type of the company.

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

How many leads to find, in steps of 100 (rounded down). Minimum 100, maximum 2,000 per run. You pay only for leads delivered. Apify free plan: 100 leads per run, one run per day.

## `includeUnverifiedEmails` (type: `boolean`):

By default only contacts whose email the database marks as validated are returned. Turn this on to also get contacts whose email status is unknown. You get more leads, but more of them may bounce.

## `verifyEmails` (type: `boolean`):

Check every email with a real-time verification service after the search and add the result (valid, risky, invalid, unknown) to each lead. Charged per checked email. Adds time to the run, often 10 to 60 minutes for large lists. Needs a paid Apify plan.

## Actor input object example

```json
{
  "searchMode": "filters",
  "jobTitles": [
    "Marketing Manager"
  ],
  "locations": [
    "united states"
  ],
  "maxResults": 100,
  "includeUnverifiedEmails": false,
  "verifyEmails": false
}
```

# Actor output Schema

## `leads` (type: `string`):

One item per lead (contact + company fields, optional email verification result).

## `summary` (type: `string`):

Requested and delivered lead counts, verified email count and notes.

# 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 = {
    "searchMode": "filters",
    "jobTitles": [
        "Marketing Manager"
    ],
    "locations": [
        "united states"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("evascrape/b2b-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 = {
    "searchMode": "filters",
    "jobTitles": ["Marketing Manager"],
    "locations": ["united states"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("evascrape/b2b-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 '{
  "searchMode": "filters",
  "jobTitles": [
    "Marketing Manager"
  ],
  "locations": [
    "united states"
  ],
  "maxResults": 100
}' |
apify call evascrape/b2b-leads-finder --silent --output-dataset

```

## MCP server setup

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