Bulk Email Verifier: Syntax, MX, Disposable & Role Check avatar

Bulk Email Verifier: Syntax, MX, Disposable & Role Check

Pricing

$2.00 / 1,000 verified emails

Go to Apify Store
Bulk Email Verifier: Syntax, MX, Disposable & Role Check

Bulk Email Verifier: Syntax, MX, Disposable & Role Check

Pricing

$2.00 / 1,000 verified emails

Rating

0.0

(0)

Developer

Arthur

Arthur

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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:

fieldmeaning
emailthe input as given
normalizedcleaned address (Name <x@y> and mailto: stripped, domain lower-cased)
canonicaldeduplication key: +tags removed, Gmail dots removed, googlemail → gmail
local_part, domain, domain_ascii, tldparsed parts; internationalized domains converted to punycode
verdictdeliverable-domain · risky · undeliverable · valid-syntax (DNS not checked / lookup failed)
score0–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_validRFC 5322-style syntax check (length limits, allowed characters, dot rules, valid labels/TLD)
domain_existsdomain resolves in DNS (not NXDOMAIN)
mx_present, mx_records[]MX mail servers with priority (sorted)
mx_fallback_ano MX but an A/AAAA record exists (implicit MX — rarely accepts mail, marked risky)
null_mxdomain publishes a null MX (0 .) — it explicitly refuses email
disposabledomain (or its parent) is a known throw-away/temporary mail provider
role_accountgeneric mailbox such as info@, admin@, support@, noreply@, sales@ (120+ patterns)
free_providerconsumer webmail (Gmail, Outlook, Yahoo, iCloud, Proton, GMX, Ziggo, Orange … 150+ domains)
suggestion, suggested_domainlikely intended address for typos such as gmial.com, yahoo.con, hotmal.com
erroronly present when both DNS resolvers failed for that domain — such rows are not billed

Verdict logic

verdictwhen
undeliverableinvalid syntax, domain does not exist, domain has null MX, or no MX and no A record
riskydomain accepts mail but the address is disposable, a role account, a probable typo of a popular provider, or only an A record exists
deliverable-domainvalid syntax, domain exists, MX present, not disposable/role/typo
valid-syntaxsyntax 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

fielddefaultmeaning
emailslist of addresses (up to 10,000). Duplicates are skipped by default.
checkDnstrueresolve domain + MX over DNS-over-HTTPS
dedupetrueverify and bill each distinct address once
refreshDisposableListtruefetch 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
concurrency10parallel DNS lookups (results cached per domain)
timeoutSecs10per-lookup timeout
maxItems10000cost 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.com exists as a mailbox, only that company.com accepts mail. Unknown mailboxes on valid domains will show as deliverable-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-syntax with error: dns_lookup_failed (not billed) — re-run those rows.

No login, no proxies, no third-party API keys. Not affiliated with any email provider.