Work Email Finder by Name and Domain | from $0.742/1k avatar

Work Email Finder by Name and Domain | from $0.742/1k

Pricing

from $0.74 / 1,000 email-founds

Go to Apify Store
Work Email Finder by Name and Domain | from $0.742/1k

Work Email Finder by Name and Domain | from $0.742/1k

Email finder for work addresses: give a person's name and company domain, get their work email with a validity status and a 0-1 confidence score. Returns addresses on file, not pattern guesses. Pay per email found, misses are free. Does not verify lists you already have. Free plan: 100 per run.

Pricing

from $0.74 / 1,000 email-founds

Rating

0.0

(0)

Developer

Open Enrich

Open Enrich

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

2 days ago

Last modified

Categories

Share

Email finder for work addresses: give a person's name and company domain, get their work email back with a status field and a 0-1 confidence score. It returns addresses the data holds for that person on your domain, it does not invent pattern guesses. No login, no cookies, no start fee. You pay only for each email found.

No login | Name + domain in, work email out | Status + confidence per row | Up to 1,000 people per run | Misses are free | JSON/CSV export

Not an email verifier. This actor finds one work email per person. It does not check lists of emails you already have. For that, run your own deliverability check before a campaign.

See all actors by b2bdata


💳 Pricing and plans

One event, email-found, charged once per row delivered. Prices per 1,000 emails found (draft, set on the Pricing tab):

EventWhen it is chargedFree planGold plan
email-foundA work email on the domain you gave is found and the row is delivered$0.963$0.742

Bronze, Silver, Platinum and Diamond prices are on the Pricing tab. Higher Apify plans only lower the price. Empty runs, failed lookups, unreadable input lines and notices are free, and there is no start fee.

Plan-credit math. The free plan's $5 monthly credit covers about 5,190 emails at the Free price.

Success-only billing

You are charged only for a row you receive. A person who is not found, a lookup that fails, or an address that is not on the domain you gave is listed in MISSES with a reason and costs nothing. Use maxChargeUsd (advanced input) to stop a run at a spend you choose.

The free plan

Free Apify accounts get up to 100 inputs looked up per run, and as many runs as their Apify credit covers. Nothing is stored on our side. When a list is longer, the first 100 are looked up and one free notice row (reason: "free_plan_limit") says how many inputs were not looked up; they are not charged. Run again with the rest, or use a paid Apify plan for no per-run limit.

Keep a run small while you test

Use limit to cap the number of people looked up. The default is 25, the maximum is 1,000, 0 means all lines up to 1,000. Try 1 to 3 people first, read the row, then scale up.


⚖️ This vs. the alternatives

Public Apify Store prices, read on 2026-10-13. Re-check on each linked page before you decide; prices change.

This actorsnipercoderboviclearpathcrustapi
Price per 1,000, Free plan$0.963 per email found$1.00 per result$1.50 per result$8.00 per pattern tested$5.00 per verified email
Price per 1,000, Gold plan$0.742$0.60$1.455$8.00$5.00
Start fee per runnone$0.00005none$0.005none
Status field on every rowyes, often unknown (no mailbox check)not statednot statednot statednot stated
Misses chargednevernot statednot statedpattern tests are chargednot stated

We compare on price and the fields listed above only. Check that the columns you need are in the row before you compare cost. Units differ: one pattern tested is not one email found.


⚡ Why this email finder by name and domain?

  • Evidence, not guesses. Each row comes from addresses the data holds for that person. The actor keeps only an address on your domain and tells you its status.
  • Status and confidence on every row. emailStatus is valid, catch_all, invalid or unknown; unknown is common, because a status is only set when the data holds a check for that address. confidence is a fixed rule you can read below, not a black box.
  • You see who you matched. Title, headline, location and profile link come with the email when available, plus matchMethod.
  • Accepts messy input. First Last @ domain, First Last, domain, JSON objects, domains with https:// or www..
  • Success-only, no start fee. Misses, invalid lines and notices are free.

🎯 Use cases: find business email from name

  • Outbound prospecting. You have names from a conference list and company domains. Add the work email column.
  • CRM gap fill. Contacts with a name and company but no email. Run the list and write the email back.
  • Recruiting. Reach a candidate at their current employer's domain.
  • Agent workflows. An AI agent holds a name and a company and needs one address to continue. One call, one row.
  • Pair with a phone lookup. Take the email into email-phone-finder for direct dials.

🔗 Pipeline guide: from a name to a contact

