Company Email Finder — B2B Contact Discovery API avatar

Company Email Finder — B2B Contact Discovery API

Pricing

from $100.00 / 1,000 business email records

Go to Apify Store
Company Email Finder — B2B Contact Discovery API

Company Email Finder — B2B Contact Discovery API

Find the business emails a company publishes on its own website. Give it company domains, get one row per address — email, role or personal type, source page, email provider and an MX check that the domain accepts mail. Delivers to Notion via Apify MCP connectors. No API key. Pay per record.

Pricing

from $100.00 / 1,000 business email records

Rating

0.0

(0)

Developer

NexGenData

NexGenData

Maintained by Community

Actor stats

0

Bookmarked

234

Total users

6

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

Company Email Finder

Company Email Finder is a NexGenData tool on Apify that returns business email addresses with role type, source page and an MX check from each company's own website.

Find the email addresses a company publishes on its own website. Give it company domains, get back one clean JSON row per address — deduplicated, classified as role or personal, with an MX check that the domain accepts mail.

Output is a prospect list assembled from the company's own public web pages. Addresses are not SMTP-verified. Use it in line with applicable outreach and privacy law.

What it does

For each domain the actor fetches the homepage plus common contact/about/team/legal pages (/contact, /about, /team, /impressum, /privacy, …), extracts every address on that domain (visible text and mailto: links), drops placeholders (john.doe@, email@, …) and vendor noise, deduplicates, and reports the domain's MX records. It does not guess addresses, infer names or titles, score confidence, or verify deliverability. Optionally the same rows are delivered to Notion or Supabase.

Every domain ends in exactly one outcome and the run status message names the counts: N domains: A delivered X emails, B had no published emails, C unreachable, D blocked, E not processed (time budget).

  • delivered — at least one address found and pushed.
  • no published emails — the site served at least one page from its own host, and it contains no address on that domain.
  • unreachable — DNS failure, connection error, timeout or an error status on every page tried (a dead or JavaScript-only site).
  • blocked — 401/403/429/503 or a bot-wall page.
  • not processed — the run's time budget ran out before the domain started.

If a run finds nothing to deliver — every site was unreachable or blocked, the sites publish no email address, or the entries are not domains (a bare company name such as "Stripe" is skipped; use stripe.com) — it ends SUCCEEDED with 0 rows, a status message that says why, and nothing charged beyond the run start. Non-Latin domains (for example münchen.de) are looked up in their ASCII form.

Input

The only required field is domains — a list of company domains or URLs (up to 200 per run). Everything else is optional delivery configuration.

Example input

{
"domains": ["postmarkapp.com", "apple.com", "https://notion.so"]
}

Configuration

FieldTypeRequiredDescription
domainsarray of stringsYesCompany domains or URLs to scan (e.g. stripe.com, https://apple.com). Max 200 per run; domains are processed 3 at a time and any that cannot start inside the run timeout are reported as not processed.
notionConnectorstringNoConnect a Notion workspace to also write the found emails to a Notion page.
notionParentIdstringNoNotion page ID to create the page under. Leave blank to create a private page.
supabaseConnectorstringNoConnect your own Supabase project to also insert rows into a table.
supabaseTablestringNoTarget table in the public schema. Defaults to nexgendata_leads, created if missing.
supabaseProjectIdstringNoYour Supabase project reference (e.g. abcdefghijklmnop), required unless the connector URL already includes it.
deliveryDedupbooleanNoWhen on (default), rows already delivered in a previous run are not delivered again.

Output

One record per email address (8 fields). Only email rows are ever written — no sentinel or error rows.

FieldDescription
emailThe address found (lower-cased).
emailTyperole for functional mailboxes (info@, sales@, support@, hr@, press@, …), otherwise personal.
sourceThe page the address was parsed from: Homepage (https://domain) or Page (https://domain/contact).
domainRequested company domain the address belongs to.
companyNameThe homepage <title> text, when available.
emailProviderMail provider inferred from MX records (Google Workspace, Microsoft 365, Zoho Mail, ProtonMail, Mimecast, Proofpoint, or Unknown).
mxRecordsThe domain's MX records as [{"priority": 10, "exchange": "host"}] (empty list if none).
verifiedtrue when the domain has MX records (it accepts mail). This is an MX check only — the address itself is not SMTP-verified.

Example output

{
"email": "support@postmarkapp.com",
"emailType": "role",
"source": "Page (https://postmarkapp.com/contact)",
"domain": "postmarkapp.com",
"companyName": "Postmark: Fast, reliable email delivery",
"emailProvider": "Google Workspace",
"mxRecords": [{"priority": 1, "exchange": "aspmx.l.google.com"}],
"verified": true
}

Pricing: $0.10 per email row (Pay-Per-Event) plus $0.00005 actor start — about 10 emails per $1. Domains with no published emails, unreachable or blocked domains cost nothing beyond the start event.

Use with AI agents

Point Claude, the OpenAI Agents SDK, an n8n flow or any MCP-aware client at it and run prospecting on demand.

Agentic payments (x402): Supports agentic payment via x402 — agents can call this actor with USDC, no API key required.

Run it on a schedule

The emails a company publishes on its own website change slowly, so a monthly run over your target domains is usually enough. Run it more often only while you are adding new accounts to the list. Between runs you may see new addresses that a company added to its contact, about or team pages, and addresses that disappeared. The actor removes duplicates within a run, but it does not remember earlier runs, so compare results by email to find addresses that are new. Send each run's results onward with a webhook, Google Sheets, Zapier, Make or the Apify API.

Video guides from Apify: Schedule your Actor · Integrations

FAQ

Why use this instead of checking each company's website by hand?

You can find these addresses yourself by reading each site's contact pages. This actor does it for up to 200 domains per run. It checks the homepage and common contact, about, team, support, legal and privacy pages, removes placeholders and duplicates, marks each address as role or personal, records the page it came from, and reports the domain's mail provider from its MX records. It needs no subscription or separate API key, and you pay only for emails it finds.

What does a typical run cost?

You pay per result, not for run time: $0.10 for each row in the results, plus $0.00005 per run start (charged per GB of run memory, minimum one). A run that returns 5 emails costs about $0.50. Live prices are always shown in the Pricing tab.

How do I find the contact emails for a list of company domains?

Put the domains in the domains list, for example stripe.com. Each address found becomes one row with email, emailType, source, domain, companyName, emailProvider, mxRecords and verified. The run's status message also tells you how many domains had no published emails, were unreachable or were blocked.

Are the emails verified?

Not at the address level. verified: true only means the domain has MX records and accepts mail. The actor does not run SMTP checks or catch-all detection. To check deliverability, pass the results through an email verification actor.

Can it find a specific person's email address?

Only if the company publishes that address on its own website. It does not guess address patterns and does not return names, job titles or LinkedIn profiles. For a name plus company lookup, use Business Email Lookup.

What happens if a company publishes no email addresses?

That domain is reported as "no published emails" and adds no email charges. The actor has no contact database of its own, so a site that offers only a web form returns nothing.

If this actor is useful, these related ones from the same publisher may cover your next step: