Email Validator: Syntax, MX, Disposable & Role Check avatar

Email Validator: Syntax, MX, Disposable & Role Check

Pricing

from $0.50 / 1,000 email checkeds

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

Email Validator: Syntax, MX, Disposable & Role Check

Bulk email validation without SMTP probing: syntax, MX records via DNS-over-HTTPS, disposable domains, role accounts, free providers, typo suggestions and Gmail normalisation. One row per email.

Pricing

from $0.50 / 1,000 email checkeds

Rating

0.0

(0)

Developer

Ailu Studio

Ailu Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Email Validator: Bulk Email Syntax, MX Record, Disposable, Role Account and Typo Check (No SMTP)

Clean an email list in bulk before you import it into a CRM or send a campaign. For every address the Actor checks the syntax, looks up the domain's MX records over DNS-over-HTTPS (Cloudflare, with Google Public DNS as fallback), flags disposable domains (about 120,000 known throwaway domains), role accounts (info@, admin@, noreply@ ...), free consumer providers (Gmail, Outlook, Yahoo, iCloud, Proton, GMX, Yandex, Mail.ru, QQ, Naver ...) and likely typos such as hotmial.com with a corrected didYouMean address. It also returns a Gmail-normalised address for de-duplication. The Actor never connects to mail servers and never sends anything, so it is fast, cheap and cannot hurt your sender reputation; rows whose DNS lookup failed are free.

Use cases

  • Remove invalid, disposable and mistyped addresses from sign-up forms and lead lists.
  • Separate personal addresses from generic role mailboxes before outreach.
  • Split B2B leads from free-mailbox (consumer) leads.
  • De-duplicate Gmail addresses written with dots or +tags (J.Doe+promo@gmail.com = jdoe@gmail.com).
  • Pre-filter a list cheaply before a paid SMTP verification service.

Input

FieldDefaultMeaning
emails5 sample addresses (role, Gmail with dots and +tag, disposable, typo, invalid)Addresses to check, one per line. Case-insensitive duplicates are checked once.
maxConcurrency10Addresses checked in parallel.
maxItems1000Maximum number of addresses checked in this run.

Example: { "emails": ["sales@acme.com", "john@gmial.com", "x@mailinator.com"], "maxItems": 5000 }

Output

FieldMeaning
idFirst 16 hex characters of SHA-1 of the lower-cased address
email, normalizedEmailInput and normalised form (lower case; Gmail dots and +tag removed)
statusvalid, risky, invalid or unknown
reasonWhy, e.g. role account, domain does not exist, syntax: consecutive dots in local part
syntaxValid, domainSyntax verdict and lower-case domain
hasMx, mxRecords, hasImplicitMxMX records (up to 5, preferred first); A/AAAA fallback
isDisposable, isRoleAccount, isFreeProviderFlags
didYouMeanSuggested correction for provider typos
catchAllAlways null (needs SMTP, see below)
fetchedAtTime of the check

Status rules: invalid = bad syntax, non-existent domain (NXDOMAIN), null MX or neither MX nor A record. risky = deliverable domain but disposable, role account or likely typo. valid = deliverable domain and none of these. unknown = DNS failed on both resolvers (free row).

Sample row:

{
"id": "4428a0907a9e828e", "email": "J.Doe+newsletter@Gmail.com", "normalizedEmail": "jdoe@gmail.com",
"status": "valid", "reason": "MX records found", "syntaxValid": true, "domain": "gmail.com", "hasMx": true,
"mxRecords": ["gmail-smtp-in.l.google.com", "alt1.gmail-smtp-in.l.google.com", "alt2.gmail-smtp-in.l.google.com", "alt3.gmail-smtp-in.l.google.com", "alt4.gmail-smtp-in.l.google.com"],
"hasImplicitMx": false, "isDisposable": false, "isRoleAccount": false, "isFreeProvider": true, "didYouMean": null, "catchAll": null,
"fetchedAt": "2026-11-04T11:37:20.485Z"
}

How it works and limits

  • No SMTP: port 25 is blocked on Apify and probing mailboxes is abusive, so the Actor cannot tell whether a specific mailbox exists or whether a domain is catch-all (catchAll is always null). A valid address can still bounce if the mailbox was deleted.
  • DNS: MX query via cloudflare-dns.com, fallback dns.google on HTTP errors or SERVFAIL; when there is no MX, A/AAAA is checked (implicit MX). A single 0 . record (RFC 7505 null MX) means the domain accepts no mail. Answers are cached per domain within a run; at most 10 queries per second per resolver.
  • Syntax covers the common unquoted form (letters, digits and !#$%&'*+/=?^_{|}~-, Unicode letters allowed). Quoted local parts and IP-literal domains are reported as invalid.
  • Disposable detection uses the open-source disposable-email-domains npm list (MIT); new throwaway domains appear every day, so coverage is never complete.
  • Typo suggestions only target well-known consumer providers.

Pricing

Pay per result: $0.50 per 1,000 rows (result event). Platform usage is billed separately by Apify. Removed/free rows are not charged.

Rows with status unknown (DNS failure) are free.

Not affiliated with Cloudflare, Google or any email provider. Uses the public Cloudflare DNS-over-HTTPS and Google Public DNS JSON APIs only. Data licence/terms: https://developers.cloudflare.com/1.1.1.1/privacy/public-dns-resolver/ and https://developers.google.com/speed/public-dns/terms. Only the domain part of each address is sent to the DNS resolvers. You are responsible for having a lawful basis to process the addresses you check (GDPR, CAN-SPAM).

FAQ

Is "valid" a guarantee of delivery? No. It means the address is well-formed and its domain accepts mail. Only an SMTP check (not done here) or a real send can confirm a mailbox.

Why is support@company.com "risky"? Role mailboxes are shared and often filtered; many outreach tools treat them as risky. Use isRoleAccount to decide yourself.

Why do I get both didYouMean and status risky for a domain with MX records? Typo domains such as hotmial.com often have MX records operated by third parties; mail sent there does not reach the intended person.

How fast is it? Hundreds of addresses per minute; lists with many addresses on the same domains are faster thanks to the DNS cache.