[1] Name + company domain (your list, a CRM export, a conference list)
|
v
[2] email-finder -> work email + status + confidence
|
v
[3] your own deliverability check (before any campaign)
|
v
[4] email-phone-finder -> phone numbers, title, LinkedIn URL

If you only know the company, start with ceo-founder-email-finder-by-domain or executive-contact-finder-by-domain to get the names.


🚀 Quick start: find work email by name

1. One person

{ "items": ["Patrick Collison @ stripe.com"], "limit": 1 }

2. A list in mixed formats

{
"items": [
"Patrick Collison @ stripe.com",
"Satya Nadella, https://www.microsoft.com",
{ "first": "Sam", "last": "Altman", "domain": "openai.com" },
{ "fullName": "Jensen Huang", "domain": "nvidia.com" }
],
"limit": 0
}

3. A traced batch with a spend cap and the audit view

{
"items": ["Patrick Collison @ stripe.com", "Sam Altman @ openai.com"],
"includeAudit": true,
"maxChargeUsd": 0.5,
"sourceTag": "crm-export-2026-10"
}

⚙️ Inputs

KeyTypeDefaultWhat it does
itemsarrayrequiredOne person per entry. Strings First Last @ domain or First Last, domain, or objects {first,last,domain} / {fullName,domain}. First and last name are both required. Duplicates are collapsed.
limitinteger25Maximum people looked up, which also caps the emails charged. 0 = all lines. Maximum 1,000; a higher number stops the run with a message before any charge.
includeAuditbooleanfalseAdds an audit object to each row.
maxChargeUsdnumbernoneAdvanced. Stops new lookups once the run has charged this much.
sourceTagstringnoneAdvanced. Up to 64 characters, copied into each row and RUN_SUMMARY.

Any other field stops the run before a lookup with remove unsupported fields: .... Nothing is charged.


📤 Output

One row per person whose email was found on the domain you gave. Rows keep input order. Empty values are left out of the row.

KeyTypeMeaning, and when it is missing
fullName, firstName, lastNamestringAs matched, otherwise as you gave them
emailstringWork email on your domain, lower case
emailStatusstringvalid, catch_all, invalid or unknown. unknown is common: the address is not mailbox-checked. Rows with invalid are not delivered
confidencenumber0-1, see the rule below
matchMethodstringHow the person was matched. Missing when not reported
companyDomainstringThe domain you gave, cleaned
slugstringProfessional profile slug, when matched
profileUrlstringProfessional profile link. Often missing; the address match does not always return it
headline, jobTitlestringCurrent, when on file
location, countrystringFree-text location and ISO-2 country, when on file
connectionsintegerConnection count, when on file
updatedAtstringWhen the person record was last updated, when on file
inputQueryobjectThe cleaned input behind this row
scrapedAtstringISO time the row was produced
sourceTagstringYour tag, only if you set one
auditobjectOnly with includeAudit
{
"fullName": "Patrick Collison",
"firstName": "Patrick",
"lastName": "Collison",
"email": "patrick.collison@stripe.com",
"emailStatus": "unknown",
"confidence": 0.5,
"matchMethod": "work-email",
"companyDomain": "stripe.com",
"slug": "patrickcollison",
"headline": "Stripe CEO",
"jobTitle": "CEO",
"location": "San Francisco Bay Area",
"country": "US",
"connections": 500,
"updatedAt": "2026-10-13T14:15:13.902Z",
"inputQuery": { "fullName": "Patrick Collison", "domain": "stripe.com" },
"sourceTag": "zz1",
"scrapedAt": "2026-10-13T14:15:14.341Z"
}

A real row from a test run. The status was unknown, so the confidence is the base 0.5. Which fields appear depends on what is on file for the person.

Confidence rule

Base by status: valid 0.95, catch_all 0.6, unknown 0.5. Add 0.05 only when the response carries a profile link (profileUrl); a row without it stays at the base. Maximum 1. A catch_all domain accepts any address, so even a good status there is a weaker signal.

Other records in the run

  • MISSES (key-value store): [{input, reason}] for every line that produced no row: not_found, no_address_on_domain, invalid_input, or Upstream HTTP <code>.
  • errors-email-finder (key-value store): the lookups that failed for a technical reason, so you can re-run only those.
  • RUN_SUMMARY: counts, stop reason, your sourceTag.
  • Notice rows (type: "notice", reason: "charge_limit_reached" or "free_plan_limit") appear when your spend cap is reached or a free-plan list is longer than 100. A capped run delivers the rows it already charged for, then one notice row. Notices are never charged.

