πŸ”Ž Email Finder & Verifier - Name & Domain to Email avatar

πŸ”Ž Email Finder & Verifier - Name & Domain to Email

Pricing

Pay per usage

Go to Apify Store
πŸ”Ž Email Finder & Verifier - Name & Domain to Email

πŸ”Ž Email Finder & Verifier - Name & Domain to Email

Turn a person's name + company domain into their most-likely professional email. Generates the standard business patterns (first.last@, flast@, first@…), ranks them by commonness, and MX-verifies the domain so you keep only deliverable guesses. Keyless Hunter/Snov alternative β€” build.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Renzo Madueno

Renzo Madueno

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

πŸ”Ž Professional Email Finder β€” Name + Domain β†’ Verified Email

You have a list of names and the companies they work at β€” but no email addresses. This Actor closes that gap. Give it a person's name and their company's domain, and it returns the most-likely professional email, a 0–100 confidence score, and the full ranked list of candidate addresses β€” with the company's mail domain MX-verified so you keep only guesses that can actually receive mail.

No API key. No per-seat SaaS subscription. A keyless, pay-per-result alternative to Hunter.io and Snov.io's email finder.


The problem: names are easy, emails are hard

Prospect lists are everywhere. You export attendees from an event, scrape a conference speaker page, pull a list of a company's engineers from LinkedIn, or inherit a spreadsheet of "first name / last name / company." What you almost never get is the one thing you need to actually reach them: the email address.

Guessing by hand doesn't scale. Is it jane.smith@acme.com? jsmith@acme.com? jane@acme.com? Every company picks a convention and sticks to it β€” but the convention differs from company to company, and trying all of them by hand across a few hundred rows is a day you'll never get back.

This Actor does that guessing the way the paid tools do: it knows the standard professional email patterns, ranks them by how common they are in the real world, and checks that the company's domain can receive mail before handing you an answer.


How pattern-based email finding works

Companies overwhelmingly use one of about a dozen local-part formats. Given first = "jane", last = "smith", domain = "acme.com", the Actor builds every one of them:

PatternExampleRough prevalence*
first.lastjane.smith@acme.commost common (~1 in 3)
firstjane@acme.comvery common at startups
flastjsmith@acme.comclassic corporate
firstlastjanesmith@acme.comcommon
first_lastjane_smith@acme.comoccasional
firstljanes@acme.comoccasional
f.lastj.smith@acme.comoccasional
lastfirstsmithjane@acme.comrarer
last.firstsmith.jane@acme.comrarer
lastsmith@acme.comrare
first-lastjane-smith@acme.comrare
lastfsmithj@acme.comrare

*Prevalence weights are baked into the ranking β€” first.last is treated as the default best guess unless a stronger signal overrides it.

It then does one DNS MX lookup on the domain (not per candidate β€” that would be wasteful), which tells us:

  • Can this domain receive email at all? No MX (and no A-record fallback) β†’ the whole domain is undeliverable and every guess is worthless. We tell you that up front instead of handing you a dead address.
  • Who runs the mailbox β€” Google Workspace, Microsoft 365, Zoho, Proofpoint, Mimecast, and more β€” classified from the MX hostnames. Useful for segmentation.

The top-ranked, syntactically-valid candidate on a live domain becomes bestEmail.

Consistency across a team

If you're finding emails for several people at the same company in one run and you already know that company's convention, add "knownPattern": "flast" (or any pattern key from the table) to those rows. Every teammate at that domain then gets the same, consistent format β€” and a confidence boost β€” instead of the generic guess.


The confidence score (0–100)

confidence blends the signals that actually predict whether a guess is right:

  • Pattern commonness (up to 40 pts) β€” how frequently this format appears in the wild.
  • Known/consistent pattern (+25) β€” the guess matches a convention you asserted for the domain.
  • Real MX records present (+30) β€” the company's mail server is live and configured.
  • Implicit A-record MX only (+12) β€” the domain can probably receive mail, but weaker.
  • Not a throwaway domain (+5).

