Email List Cleaner & Deliverability Pre-Check
Pricing
Pay per event
Email List Cleaner & Deliverability Pre-Check
Clean email lists in bulk: syntax, MX/DNS, disposable, role and typo detection, dedup, plus per-domain mail provider, SPF and DMARC intelligence. $0.50/1000 decisive results; temporary failures and duplicates are never charged. Input: JSON, raw text, a file URL or any scraper's Apify dataset.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Burly Bat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Clean any email list before you import it into a CRM or a sending tool. Point this Actor at a scraped lead list, a CSV, a pasted column or another Actor's dataset, and get back a send-safe list plus a per-domain deliverability profile.
You pay $0.50 per 1,000 decisive results. Duplicates, temporary DNS failures and run errors are delivered free of charge.
Quick start
- Paste addresses into Email addresses, or set Apify dataset ID to the dataset of a scraper run (for example a Google Maps or lead-generation Actor) and name the column in Email field.
- Run the Actor.
- Download CLEAN_LIST.csv (send-safe addresses) or the full dataset.
{ "datasetId": "YOUR_SCRAPER_DATASET_ID", "emailField": "email" }
What you get for every address
| Result | Meaning |
|---|---|
accepts_mail | The domain provably receives mail. The individual mailbox was not confirmed. |
valid | The mailbox itself was confirmed over SMTP. Requires outbound port 25 — see below. |
invalid | Broken syntax, or the domain has no mail infrastructure at all (no MX, no A fallback). |
risky | Disposable/throwaway domain, or a catch-all server that accepts every address. |
unknown | A temporary DNS or SMTP failure. Never charged. |
Every record also carries:
isRole— shared mailbox (info@,sales@,billing@,biuro@, …)isDisposable— throwaway provider, from the CC0disposable-email-domainsblocklistisFreeProvider— consumer mailbox (Gmail, Outlook, WP.pl, …)didYouMean— typo correction, e.g.jane@gamil.com→jane@gmail.commailProvider— who actually hosts the mailboxes:google_workspace,microsoft_365,zoho,proofpoint,mimecast,self_hosted_or_otherspf/dmarcPolicy— the domain's published email-authentication postureconfidenceandverificationDepth— how far the check actually got
Duplicates are removed before any work is done, so you are never charged twice for the same address.
Honest note on SMTP and the valid status
Mailbox-level verification requires an outbound connection on port 25. Apify's platform blocks
outbound port 25, and so do most cloud providers. This Actor therefore does not claim to
confirm individual mailboxes when it runs here: a healthy address is reported as accepts_mail,
never as valid. smtpCheck is off by default because leaving it on only slows the run down.
If you run this Actor on your own infrastructure with port 25 open, enable smtpCheck (and
optionally catchAllCheck). The probe performs a standard RCPT TO handshake and disconnects —
no message is ever sent — and results then reach valid / mailbox_not_found depth.
We would rather tell you this than sell you a valid we cannot prove.
What this removes from a scraped list
- addresses that cannot exist (malformed syntax)
- domains with no mail server at all — the single biggest source of hard bounces
- disposable and throwaway addresses
- duplicates, including the same mailbox written in different letter cases
- typo'd provider domains such as
gamil.com, which are parked, accept mail and act as spam traps - role accounts, separated out so you can decide whether to keep them
Deliverability intelligence
With domainIntel enabled (default), each unique domain is resolved once for its mail provider,
SPF record and DMARC policy. Two cached DNS lookups per domain, not per address.
Useful for segmenting B2B lists (google_workspace vs microsoft_365), and for spotting domains
with no SPF or no DMARC before you send to them.
Output
| Key | Contents |
|---|---|
| dataset | one record per unique address, all fields above |
CLEAN_LIST.csv | send-safe addresses only: deliverable, non-role, no suspected typo |
RESULTS.csv | every address with every flag, for spreadsheets and CRM import |
REPORT | self-contained HTML report |
SUMMARY | Markdown summary |
OUTPUT | JSON summary with counts, provider breakdown and the billable ratio |
Billing
One email-checked event per address that reaches a decisive result: accepts_mail, valid,
invalid or risky. Not charged: unknown (temporary DNS/SMTP failure), duplicates removed
before the check, and addresses skipped by your run charge limit. The Actor caps its own input to
your run charge limit before doing any work.
Data processing
Addresses you submit are processed only inside your own run and stored in your own dataset and key-value store. Nothing is retained, shared or resold by this Actor. Use it for list hygiene on data you are allowed to process — it is not a tool for unsolicited mass email, which Apify's Acceptable Use Policy prohibits.
Sources and limits
- Disposable domain blocklist:
disposable-email-domains(CC0), vendored and refreshed with each release. - Syntax follows practical RFC 5321/5322 rules for unquoted local parts. Quoted local parts
(
"a b"@example.com) are rejected; they are legal but effectively never deliverable in practice. - MX resolution honours the RFC 5321 implicit A/AAAA fallback and RFC 7505 "null MX".
accepts_mailis a domain-level guarantee, not a mailbox-level one. Treat it as "safe to send, bounce still possible", which is exactly what a DNS-level check can honestly promise.