What is NOT returned

  • ❌ Personal email addresses
  • ❌ Phone numbers (use email-phone-finder)
  • ❌ Several alternative addresses per person
  • ❌ A live mailbox check of the address

🛡️ Reliable results

Our data promise. We work to keep every contact current, and we stand behind it. If a record is outdated, an email bounces or a person has moved on, open the Issues tab with your run link. We review every report and sort it out with you, case by case.

  • Misses are free and visible. Every line without a row is in MISSES with a reason and is never charged.
  • Only addresses on your domain. An address on another domain is never returned as the result.
  • Duplicates are collapsed. The same person written two ways is looked up once and charged once.
  • Each row is saved as it is delivered. A run that stops keeps what it already produced.
  • Bounded pace. Lookups run at 60 per minute, so a list of 1,000 people needs roughly 17 minutes.
  • Typos fail early. An unsupported input field or a limit above 1,000 stops the run before any charge.
  • Check before you send. emailStatus and confidence are signals, not a guarantee. Run the emails through your own deliverability check before a campaign.

🤖 For AI agents (MCP)

This actor runs through the Apify MCP server. Prompt to copy:

"Use b2bdata/email-finder with items=["Patrick Collison @ stripe.com"] and limit=1. Return email, emailStatus and confidence."

When to use it. You hold a person's full name and a company domain and need one work email. When not to. You hold only a company (use ceo-founder-email-finder-by-domain), or only an email (use email-phone-finder). Input contract. items array of "First Last @ domain" strings or {first,last,domain} objects; limit 1-1,000 (0 = all). Output contract. One row per found person with email, emailStatus, confidence. Output is deterministic and schema-stable, rows keep input order. Not-found people are absent from the dataset and listed in MISSES. Smoke test. limit: 1 on a well-known person returns one row. Error cases. An empty items list is rejected by the input form before the run starts. No valid items means no line had both a first and last name plus a domain. remove unsupported fields means a misspelled input key and the run ends FAILED with nothing charged.


🔌 Integrations: send results anywhere

  1. API. Fetch rows from the run's default dataset: GET /v2/datasets/{datasetId}/items?format=csv.
  2. Webhook on run success to push rows to your own endpoint.
  3. n8n, Make, Zapier. Use the native Apify nodes: run the actor, then read the dataset.
  4. Google Sheets, Airtable, HubSpot, Salesforce, Clay. Map email to the email field and emailStatus to a status column.

🕐 Schedule examples

  • Weekly CRM gap fill. A Monday schedule with a saved task that points at your latest export.
  • New-lead enrichment. A webhook from your form tool starts a run with one person.

  • b2bdata/ceo-founder-email-finder-by-domain: you know the company, not the person. Open
  • b2bdata/executive-contact-finder-by-domain: get the decision makers at a domain first. Open
  • b2bdata/email-phone-finder: you have the email and need a phone. Open
  • b2bdata/linkedin-lead-generation: build a lead list by job title and country. Open

See all actors by b2bdata


❓ FAQ

Data & coverage

How do I find someone's work email by name and company domain? Add a line First Last @ domain and run. Each found person becomes one row with the email, its status and a confidence score.

Can I use this as an email finder API for AI agents? Yes. Call it through the Apify API or MCP with limit: 1. The output is stable and one row per person.

Do I need a LinkedIn account or cookies? No. It is a work email finder without LinkedIn login, cookies or an account to ban.

Is this an email finder with confidence score per row? Yes. The confidence score follows the fixed rule in the Output section: status first, plus a small bonus when the person was matched to a profile. It is a signal for sorting, not a promise.

Can I find professional email from first name, last name and domain only? Yes. Both names and the domain are required. A single name or a bare email address is rejected as an invalid line and is free.

Pricing

What do I pay when nobody is found? Nothing. There is no start fee, and misses, invalid lines and notices are free.


🛟 Support

Use the Issues tab on this actor's Apify page for bugs, questions and feature requests. We answer within 48 hours on working days. Please include the run ID and the input you used.


Use for B2B prospecting only. Comply with all applicable laws including GDPR, CCPA, and CAN-SPAM.

This actor returns work email addresses and professional profile facts from a database. It does not log in, use cookies, access private pages or bypass authentication. Published on Apify by b2bdata as proprietary software. Not affiliated with, endorsed by, or sponsored by any company or person named in the examples above.