Hard caps keep the number honest: no MX β†’ confidence is capped low (the address can't be delivered no matter how common the pattern), and disposable domains are floored near zero.

Read it as: 80–100 = high-confidence, standard pattern on a healthy business mailbox; 50–79 = plausible best guess, verify before a high-stakes send; below 50 = weak β€” thin name data, unusual domain, or no MX.


Honest note: best-guess + MX-verified, not SMTP-confirmed

This is important, and most tools blur it.

This Actor tells you the most probable address and proves the domain can receive mail. It does not open an SMTP connection to confirm that one specific mailbox exists. Two reasons:

  1. Cloud IPs can't SMTP-probe reliably. Port 25 is blocked or greylisted from most cloud providers, so a "mailbox check" from here returns false negatives.
  2. Catch-all domains accept everything. Many companies accept mail to any address at their domain, so an SMTP "yes" wouldn't prove the mailbox is real anyway.

So every live-domain guess carries some residual risk that it's a catch-all or an alias β€” surfaced as isCatchAllRisk: true. Treat bestEmail as a strong lead, not a guarantee.

The clean workflow: run this finder, then pipe bestEmail into our Email Verifier for the full syntax + MX + disposable/role/free deliverability read before you send. Find here, verify there, send clean.


Example

Input:

{
"people": [
{ "firstName": "John", "lastName": "Doe", "domain": "stripe.com" },
{ "fullName": "Jane Smith", "domain": "notion.so" }
]
}

Output (one record per person):

{
"firstName": "john",
"lastName": "doe",
"domain": "stripe.com",
"bestEmail": "john.doe@stripe.com",
"confidence": 80,
"pattern": "first.last",
"hasMx": true,
"mxProvider": "Google Workspace",
"isDisposable": false,
"isFreeProvider": false,
"isCatchAllRisk": true,
"allCandidates": [
{ "email": "john.doe@stripe.com", "pattern": "first.last", "weight": 34 },
{ "email": "john@stripe.com", "pattern": "first", "weight": 14 },
{ "email": "jdoe@stripe.com", "pattern": "flast", "weight": 13 },
{ "email": "johndoe@stripe.com", "pattern": "firstlast", "weight": 9 }
],
"foundAt": "2026-07-04T00:00:00.000Z",
"reason": "ok"
}

You get the single best guess to act on, plus every alternative to fall back to.


Input reference

FieldTypeNotes
peoplearray (required)One object per person.
people[].firstNamestringFirst name.
people[].lastNamestringSurname.
people[].fullNamestringAlternative to first/last β€” split automatically ("Jane Q. Smith" β†’ jane / smith).
people[].domainstringCompany domain. Scheme, www., and paths are stripped (https://www.Acme.com/ β†’ acme.com).
people[].knownPatternstringOptional. Force a company's known convention (first.last, flast, first, …).
maxConcurrencyintegerParallel lookups, 1–25 (default 5).

Names are normalized (accents stripped, lowercased): "JosΓ©-Luis PΓ©rez" β†’ joseluis / perez.


Use cases

  • Build an outreach list from a list of names. You have "name + company" rows (event exports, speaker lists, hiring pages). Get the emails to actually run the campaign.
  • Enrich a CRM. Fill the missing email field on contacts where you already know the person and their employer's domain.
  • Sales prospecting at scale. Feed a target-account team roster and get a ranked best guess per person β€” the Hunter/Snov "email finder" job, keyless and pay-per-result.
  • Recruiting. Reach candidates or hiring managers when you have the name and company.
  • Partnerships / PR. Turn a "who to contact" shortlist into reachable inboxes.

Hunter.io / Snov.io alternative

Paid email finders lock the same core job β€” name + domain β†’ likely email β€” behind monthly seat pricing and credit tiers. This Actor does the pattern generation and MX verification with no account on a third-party service and no subscription: you pay per email found on Apify's usage-based billing, and you own the output dataset (JSON, CSV, Excel, API). Same job, keyless, and it slots straight into the rest of the suite below.


The suite: find β†’ enrich β†’ verify

This Actor is one link in a full lead-gen chain. Chain them for end-to-end lists:

  • Website Contact Finder β€” crawl any domain and pull out emails, phones and social links that are already published.
  • Company Enrichment β€” turn a bare domain into tech stack, MX provider and company signals.
  • πŸ”Ž Email Finder (this Actor) β€” name + domain β†’ the most-likely professional email.
  • Email Verifier β€” take any email (including this Actor's bestEmail) and get a full syntax + MX + disposable/role/free deliverability score before you send.

Typical pipeline: enrich the domain β†’ find the person's email β†’ verify it β†’ send.


FAQ

Does it guarantee the email is real? No β€” and no honest tool can without sending. It gives you the most probable address and proves the domain can receive mail. For per-mailbox risk, verify with our Email Verifier and, ultimately, a low-stakes first send.

Why don't you SMTP-check each mailbox? Port 25 is blocked/greylisted from cloud IPs (false negatives) and catch-all domains accept everything (false positives). MX + pattern ranking is the reliable, honest signal from the cloud.

What if the company has no MX record? We flag hasMx: false and cap confidence low β€” the domain can't receive mail, so no guess is deliverable. You still get the ranked candidates for reference.

Can it handle free emails like gmail.com? No β€” free consumer domains have no company convention to predict, so those rows return no guess (flagged isFreeProvider). This tool is for business domains.

What about accents and middle names? Accents are stripped and names lowercased. For fullName, the first token is the first name and the last token is the surname (middle names/initials are ignored).

How am I charged? Pay-per-event: you're charged only for each person who yields a deliverable best-guess email (a real address on a domain with MX). Rows with no MX or bad input aren't billed. The ACTOR_MAX_TOTAL_CHARGE_USD cap is respected.


Automate it

Run on a schedule or trigger it from your stack:

  • Schedule a run to enrich new CRM contacts nightly.
  • Apify API / SDK β€” POST a people array, read the dataset back as JSON/CSV.
  • Integrations β€” pipe results to Google Sheets, Airtable, Zapier, Make, or your CRM, then chain into the Email Verifier for a clean, send-ready list.

Point it at a list of names today and get back reachable inboxes.