Bulk Email Validator - MX, Disposable, Role & Typo Check avatar

Bulk Email Validator - MX, Disposable, Role & Typo Check

Pricing

from $0.24 / 1,000 email checkeds

Go to Apify Store
Bulk Email Validator - MX, Disposable, Role & Typo Check

Bulk Email Validator - MX, Disposable, Role & Typo Check

Clean email lists in bulk: syntax, MX/DNS, null MX, disposable, role-based, free-provider and typo checks plus SPF/DMARC. $0.30 per 1,000 emails; bad syntax, duplicates and DNS errors free. No SMTP probing.

Pricing

from $0.24 / 1,000 email checkeds

Rating

0.0

(0)

Developer

TinyRex

TinyRex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Bulk Email Validator: MX, disposable, role-based and typo check

Clean an email list before you import it into your CRM or send a campaign — paste thousands of addresses and get valid, risky, invalid or unknown for each one, with a plain-English reason. The Actor checks syntax, whether the domain exists and accepts email (MX, null MX, A fallback), disposable/temporary providers, role inboxes (info@, sales@), free webmail and common typos (gmial.com → gmail.com), plus SPF and DMARC of the domain. $0.30 per 1,000 emails; bad syntax, duplicates and DNS errors are free. No API key, no login.

What you get from the Bulk Email Validator

  • Catch dead and fake addresses fast — domains that don't exist, domains with a null MX (they accept no mail), domains with no mail server at all, and broken syntax (a..b@x.com, name@@domain, missing TLD).
  • Flag risky addresses — ~10,000 disposable/temporary domains (open CC0 list), typo-trap domains with a didYouMean fix, role/shared inboxes (isRoleBased) and free webmail (isFreeProvider) so you can split B2B from B2C leads.
  • Domain email health — hasSpf and hasDmarc show whether the company's email is set up properly, and mxRecords shows who hosts it (Google Workspace, Microsoft 365, ...).

Sample output (JSON)

{
"input": "jane@gmial.com",
"email": "jane@gmial.com",
"status": "risky",
"reason": "typo-trap domain on the disposable list, did you mean jane@gmail.com?",
"syntaxValid": true,
"domain": "gmial.com",
"localPart": "jane",
"isRoleBased": false,
"isFreeProvider": false,
"isDisposable": true,
"didYouMean": "jane@gmail.com",
"domainExists": true,
"hasMx": false,
"mxRecords": [],
"nullMx": false,
"acceptsMailViaA": true,
"hasSpf": false,
"hasDmarc": false,
"smtpChecked": false,
"charged": true,
"checkedAt": "2026-10-18T07:03:28.104Z"
}

A valid company address looks like "status": "valid", "reason": "mail domain OK; role/shared inbox", "mxRecords": ["aspmx.l.google.com", ...], "hasSpf": true, "hasDmarc": true.

Export as CSV, Excel or JSON, or send results to Google Sheets, Make, Zapier, n8n, webhooks or the Apify API. A SUMMARY record in the key-value store has run totals (valid / risky / invalid / unknown / charged).

How to configure the Bulk Email Validator

  1. Paste your emails, one per line (a column copied from Excel or a CRM export works).
  2. Or give a dataset ID: the Actor collects every email from another run's output, for example Website Contact Details Extractor.
  3. Run. Each unique email that gets a DNS verdict is one charge.

Example input

{
"emails": ["hello@apify.com", "jane@gmial.com", "test@mailinator.com", "nobody@example.com"],
"checkSpfDmarc": true,
"maxEmails": 10000
}
SettingDefaultNotes
emails—Addresses to check; duplicates removed case-insensitively (free)
datasetId—Pull every email-looking string from an Apify dataset
checkSpfDmarctrueAdds hasSpf / hasDmarc; no extra charge
maxEmails10000Hard cap on unique emails per run (up to 100,000)

Status meaning

statusMeaningCharged
validSyntax OK, domain exists and has a mail server, not disposableyes
riskyDisposable provider, likely typo, or no MX (mail only via A record)yes
invalidDomain doesn't exist, null MX or no mail serveryes
invalid (bad syntax)Fails the syntax check, no DNS lookup neededfree
unknownDNS lookup failed after retries; try again laterfree

Speed: each domain is looked up once and cached, with 32 lookups in parallel.

Common use cases

  • Before a campaign: drop dead domains, typos and disposable signups so bounces don't hurt your sender reputation.
  • CRM and newsletter clean-up: tag old contacts as invalid or risky and export only the valid ones as CSV.
  • Lead lists: check emails found by Website Contact Details Extractor and filter role inboxes with isRoleBased.
  • Signup forms: run a nightly batch on new registrations to catch fake and temporary addresses.

Pricing

Pay per event: $0.0003 per email checked ($0.30 per 1,000), with Bronze/Silver/Gold discounts. Bad-syntax rows, duplicates and DNS errors (unknown) are free. A tiny Actor-start fee applies per run.

What this Actor does not do

It does not connect to mail servers to probe individual mailboxes (no SMTP RCPT TO handshake). That keeps it fast, cheap and safe for your list, but it means it can't tell whether john@company.com exists on a domain that does accept mail. Use it as the first, cheap pass that removes dead domains, disposables and typos; send the remaining valid addresses to an SMTP verifier only if you need mailbox-level certainty.

FAQ

How do I check if an email address is valid without sending an email? Paste it into Emails. The Actor checks the syntax and then asks DNS whether the domain exists and has a mail server (MX record). If either fails, the address can't receive email and comes back invalid.

What is a disposable email address? A temporary inbox from services like Mailinator or 10MinuteMail, used to grab a download or a free trial. They're flagged isDisposable: true and status: risky using the open CC0 disposable-email-domains list.

Should I remove role-based emails like info@ or sales@? For cold outreach to people, often yes; for B2B lead lists they're usually fine. That's why role addresses stay valid and are only flagged with isRoleBased: true, so you can filter them yourself.

What does a null MX mean? A domain can publish a "null MX" record (RFC 7505) to say it never accepts email, like example.com. Mail to it always bounces, so it's invalid.

Is my list stored or shared? The emails stay in your own Apify run storage. Lookups go to public DNS over HTTPS (Cloudflare 1.1.1.1, with Google Public DNS as fallback), which only sees domain names, never full addresses.