Work Email Finder: Name + Domain → Verified Email
Pricing
from $12.60 / 1,000 found work emails
Work Email Finder: Name + Domain → Verified Email
Find a person's work email from first name, last name and company domain. Generates common corporate patterns, resolves MX, and checks mailboxes via a live HTTPS verification API (Apify blocks port 25, so no direct SMTP on platform). Catch-all flagged. Pay only on finds.
Pricing
from $12.60 / 1,000 found work emails
Rating
0.0
(0)
Developer
Clean Row Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
24 minutes ago
Last modified
Categories
Share
Work Email Finder: name + domain → verified work email
ClearPath-style email finding with no third-party contact database. Give a first name, last name and company domain; the Actor generates common corporate patterns (first.last, flast, firstlast, …), resolves MX records, detects catch-all domains, and verifies mailbox existence with a live check.
Built to chain after Hiring Signals API and Hiring Intent Contacts: once you know the company domain, find the right person.
Price: $18 per 1,000 found emails ($0.018 each). Misses are free. We do not race to sub-$1/1k — verification quality matters more than a race to the bottom.
How verification works (honesty)
Apify platform runners block outbound TCP port 25, so this Actor cannot open a raw SMTP conversation to the recipient MX from inside Apify. Claiming “SMTP verified” on platform without a relay would be a lie.
What we do instead: when ABSTRACT_API_KEY is set (default path), each candidate is checked through Abstract Email Reputation over HTTPS. Abstract performs live SMTP + MX checks on their infrastructure and returns deliverability. We only mark verification=valid when the API says:
status=deliverableis_smtp_valid=trueis_catchallis not true
Catch-all domains are returned as verification=catch_all (never valid) under the default policy.
Direct SMTP RCPT (verifyProvider=smtp) still exists for off-platform / self-hosted runners where port 25 is open.
verification | Meaning |
|---|---|
valid | Live check accepted this mailbox; domain is not catch-all |
catch_all | Domain accepts arbitrary locals — pattern is a guess |
invalid | Live check rejected the candidates we tried |
unknown | Could not complete a live check (quota, timeout, no key, etc.) |
Free-tier limits (Abstract)
Clean Row Data’s bundled free Abstract key is 100 checks / month (shared). Each catch-all probe + each pattern attempt costs one check. The Store example input (Dylan Field / figma.com) is limited to one check per run. For Store volume beyond that, bring your own Abstract key (abstractApiKey input or Actor env) or ask us to enable a paid plan / self-hosted SMTP relay.
Bring your own free Abstract key (abstractApiKey) for unlimited checks on your side. Without your own key, runs on a free Apify plan use the shared key and are limited to 9 mailbox checks per run (about 3 finds); misses and unchecked people are never charged. Get a free key at https://www.abstractapi.com/api/email-verification-validation-api (Email Reputation API, no card) and paste it into the abstractApiKey input.
Quick start
{"firstName": "Dylan","lastName": "Field","domain": "figma.com","catchAllPolicy": "flag","verifyProvider": "auto"}
Batch:
{"people": [{"firstName": "Dylan", "lastName": "Field", "domain": "figma.com"},{"firstName": "Guillermo", "lastName": "Rauch", "domain": "vercel.com"}],"catchAllPolicy": "flag","onlyFinds": true}
Or paste CSV (first,last,domain per line) into the csv field.
Output
| Field | Meaning |
|---|---|
email | Best address (null on miss when onlyFinds is off) |
alternates | Other candidates tried / plausible |
mx_host | Primary MX |
is_catch_all | Domain accepts arbitrary local parts |
verification | valid / invalid / unknown / catch_all |
confidence | 0–1 |
pattern | e.g. first.last, flast, first |
verify_source | https_abstract or smtp |
detail | Reason code (e.g. https_abstract_deliverable) |
Catch-all policy
Many corporate domains accept any local part. Claiming those as "verified" is dishonest.
| Policy | Behavior |
|---|---|
flag (default) | Return best pattern with verification=catch_all, never valid |
skip | Treat as a miss (free, no row by default) |
accept | Return first pattern as catch_all with low confidence |
Integrations (n8n, Make, Zapier, Clay, AI agents)
Every integration calls the same Apify API, so the price is the same everywhere (pay per found email; misses are free).
- Any HTTP client / Clay HTTP API column:
POST https://api.apify.com/v2/acts/cleanrowdata~work-email-finder/run-sync-get-dataset-itemswith headerAuthorization: Bearer <APIFY_TOKEN>and a JSON body like:
The response is the dataset rows. In Clay, call it from an HTTP API column and use it as one step of a waterfall.{"people": [{"firstName": "{{first}}", "lastName": "{{last}}", "domain": "{{domain}}"}], "onlyFinds": true} - n8n: use the Apify node (verified community node) to run Actor
cleanrowdata/work-email-finder, or an HTTP Request node with the call above. - Make: Apify Run an Actor module, then Get Dataset Items. Zapier: Apify Run Actor action, then Fetch dataset items.
- AI agents (Claude, Cursor, ChatGPT and others) via the Apify MCP server: connect
https://mcp.apify.com?tools=cleanrowdata/work-email-finderand ask, e.g. "Find the work email for Dylan Field at figma.com".
Pricing (pay per event)
| Event | Price | When |
|---|---|---|
email_found | $0.018 | Row with a find (valid or catch_all under flag/accept) |
| Misses | $0 | Not pushed when onlyFinds is on |
apify-actor-start | Apify default | Run start |
What this is not
- Not a LinkedIn scraper
- Not a phone finder
- Not a bulk B2B database dump
- Does not buy or resell third-party contact data
- Does not claim direct SMTP from Apify runners (port 25 is blocked)
If this saved you time, a quick review on the Store helps a lot, and feature requests go in the Issues tab; we usually ship them within days.
Compliance
Mailbox verification uses Abstract’s live checks (or direct SMTP when you run where :25 is open). Some networks and servers always return 250 (catch-all) — we flag those. Results include verification, confidence, and verify_source so you can filter. You are responsible for lawful use of any email you send to.