# Person Business Email Finder — Name + Company → Verified Email (`nexgendata/person-business-email-finder`) Actor

- **URL**: https://apify.com/nexgendata/person-business-email-finder.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 business email founds

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 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

## Person Business Email Finder — Name + Company → Verified Business Email

**You know *who* you need to reach and *where* they work. You just don't have their email.** This Actor closes that gap. Give it a person's name and their company's domain, and it returns the single most-likely **public business email** for that person — plus a ranked list of fallback candidates, live MX verification, and the company's email provider. It's the classic "Hunter-style" pattern finder, built on deterministic, well-known corporate email conventions. No black box, no scraped inboxes.

> **What this is:** public business-email *pattern inference*. The Actor reproduces the standard formats organizations openly use for work addresses (`first.last@`, `flast@`, `first@`…) and verifies that the domain can actually receive mail. It is **not** a data broker, it does **not** scrape personal data, and it never reads a private mailbox.

---

### ⚡ What you get

- 🎯 **One best email per person** — the highest-probability public work address, ready to use.
- 📋 **Ranked candidate list** — every standard pattern (`first.last`, `firstlast`, `flast`, `first`, `f.last`, `last.first`, and more) ordered by real-world frequency, so you always have a fallback.
- ✅ **Live MX verification** — a real DNS lookup confirms the company domain can receive email (not a guess).
- 🏢 **Email provider detection** — Google Workspace, Microsoft 365, Proofpoint, Zoho, Fastmail, and more, inferred from the MX records.
- 📊 **Confidence score** — `high` / `medium` / `low`, factoring in pattern strength and MX status.
- 🔁 **Bulk-ready** — pass one person or a thousand; domains are MX-cached so big lists stay fast.
- ⏱️ **Timestamped, structured JSON** — clean fields, easy to pipe into a CRM, a sequencer, or a spreadsheet.

---

### 🎯 Use cases

- **Sales & SDR prospecting** — you found the decision-maker on LinkedIn; get their likely work email to start a sequence.
- **Recruiting & sourcing** — reach a candidate at their current employer without a paid seat.
- **B2B lead enrichment** — backfill the missing "email" column on a list of names + companies.
- **PR & partnerships** — contact a named exec, founder, or journalist at their organization.
- **Founder & investor outreach** — warm up a targeted list of named contacts at specific companies.
- **Data hygiene** — verify whether a guessed address pattern even resolves to a mail-capable domain.

---

### 🚀 How to use

#### Input

| Field | Type | Description |
|------|------|-------------|
| `people` | array | List of people. Each item is `{ "fullName": "...", "companyDomain": "..." }`. You may also pass plain strings like `"Patrick Collison, stripe.com"`. |
| `verify` | boolean | When `true` (default), MX-verify each domain and detect its provider. |

```json
{
  "people": [
    { "fullName": "Patrick Collison", "companyDomain": "stripe.com" },
    { "fullName": "Brian Chesky", "companyDomain": "airbnb.com" }
  ],
  "verify": true
}
````

#### Run it with Python (Apify client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("nexgendata/person-business-email-finder").call(run_input={
    "people": [
        {"fullName": "Patrick Collison", "companyDomain": "stripe.com"},
        {"fullName": "Brian Chesky", "companyDomain": "airbnb.com"},
    ],
    "verify": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["full_name"], "→", item["best_email"], f"({item['confidence']})")
```

#### Run it with cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/nexgendata~person-business-email-finder/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "people": [
          { "fullName": "Patrick Collison", "companyDomain": "stripe.com" }
        ],
        "verify": true
      }'
