Public B2B Email Finder & MX Verifier avatar

Public B2B Email Finder & MX Verifier

Pricing

from $1.07 / 1,000 item processeds

Go to Apify Store
Public B2B Email Finder & MX Verifier

Public B2B Email Finder & MX Verifier

Find person-bound business emails visibly published on company websites and verify syntax and public MX routing.

Pricing

from $1.07 / 1,000 item processeds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

B2B Email Finder & Public MX Verifier

Find business emails only when a company has visibly published an address beside the requested person's name on its own public website. Every result preserves the public evidence page and checks syntax plus public DNS MX routing.

This is an evidence-first alternative to guessed address patterns. It is designed for B2B research where a buyer needs to review the source before contacting anyone.

Who is it for

  • Sales and partnership researchers checking published business contacts.
  • Compliance teams that require a source URL and name context.
  • Agencies enriching a known list of people and company domains.
  • AI agents that need a conservative, auditable public-contact lookup.

What you get

For each requested person and company domain, the Actor returns one outcome row. A found email must be publicly visible on that company domain in bounded context with the requested full name.

  • Public source URL and short evidence snippets.
  • Normalized email and conservative role/disposable classification.
  • Syntax validation and public MX routing result.
  • Explicit NOT_FOUND or BLOCKED_OR_UNAVAILABLE outcomes instead of generated alternatives.

Input recipe

Use a small, specific batch first. Domains must be company website domains, without paths.

{
"people": [
{
"firstName": "Jane",
"lastName": "Smith",
"domain": "company.com"
}
],
"maxPagesPerDomain": 4
}

Input settings

InputTypeDefaultDescription
peoplearrayrequiredOne to 100 person and company-domain targets. Duplicate targets are merged.
people[].firstNamestringrequiredRequested person's first name.
people[].lastNamestringrequiredRequested person's last name.
people[].domainstringrequiredCompany website domain, without a path.
maxPagesPerDomaininteger8One to 20 root, team, leadership, contact, and sitemap-discovered pages to inspect.

Output example

{
"firstName": "Jane",
"lastName": "Smith",
"fullName": "Jane Smith",
"companyDomain": "company.com",
"email": "jane.smith@company.com",
"normalizedEmail": "jane.smith@company.com",
"status": "PUBLIC_EVIDENCE_MX_READY",
"emailSourceUrl": "https://company.com/team",
"emailEvidence": "Contact Jane Smith at jane.smith@company.com",
"identityEvidence": "Jane Smith, Partnerships",
"validSyntax": true,
"mxFound": true,
"mxRecords": ["mail.company.com"],
"isDisposable": false,
"isRoleAccount": false,
"verificationScope": "Public syntax and DNS MX routing only; no SMTP mailbox probe.",
"checkedAt": "2026-08-29T00:00:00.000Z"
}

Output fields

FieldMeaning
firstName, lastName, fullNameRequested and normalized person context.
companyDomainRequested company website domain.
email, normalizedEmailPublic person-bound email, or null when none was found.
statusPUBLIC_EVIDENCE_MX_READY, PUBLIC_EVIDENCE_NO_MX, NOT_FOUND, or BLOCKED_OR_UNAVAILABLE.
emailSourceUrlCompany page that visibly published the matching email.
emailEvidence, identityEvidenceShort same-page public context for the address and requested name.
validSyntaxWhether the returned value has valid email syntax.
mxFound, mxRecordsPublic DNS mail-routing result; this is not mailbox deliverability.
isDisposable, isRoleAccountConservative local classifications of a returned address.
verificationScopeBoundaries of this verification result.
checkedAtISO timestamp for the lookup.

Pricing

The Actor charges a small one-time Start event per run and an Item processed event for each dataset row produced. The per-item price has volume discounts by Apify plan; see the live Pricing tab for current rates. A row is produced for every requested target, including an explicit no-result outcome.

Input recipes

Check a single public contact

Use the input recipe above with maxPagesPerDomain: 4 for a quick evidence-first lookup.

Enrich a research batch

Provide multiple people from known company domains. Start with four pages per domain, then increase the page limit only where the company uses a large public team directory.

{
"people": [
{"firstName":"Jane","lastName":"Smith","domain":"company.com"},
{"firstName":"Alex","lastName":"Lee","domain":"example.org"}
],
"maxPagesPerDomain": 8
}

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/email-finder-api-scraper').call({
people: [{ firstName: 'Jane', lastName: 'Smith', domain: 'company.com' }],
maxPagesPerDomain: 4,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/email-finder-api-scraper").call(run_input={
"people": [{"firstName": "Jane", "lastName": "Smith", "domain": "company.com"}],
"maxPagesPerDomain": 4,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~email-finder-api-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"people":[{"firstName":"Jane","lastName":"Smith","domain":"company.com"}],"maxPagesPerDomain":4}'

MCP and AI agents

Add Apify MCP to Claude Code, then ask for source-cited public contact research.

$claude mcp add apify -- npx -y @apify/mcp-server
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}
}
}
}

Example prompt: “Run fetch_cat/email-finder-api-scraper for Jane Smith at company.com and return only rows with source URLs and MX status.”

Use the hosted MCP tool catalog at Apify MCP when your client supports it.

Tips

  • Use the legal company domain, not a social profile or a URL path.
  • Keep names specific; initials reduce reliable same-page identity matching.
  • Begin with four pages per domain to control run scope.
  • Filter exports by status and retain emailSourceUrl for review.

Limits and responsible use

The Actor checks only public company-web content. It does not generate email patterns, use people databases, sign in, bypass access controls, or test SMTP recipients. MX routing indicates that a domain advertises mail routing; it does not prove a mailbox exists, accepts mail, or grants permission to contact a person.

Respect applicable privacy, marketing, and data-protection obligations before using any contact data.

FAQ

Why is email empty?

The inspected public pages did not visibly contain both the requested full name and a same-domain email in the required bounded context.

Does MX verification mean an address is deliverable?

No. It only checks public DNS mail-routing records for the email domain. It does not perform SMTP recipient verification.

Why did I receive BLOCKED_OR_UNAVAILABLE?

The company site could not be inspected reliably within the configured scope. Keep the source URL/status in your workflow and retry later if appropriate.

Can I use a larger batch?

Yes, up to 100 targets. Start with a smaller representative batch so you can review source evidence and output statuses first.

Support

For help, include the target domain, returned status, and emailSourceUrl when present. Do not send credentials or private contact lists in a support request.