Bulk Email Verifier: Syntax, MX, Disposable & Role Check
Pricing
$2.00 / 1,000 verified emails
Bulk Email Verifier: Syntax, MX, Disposable & Role Check
Pricing
$2.00 / 1,000 verified emails
Rating
0.0
(0)
Developer
Arthur
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Clean an email list of up to 10,000 addresses per run for a fraction of the usual price. Every address gets a syntax check, a live DNS check of its domain (does it exist, does it have MX mail servers, does it explicitly refuse mail), disposable-domain and role-account detection, a free-mail flag, a typo suggestion, a normalized form and a clear verdict + 0–100 score you can filter on.
This is a DNS-level verifier: it tells you whether the domain can receive mail and whether the address is worth sending to. It does not open an SMTP connection to the mail server, so it cannot confirm that the specific mailbox exists and it does not detect catch-all domains (see Limitations). For most list-cleaning jobs — removing junk, typos, dead domains, disposables and role accounts before an import or campaign — this catches the large majority of problem addresses at ~1/50 of the cost of a mailbox-level verifier.
What you get
One dataset row per address:
| field | meaning |
|---|---|
email | the input as given |
normalized | cleaned address (Name <x@y> and mailto: stripped, domain lower-cased) |
canonical | deduplication key: +tags removed, Gmail dots removed, googlemail → gmail |
local_part, domain, domain_ascii, tld | parsed parts; internationalized domains converted to punycode |
verdict | deliverable-domain · risky · undeliverable · valid-syntax (DNS not checked / lookup failed) |
score | 0–100 confidence that the address is safe to send to |
reasons[] | machine-readable reasons, e.g. invalid_syntax:missing_or_multiple_at, domain_not_found, null_mx_domain_refuses_mail, no_mx_only_a_record, disposable_domain, role_account, possible_typo, free_provider |
syntax_valid | RFC 5322-style syntax check (length limits, allowed characters, dot rules, valid labels/TLD) |
domain_exists | domain resolves in DNS (not NXDOMAIN) |
mx_present, mx_records[] | MX mail servers with priority (sorted) |
mx_fallback_a | no MX but an A/AAAA record exists (implicit MX — rarely accepts mail, marked risky) |
null_mx | domain publishes a null MX (0 .) — it explicitly refuses email |
disposable | domain (or its parent) is a known throw-away/temporary mail provider |
role_account | generic mailbox such as info@, admin@, support@, noreply@, sales@ (120+ patterns) |
free_provider | consumer webmail (Gmail, Outlook, Yahoo, iCloud, Proton, GMX, Ziggo, Orange … 150+ domains) |
suggestion, suggested_domain | likely intended address for typos such as gmial.com, yahoo.con, hotmal.com |
error | only present when both DNS resolvers failed for that domain — such rows are not billed |
Verdict logic
| verdict | when |
|---|---|
undeliverable | invalid syntax, domain does not exist, domain has null MX, or no MX and no A record |
risky | domain accepts mail but the address is disposable, a role account, a probable typo of a popular provider, or only an A record exists |
deliverable-domain | valid syntax, domain exists, MX present, not disposable/role/typo |
valid-syntax | syntax OK but DNS not checked (checkDns: false) or DNS lookup failed |
Score: 20 (syntax) + 20 (domain exists) + 40 (MX) + 10 (not disposable) + 10 (not role), minus penalties for typo suspicion; free_provider is informational and does not lower the score.
Input
| field | default | meaning |
|---|---|---|
emails | — | list of addresses (up to 10,000). Duplicates are skipped by default. |
checkDns | true | resolve domain + MX over DNS-over-HTTPS |
dedupe | true | verify and bill each distinct address once |
refreshDisposableList | true | fetch the latest open-source disposable-domain list (≈8,000 domains) at run start; falls back to the build-time copy or an embedded core list |
extraDisposableDomains | [] | your own domains to flag as disposable |
concurrency | 10 | parallel DNS lookups (results cached per domain) |
timeoutSecs | 10 | per-lookup timeout |
maxItems | 10000 | cost cap |
Example input:
{ "emails": ["john.doe@gmail.com", "info@shopify.com", "someone@mailinator.com", "user@gmial.com", "not-an-email"] }
Example rows (abridged):
{"email":"john.doe@gmail.com","verdict":"deliverable-domain","score":100,"reasons":["free_provider"],"canonical":"johndoe@gmail.com","mx_present":true}{"email":"info@shopify.com","verdict":"risky","score":80,"reasons":["role_account"],"role_account":true}{"email":"someone@mailinator.com","verdict":"risky","score":60,"reasons":["disposable_domain"],"disposable":true}{"email":"user@gmial.com","verdict":"risky","score":15,"reasons":["no_mx_only_a_record","disposable_domain","possible_typo"],"suggestion":"user@gmail.com"}{"email":"not-an-email","verdict":"undeliverable","score":0,"reasons":["invalid_syntax:missing_or_multiple_at"]}
Pricing
Pay per event: $0.002 per verified email ($2 per 1,000; 10,000 addresses ≈ $20). You are charged only for rows that were actually written to the dataset; rows with a DNS error are stored but not billed. Comparable mailbox-level verifiers on the Store charge $0.01–$0.10 per email. Typical run: 10,000 addresses in 2–5 minutes at 256 MB.
Limitations (please read)
- No mailbox-level SMTP check. The actor never connects to port 25, so it cannot tell whether
john@company.comexists as a mailbox, only thatcompany.comaccepts mail. Unknown mailboxes on valid domains will show asdeliverable-domain. - Catch-all detection is not included (it requires SMTP).
- Disposable and free-provider detection is list-based; new throw-away domains appear daily. Add your own via
extraDisposableDomains. - Typo suggestions are limited to ~50 popular consumer providers and are heuristics: the row keeps its real DNS result, the suggestion is advisory.
- DNS answers come from public resolvers (Google DNS, Cloudflare fallback). Temporary resolver failures produce
verdict: valid-syntaxwitherror: dns_lookup_failed(not billed) — re-run those rows.
No login, no proxies, no third-party API keys. Not affiliated with any email provider.