```

Then fetch the dataset from the run's `defaultDatasetId` via `GET /v2/datasets/{id}/items`.

***

### 📊 Output fields

Each result row contains:

| Field | Description |
|------|-------------|
| `full_name` | The person's name as provided. |
| `company_domain` | The normalized company domain. |
| `best_email` | The single most-likely public business email. |
| `candidate_emails` | Ranked list of `{ email, pattern, rank }` — every standard format, best first. |
| `mx_verified` | `true` if the domain has valid DNS MX records (can receive mail). |
| `email_provider` | Detected mail provider (e.g. *Google Workspace*, *Microsoft 365*). |
| `confidence` | `high` / `medium` / `low`. |
| `is_free_provider` | `true` if the domain is a consumer mailbox (gmail.com, etc.). |
| `mx_records` | The top MX hosts found, with priorities. |
| `data_source` | `"Business email pattern inference + public DNS MX"`. |
| `as_of_timestamp` | UTC ISO timestamp of the run. |

**Sample output** (real run on `Patrick Collison` @ `stripe.com`):

```json
{
  "full_name": "Patrick Collison",
  "company_domain": "stripe.com",
  "best_email": "patrick.collison@stripe.com",
  "candidate_emails": [
    { "email": "patrick.collison@stripe.com", "pattern": "first.last", "rank": 1 },
    { "email": "patrickcollison@stripe.com",  "pattern": "firstlast",  "rank": 2 },
    { "email": "pcollison@stripe.com",         "pattern": "flast",      "rank": 3 },
    { "email": "patrick@stripe.com",           "pattern": "first",      "rank": 4 }
  ],
  "mx_verified": true,
  "email_provider": "Google Workspace",
  "confidence": "high",
  "data_source": "Business email pattern inference + public DNS MX",
  "as_of_timestamp": "2026-06-13T23:10:16Z"
}
```

***

### ⚖️ Legal & ethical use

This Actor performs **public business-email pattern inference only**. It:

- Generates the **standard, openly-documented** email conventions that companies use for work addresses — the same formats a person would guess by hand.
- Confirms deliverability via a **public DNS MX lookup** (the same lookup any mail server performs).
- Does **not** scrape, harvest, purchase, or expose any private, personal, or non-public data, and never accesses a mailbox.

The output is an **inference of a likely public work address**, not a confirmed record. You are responsible for using the results lawfully — including compliance with **GDPR**, **CAN-SPAM**, **CASL**, and any applicable local marketing/privacy regulations. Use it for legitimate B2B communication, honor opt-outs, and don't contact people who've asked not to be contacted.

***

### ❓ FAQ

**Is the best email guaranteed to be correct?**
No — and any tool that claims otherwise is overstating. This Actor returns the *statistically most likely* public business email based on common corporate conventions. For most companies using a standard `first.last@` or `flast@` format, the top candidate is correct a high share of the time; for companies with unusual or mixed conventions it may be a lower-ranked candidate. That's exactly why you get a **ranked candidate list** — try the best one, fall back as needed, and verify deliverability before bulk sending.

**Does `mx_verified: true` mean the inbox exists?**
No. MX verification proves the **domain** can receive email, not that the specific mailbox is active. SMTP-level mailbox probing is intentionally not performed (it's unreliable and often blocked). Treat `mx_verified` as "this domain is real and mail-capable."

**What if I only have a name and a company name (not a domain)?**
Provide the domain for best results. If you have only a company name, resolve it to a domain first (our **Company Email Finder** handles name/domain discovery).

**How does confidence work?**
`high` = strong standard pattern on an MX-verified corporate domain. `medium` = verified domain but a weaker pattern. `low` = unverified domain, a free/consumer provider, or an unparseable name.

**Does it handle accents and middle names?**
Yes — accents are normalized (e.g. *é → e*), titles/suffixes (Dr., Jr.) are stripped, and first/last tokens are extracted intelligently.

***

### 🔗 Related Actors

Build the full find → enrich → verify → deliver pipeline:

- 🏢 [**Company Email Finder**](https://apify.com/nexgendata/company-email-finder?fpr=2ayu9b) — start from a domain, get back role-based business emails (sales@, support@, press@…).
- 🧩 [**B2B Contact Enricher**](https://apify.com/nexgendata/b2b-contact-enricher?fpr=2ayu9b) — turn company names/domains into enriched contact records with firmographics + verification.
- 🗂️ [**Leads to Notion CRM**](https://apify.com/nexgendata/leads-to-notion-crm?fpr=2ayu9b) — push your enriched, verified leads straight into a ready-to-use Notion CRM.

***

### 🏢 About NexGenData

NexGenData builds production-ready scrapers and MCP servers for AI agents and growth teams — covering business data, lead generation, real estate, finance, and regulatory filings. Pay-per-event pricing, clean structured output, and tools that work with Apify, n8n, Make, Zapier, Clay, and the MCP ecosystem.

*If this Actor saved you time, a quick review on the Apify Store really helps others find it. 🙏*

# Actor input Schema

## `people` (type: `array`):

List of people to find business emails for. Each item is an object like {"fullName": "Patrick Collison", "companyDomain": "stripe.com"}. You can also pass plain strings in the form 'Full Name, domain.com'.

## `verify` (type: `boolean`):

When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS lookups and return pattern candidates only.

## `notionConnector` (type: `string`):

Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console → Settings → API & Integrations, then select it here.

## `notionParentId` (type: `string`):

Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace.

## Actor input object example

```json
{
  "people": [
    {
      "fullName": "Patrick Collison",
      "companyDomain": "stripe.com"
    }
  ],
  "verify": true
}
```

# 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 = {
    "people": [
        {
            "fullName": "Patrick Collison",
            "companyDomain": "stripe.com"
        },
        {
            "fullName": "Brian Chesky",
            "companyDomain": "airbnb.com"
        }
    ],
    "verify": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/person-business-email-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 = {
    "people": [
        {
            "fullName": "Patrick Collison",
            "companyDomain": "stripe.com",
        },
        {
            "fullName": "Brian Chesky",
            "companyDomain": "airbnb.com",
        },
    ],
    "verify": True,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/person-business-email-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 '{
  "people": [
    {
      "fullName": "Patrick Collison",
      "companyDomain": "stripe.com"
    },
    {
      "fullName": "Brian Chesky",
      "companyDomain": "airbnb.com"
    }
  ],
  "verify": true
}' |
apify call nexgendata/person-business-email-finder --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Person Business Email Finder — Name + Company → Verified Email",
        "version": "0.0",
        "x-build-id": "XDYICAzrbovrDarUB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~person-business-email-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-person-business-email-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/nexgendata~person-business-email-finder/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-person-business-email-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/nexgendata~person-business-email-finder/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-person-business-email-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": [
                    "people"
                ],
                "properties": {
                    "people": {
                        "title": "People (name + company domain)",
                        "type": "array",
                        "description": "List of people to find business emails for. Each item is an object like {\"fullName\": \"Patrick Collison\", \"companyDomain\": \"stripe.com\"}. You can also pass plain strings in the form 'Full Name, domain.com'."
                    },
                    "verify": {
                        "title": "MX-verify domains",
                        "type": "boolean",
                        "description": "When enabled (default), each company domain is checked for valid DNS MX records and the email provider (Google Workspace, Microsoft 365, etc.) is detected. Disable to skip DNS lookups and return pattern candidates only.",
                        "default": true
                    },
                    "notionConnector": {
                        "title": "Deliver to Notion (optional)",
                        "type": "string",
                        "description": "Optional. Connect your Notion workspace and the resolved business emails are also written as a Notion page in the same run — the Actor never sees your Notion credentials. Authorize a Notion MCP connector in Apify Console → Settings → API & Integrations, then select it here."
                    },
                    "notionParentId": {
                        "title": "Notion parent page ID (optional)",
                        "type": "string",
                        "description": "Optional. The Notion page ID to create the page under. If blank, Notion creates a private page in your workspace."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
