Email Finder API
Pricing
from $14.00 / 1,000 work e-mail founds
Email Finder API
Find work e-mail addresses from a person's name and their company or domain: the address, its layout, a confidence level, the evidence behind it and the mail provider. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools or AI workflows.
Pricing
from $14.00 / 1,000 work e-mail founds
Rating
0.0
(0)
Developer
Matvey
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
What is Email Finder API?
Email Finder API turns a person's name and their company into that person's work e-mail address. Give it Jane Doe, acme.com โ or Jane Doe, Acme Consulting, because it resolves company names to domains too โ and it returns jane.doe@acme.com together with the reason it believes that address, the alternatives worth trying if it bounces, and the state of the company's mail domain. No login, no API key, no official API needed.
The difference from an ordinary email finder is what happens before the address is written. Most tools apply the same guessed layout to every company. This one first reads the company's own website and looks at the addresses it already publishes. A team page that says michael.hart@acme.com has told you the rule for everyone else at Acme, and the Actor says so in the output: the layout, the addresses it was read from, and how many there were. When a company publishes nothing personal, you are told that as well, and the address is marked as a guess rather than dressed up as a find.
It is a pure HTTP Actor โ no browser, no proxy, no third-party paid API โ so it is fast and cheap to run. A three-person lookup finishes in about five seconds.
What data does Email Finder API return?
One row per person, one row per company, and one free row for anyone who could not be placed.
| Field | What it holds | Example |
|---|---|---|
fullName | The person as you wrote them | Jason Fried |
email | The most likely work address | jason@basecamp.com |
confidence | confirmed, high, medium, low or unusable | confirmed |
emailPattern | The layout used: first.last, first, flast, firstlast, first_last, firstl, f.last, last.first, lastfirst, first-last, last, fl | first |
emailPatternSource | site โ read off the company's own pages; default โ the company published nothing to learn from | site |
foundOnSite | True when the address was not constructed at all but found published | true |
alternatives | The next most likely addresses, each with its layout | [{"email":"jason.fried@basecamp.com","pattern":"first.last"}] |
patternEvidence | The published addresses the layout was read from | ["jason@basecamp.com"] |
patternEvidenceCount | How many of them there were | 1 |
domain | The company's mail domain | basecamp.com |
domainSource | input, directory or guess โ how the domain was arrived at | input |
companyName | Company name from the site's own structured data | Basecamp |
emailStatus | deliverable, risky, undeliverable or unknown | deliverable |
emailProvider | Who runs the company's mail | google |
emailMxHost | Highest-priority mail server | aspmx.l.google.com |
emailIsRole / emailIsFree / emailIsDisposable | Department address, consumer mailbox, throwaway domain | false |
mailboxVerified | Always false, and here so nothing reads as more than it is โ see the FAQ | false |
summary | One sentence saying where the address came from | jason@basecamp.com is published on basecamp.com itself. |
Company rows carry the same layout fields plus emailsFoundOnSite (every public address on that domain), pagesScanned and siteError.
How much does it cost to find e-mail addresses?
Pay-per-event, and you only pay for answers.
| Event | Price | Charged when |
|---|---|---|
| Work e-mail found | $0.02 | One usable address is returned for one person |
| Company address layout read from its site | $0.006 | One company's layout was read off addresses it publishes |
That is $20 per 1,000 addresses, plus about $6 per 1,000 companies if you leave company rows on. A person whose company could not be resolved, a name with no usable letters in it, a domain that takes no mail, and every error row are free โ the Actor never bills you for a row it could not answer.
Apify's free plan includes $5 of platform usage a month, which is around 240 addresses before you pay anything. Bronze, Silver and Gold accounts pay 10%, 20% and 30% less per event.
Because the Actor sends plain HTTP requests and runs no browser, its compute cost is negligible โ you are paying for the answer, not for a proxy bill.
How to find someone's work e-mail address
- Open the Actor and paste your people into ๐ค People to find, one per line:
Full Name, company. - The company half can be a domain (
stripe.com), a full URL (https://stripe.com/about) or the company's name (Clifford Chance). Mixed lists are fine. - Press Start. A run of a few people takes seconds; a thousand-person list takes a few minutes.
- Read the E-mails table. Sort by
confidenceand work theconfirmedandhighrows first. - Export to CSV, JSON or Excel, or pull the same rows from the API.

โฌ๏ธ Input
{"people": ["Jason Fried, basecamp.com","Patrick Collison, stripe.com","Maria Bennett, cliffordchance.com"],"candidatesPerPerson": 3,"checkMx": true,"includeCompanyRows": true,"maxPagesPerCompany": 4}
Lists that already have columns
If your data is already split into fields โ from a CRM export, a spreadsheet or another Actor โ use peopleList instead of the plain lines:
{"peopleList": [{ "firstName": "Jane", "lastName": "Doe", "company": "acme.com" },{ "fullName": "Michael Hart", "domain": "example.co.uk" }]}
Chaining from another Actor
inputDatasetId reads the people straight out of an existing Apify dataset, and the four *Field inputs say which columns hold the name and the company. Point it at the output of US New Business Leads and you have newly registered companies enriched with addresses in one step.
โฌ๏ธ Output

A person row
{"type": "person","fullName": "Maria Bennett","firstName": "maria","lastName": "bennett","companyInput": "cliffordchance.com","companyName": "Clifford Chance","domain": "cliffordchance.com","domainSource": "input","email": "maria.bennett@cliffordchance.com","emailPattern": "first.last","emailPatternSource": "site","confidence": "high","foundOnSite": false,"alternatives": [{ "email": "maria@cliffordchance.com", "pattern": "first" },{ "email": "mbennett@cliffordchance.com", "pattern": "flast" }],"patternEvidence": ["richard.franco@cliffordchance.com", "maria.arnone@cliffordchance.com"],"patternEvidenceCount": 22,"emailStatus": "deliverable","emailProvider": "mimecast","emailMxHost": "eu-smtp-inbound-2.mimecast.com","emailIsRole": false,"emailIsFree": false,"emailIsDisposable": false,"mailboxVerified": false,"summary": "maria.bennett@cliffordchance.com follows the first.last layout confirmed on cliffordchance.com; the domain accepts mail."}
A company row
{"type": "company","domain": "basecamp.com","companyName": "Basecamp","emailPattern": "first","emailPatternSource": "site","patternEvidence": ["jason@basecamp.com"],"patternEvidenceCount": 1,"emailsFoundOnSite": ["jason@basecamp.com"],"pagesScanned": 4,"summary": "basecamp.com writes its e-mail addresses as first, seen in 1 address(es) published on its own site."}
How the address layout is worked out
The Actor reads the company's home page and up to three more โ contact, about, team, legal โ and collects every address on the company's own domain. Then it asks of each one: is there a human name in this?
That question is the whole method. jane.diaz@ and complaints-in@ have the identical shape, and a tool that cannot tell them apart will decide that the company writes firstname-lastname on the strength of a complaints inbox. So each half of an address is checked against a list of common given names: an address with a recognised first name in it identifies the layout, an address made of department words is thrown out, and an address where nothing is recognisable is ignored rather than counted as weak evidence. The votes are then tallied, and a layout that two addresses agree on outranks one that a single address suggests.
What comes out the other side is the confidence column:
confirmedโ the address is not constructed. It is published on the company's own website.highโ two or more of the company's own addresses agree on the layout.mediumโ exactly one address established the layout.lowโ the company publishes nothing personal, so the most common layout across companies (first.last) was used. This is a guess and is labelled as one.unusableโ the domain exists but accepts no mail, so no address at it will arrive.
How often a layout is actually found. Measured on 34 company websites on 12 September 2026, reading four pages each: 8 published a personal address the layout could be read from. The split matters more than the total โ 6 of 9 law firms did, and only 2 of 25 technology companies. Professional services, agencies, clinics, brokerages and firms with a staff directory are where this works best, and those are also what most B2B lead lists are made of. Large consumer-facing tech companies publish almost nothing, and for them you will mostly get low.
Use cases for work e-mail addresses
Sales and lead generation
You have a list of decision-makers with names and companies and no addresses. Run it through and sort by confidence: the confirmed and high rows go into the sequence today, the low rows go in with a soft first touch or not at all.
CRM repair
Contacts imported years ago carry a name and an employer and an empty e-mail column. Point inputDatasetId at the export and fill the gaps, then keep emailProvider to know which contacts sit behind Microsoft 365 and which behind Google.
Recruiting
A shortlist of candidates from a conference programme, a paper's author list or a company's team page is names plus employers. This turns it into a way to write to them.
AI agents and automations
The Actor is small, literal and flat: one call in, one row per person out, every field a scalar. An agent can call it through the Apify MCP server or the API and act on confidence without reading any documentation.
Research and journalism
Finding the right person at a firm to put a question to, with the evidence for why that address is the right shape, and the mail provider that will handle it.
Integrations
- API โ start a run and read the dataset with the Apify API:
POST https://api.apify.com/v2/acts/lergassy~email-finder-api/runs?token=<TOKEN>. - Python and JavaScript clients:
from apify_client import ApifyClientclient = ApifyClient("<TOKEN>")run = client.actor("lergassy/email-finder-api").call(run_input={"people": ["Jane Doe, acme.com", "Michael Hart, Acme Consulting"]})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row["type"] == "person":print(row["email"], row["confidence"])
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<TOKEN>' });const run = await client.actor('lergassy/email-finder-api').call({people: ['Jane Doe, acme.com'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => i.type === 'person'));
- n8n, Make, Zapier, Google Sheets โ through the Apify integrations, so the addresses land in the sheet or the CRM without any code.
- MCP server โ the Actor is callable as a tool by Claude, ChatGPT and any other MCP client through Apify's MCP server.
- Webhooks โ fire a webhook on run completion to push the finished rows wherever they are needed.
Error items
Rows with "type": "error" are never charged. They carry a plain-language error field:
- Could not work out a website for "โฆ" โ the company name matched nothing and no obvious domain answered. Pass the domain instead.
- No company given for this person โ the line had a name and nothing after the comma.
- The name could not be turned into an address โ nothing usable in the name field.
A company row may also carry siteError (website_unreachable or website_blocked). The address is still produced from the default layout in that case, and marked low.
โ FAQ
Do you verify that the mailbox exists?
No, and the output says so in the mailboxVerified field, which is always false. Checking whether a specific mailbox exists needs an SMTP conversation on port 25, and outbound port 25 is blocked from Apify's cloud โ no Actor running there can do it, whatever its listing claims. What you get instead is domain-level truth (does the domain exist, does it accept mail, who runs it) and something better than an SMTP ping where it is available: evidence from the company's own website that this is the shape its addresses take.
How accurate is it?
Where confidence is confirmed, the address is published by the company itself โ there is nothing to be wrong about. Where it is high or medium, the layout came from the company's own addresses and the remaining risk is the spelling of the person's name, not the format. Where it is low, treat it as a guess: first.last is the most common corporate layout, but the Actor found no proof for this company and does not pretend otherwise.
What if the first address bounces?
Use alternatives. It holds the next most likely addresses for the same person, each labelled with its layout, so a bounce costs you a retry rather than a dead lead.
Does it work with company names, not just domains?
Yes. A company name is resolved through a public company index first, and if that finds nothing, the obvious spelling of the name is tested against DNS. domainSource tells you which route was taken โ input, directory or guess โ so you can decide how much to trust a row whose domain was inferred.
Does it handle accents and compound names?
Accents are stripped the way mail systems strip them (Josรฉ becomes jose). A compound given name is offered both ways: jeanpierre.dubois@ is the primary and jean-pierre.dubois@ sits directly behind it in alternatives. Surname particles stay attached โ van der Berg becomes vanderberg.
Is it legal to look up business e-mail addresses?
The Actor reads only pages that companies publish openly and works out an address format from them; it does not access any private system. Business contact data is treated differently from personal data in most jurisdictions, but sending unsolicited mail is regulated separately โ GDPR, CAN-SPAM, CASL and the rest apply to what you do with an address, not to knowing it. Check your obligations for your market, and consult a lawyer if a campaign is at stake.
Can I use Email Finder API with the Apify API?
Yes โ start runs, pass input and read results through the standard Apify API and the Python or JavaScript clients, as shown above.
Can I use it through an MCP server?
Yes. It is exposed as a tool through Apify's MCP server, so an AI agent can call it directly. The input schema is small and the output is flat on purpose.
Can I integrate it with other apps?
Yes โ n8n, Make, Zapier, Google Sheets, Slack and webhooks are all available through Apify's integrations.
Does one person always produce one row?
Yes. One row per person, plus one row per company when company rows are on, plus a free error row for anyone who could not be placed.
Do I need a proxy?
No. This Actor reads ordinary business websites with plain HTTP requests, and the proxy input is off by default. Turn it on only if you are reading thousands of sites in one run and some begin refusing.
Your feedback
Found a company whose layout it read wrongly, or a name shape it does not handle? Open an Issue on the Actor page with the company and the expected address โ those reports are what the given-name list and the layout rules grow from. Reviews are read and answered.
You might also like
| Actor | What it does |
|---|---|
| Website Contacts API | Every public e-mail, phone, WhatsApp and social profile for a list of websites |
| Email Verifier & Phone Number Validator | Check addresses and numbers in bulk: domain deliverability, role and throwaway flags, numbering-plan validation |
| US New Business Leads | Newly registered US companies with addresses, industry codes and a lead score |