Email List Cleaner & Validator (Dataset, CSV or Sheet)
Pricing
from $1.40 / 1,000 addresses
Email List Cleaner & Validator (Dataset, CSV or Sheet)
Cleans an email list from an Apify dataset, a CSV/Excel file or Google Sheet, keeping every original column and adding a verdict per row: format, whether the domain accepts mail, throwaway domains, shared inboxes, typos and duplicates. Does NOT confirm individual mailboxes. Charged per address.
Pricing
from $1.40 / 1,000 addresses
Rating
0.0
(0)
Developer
Adam Pearce
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
You scraped or exported a list of leads. Some of those addresses are dead, some are throwaway signups, some are info@ inboxes that will get you marked as spam, and some are simple typos like gmial.com. Send to them and your sender reputation takes the hit, which is what stops your good emails landing.
This Actor checks the list you already have and hands it straight back with a verdict on every row.
The one thing to know before you start
This does not confirm that an individual mailbox exists. That check needs a direct SMTP conversation with the mail server, and Apify's network blocks outbound mail ports, which was tested on their infrastructure before this Actor was built. So it is not available here, and pretending otherwise would be the one genuinely dishonest thing this tool could do.
Every row it returns carries mailboxChecked: false so that limit travels with your data, not just this page.
What it does catch, which is most of what wrecks a campaign:
| Check | Catches |
|---|---|
| Address format | Broken and malformed addresses that bounce instantly |
| Mail server (MX/A records) | Domains that cannot receive mail from anyone, the biggest single source of hard bounces |
| Throwaway domains | mailinator.com, guerrillamail.com and around 120 others: people who signed up not wanting contact |
| Shared inboxes | info@, sales@, support@, which bounce and draw spam complaints far more on cold lists |
| Likely typos | gmial.com, hotmial.com, yahooo.com, with the correction suggested so you can fix rather than bin the lead |
| Duplicates | The same address again, ignoring case and stray spaces |
| Free providers | Flags gmail/yahoo/outlook, useful to know on a B2B list |
If you need mailbox-level confirmation as well, run this first to strip the obvious junk cheaply, then send the much smaller survivor list to a paid verification service. That is the sensible order anyway, because you pay those services per address.
What makes it different from the other verifiers
Every other email checker on the Store takes one input: a typed-in list of addresses. So you pull the email column out of your spreadsheet, paste it in, get back a bare list of addresses and verdicts, and then have to match it all back to your names, companies and phone numbers yourself.
This one takes your actual list: an Apify dataset, a CSV or Excel file, a Google Sheet, or pasted JSON. Every original column comes back untouched, with the verdict columns added alongside. Nothing to re-join.
Example
In (your scraper's output, or a sheet):
| name | company | |
|---|---|---|
| Ana Silva | Silva Ltd | ana.silva@apify.com |
| Ben Okafor | Okafor & Co | ben@gmial.com |
| Cara Lind | Lind Studio | info@lindstudio.co.uk |
| Dan Reeves | Reeves Ltd | dan@mailinator.com |
| Frank Ortiz | Reeves Ltd | frank@thisdomaindoesnotexist12345.com |
Out (real output from the default example):
| name | company | emailStatus | emailReason | didYouMean | |
|---|---|---|---|---|---|
| Ana Silva | Silva Ltd | ana.silva@apify.com | valid | ok | |
| Ben Okafor | Okafor & Co | ben@gmial.com | risky | possible_typo | gmail.com |
| Cara Lind | Lind Studio | info@lindstudio.co.uk | risky | role_address | |
| Dan Reeves | Reeves Ltd | dan@mailinator.com | invalid | disposable_domain | |
| Frank Ortiz | Reeves Ltd | frank@thisdomaindoesnotexist12345.com | invalid | no_mail_server |
Your name and company columns are still there, still lined up.
The four verdicts
- valid: passed every check that ran. Not a delivery guarantee, see above.
- risky: send if you want, but know why. Shared inbox, likely typo, or a domain whose lookup did not complete.
- invalid: do not send. Broken format, a domain that accepts no mail, or a throwaway provider.
- duplicate: you already have this address earlier in the list.
Alongside the verdict you get the individual flags (hasMailServer, isDisposable, isRoleAddress, isFreeProvider, didYouMean, syntaxValid) and emailAllReasons with everything that applied, so you can set your own bar rather than taking ours.
Pricing
| Event | Price |
|---|---|
| Address checked | $0.002 |
| File export (CSV or Excel) | $0.01 per file |
| Webhook delivery | $0.02, only on a confirmed 2xx |
| Actor start | $0.00005 per run |
Bronze 10% off, Silver 20%, Gold 30%, applied automatically.
In practice: 1,000 addresses is $2. A list of 10,000 is $20. A nightly clean of 200 new leads is about $12 a month.
Everything that gets a verdict is charged, including rows you filter out of the output with Rows to keep and including duplicates, because each one still had to be checked to know that. Domain lookups are cached per domain, so a 5,000-row list covering 300 domains does 300 lookups, not 5,000, which is why this is fast and cheap to run.
Tips
- Leave "Email field" empty unless it guesses wrong. It looks for a sensibly named column first, then falls back to whichever column actually contains addresses.
- Use "Rows to keep" set to problems for a review list of just the junk, or valid to get a clean send list directly.
didYouMeanis worth acting on. A typo is a real lead you would otherwise throw away. Note that some typo domains,hotmial.comfor one, really do run mail servers and will happily swallow your email, which is precisely why the flag matters.- A domain lookup that times out comes back risky, never invalid. A slow DNS server is not evidence of a bad address.
- Chain it: Dataset Cleaner & Exporter to tidy the raw scrape, this to check the addresses, then Dataset Filter & Transform to keep only
emailStatus = valid.
FAQ
Does a "valid" verdict mean the email will definitely arrive? No, and nothing that says otherwise is being straight with you. It means the address is properly formed, the domain can receive mail, and it is not a throwaway, a shared inbox or an obvious typo. Whether that specific person still works there is something no tool can tell you without sending.
Why can't you check the mailbox like the other tools? Apify blocks outbound connections on the mail ports. That was tested directly on their servers, on ports 25 and 587, against Gmail, Outlook and Google Workspace, before this Actor was designed. Tools that do offer the check are calling a paid third-party service behind the scenes, which is usually why they cost far more per address.
Will it change my data?
No. Your original columns are returned exactly as they came in. The normalized lowercase address is added as a separate emailNormalized column rather than overwriting yours.
How current is the throwaway-domain list? It covers roughly 120 of the common providers and is bundled with the Actor rather than fetched at run time, so a run can never fail because an external list was down. It is not exhaustive, and new throwaway domains appear constantly. If you hit one it misses, say so on the Issues tab and it will get added.
Can I use it on a list I bought? You can, and the domain and format checks will strip a lot of it. Be aware that bought lists fail mostly at the mailbox level, which is the one thing this cannot check, so pair it with a paid service for that step.
If this saved you a bounced campaign or a damaged sender reputation, a review on the Store page genuinely helps.
The rest of the toolkit
- Dataset Cleaner & Exporter: dedupe, flatten nested JSON, clean phone numbers and URLs, export.
- Dataset Filter & Transform: keep the rows you want and reshape the fields.
- Dataset Join & Merge: VLOOKUP-style joins across datasets, files or sheets.
- Dataset Aggregate, Group By & Pivot: counts, sums and pivot tables per group.
- Dataset Diff & Change Detector: what changed since last time.
- Dataset AI Enrich: LLM-generated columns, no API key needed.
- Dataset Charts & Report: chart images and a PDF report.
- Dataset to Postgres, Supabase & MySQL: write the rows into a database table.
- Dataset to REST API: send every row to any API as its own request.
- Actor Pipeline Runner: run that whole chain in one call.
For AI agents
Pay per event, agent-payable through x402 and MCP, limited permissions, no standby. Inputs: datasetId (resource picker), fileUrl (CSV, TSV, Excel, JSON, JSON Lines or Google Sheet) or inline data for the rows; emailField (auto-detected when omitted); checkMailServer, detectDisposable, detectRole, detectTypos, markDuplicates to control the checks; keep to filter the output; exportFormats, outputDatasetName, webhookUrl for delivery. Returns every input row unchanged plus emailStatus (valid, risky, invalid, duplicate), emailReason, emailAllReasons, hasMailServer, mailServer, isDisposable, isRoleAddress, isFreeProvider, didYouMean and mailboxChecked (always false), plus a CLEAN_SUMMARY record. Charged $0.002 per address given a verdict, including rows filtered from the output. SMTP mailbox verification is NOT performed and is not available on this platform; do not present a valid verdict as a delivery guarantee.