Bulk Email Verifier - Syntax, MX & Disposable avatar

Bulk Email Verifier - Syntax, MX & Disposable

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Bulk Email Verifier - Syntax, MX & Disposable

Bulk Email Verifier - Syntax, MX & Disposable

Verify emails with deterministic checks: syntax, MX records, disposable detection (~7.5K list), role-address + free-provider flags, and SPF/DKIM/DMARC domain health. No live SMTP probing (port 25 blocked on Apify), so mailbox existence stays 'unknown'. No API key needed.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Bulk Email Verifier — Syntax, MX & Disposable

Clean an email list before you send: catch bad syntax, dead domains, disposable/throwaway addresses, role inboxes, and free-provider accounts — and reduce your bounce risk.

⚠️ Honest scope — read this first

This actor checks the things that can be confirmed reliably without sending mail. It does NOT confirm that a specific mailbox exists.

It reliably tells you:

  • Is the address well-formed (valid syntax)?
  • Can the domain receive mail at all (does it publish mail-exchange records)?
  • Is it a disposable / throwaway domain?
  • Is it a role address (info@, sales@, support@)?
  • Is it a free consumer provider (Gmail, Yahoo, Outlook)?
  • Does the domain publish sender-authentication records (SPF / DKIM / DMARC)?

It cannot tell you whether one exact mailbox (jane@acme.com) is live, full, or will hard-bounce — confirming that requires a live mailbox handshake that is not available on this platform. So the mailboxExists field always stays unknown.

A valid result therefore means well-formed + the domain can receive mail + no red flags — it is not a guarantee that the address is deliverable, and we never claim "verified deliverable" or "guaranteed valid." Use this as a high-quality list-hygiene filter that removes the obvious garbage (bad syntax, dead domains, disposables, role inboxes) before your campaign goes out, so your bounce rate and spam score stay low.

What you get

For every email in your list you get a clear status (valid / invalid / risky / unknown), the individual signals behind that status, a confidence score, and a plain-English reason. Domain checks are reused per domain within a run, so a list of 1,000 emails that spans only 50 unique domains stays fast and cheap. No account, no API key, no setup.

Output fields

FieldTypeDescription
emailstringThe input address (as provided)
statusstringvalid, invalid, risky, or unknown
syntaxValidbooleanAddress is well-formed
mxFoundbooleanDomain can receive mail
mxHoststringPrimary mail host for the domain, if any
isDisposablebooleanDomain is a known disposable / throwaway provider
isRolebooleanAddress is a role inbox (info, sales, support, …)
isFreeProviderbooleanDomain is a free consumer mailbox (Gmail, Yahoo, …)
domainHealth.spfbooleanDomain publishes an SPF record
domainHealth.dkimbooleanA DKIM key was found (best-effort)
domainHealth.dmarcbooleanDomain publishes a DMARC record
smtpCheckstringAlways blocked — live mailbox probing is not available here
mailboxExistsstringAlways unknown — see honest-scope note above
confidencenumber0–100 confidence in the status
reasonstringHuman-readable explanation of the classification

How status is decided

statusWhen
invalidBad syntax, or the domain cannot receive mail
riskyDomain works but there's a quality flag: disposable domain or a role address
validValid syntax + domain can receive mail + no red flags (mailbox existence still not confirmed)
unknownReserved for cases that genuinely cannot be determined (e.g. a lookup error)

Example output

{
"email": "info@example.com",
"status": "risky",
"syntaxValid": true,
"mxFound": true,
"mxHost": "mx.example.com",
"isDisposable": false,
"isRole": true,
"isFreeProvider": false,
"domainHealth": { "spf": true, "dkim": false, "dmarc": true },
"smtpCheck": "blocked",
"mailboxExists": "unknown",
"confidence": 55,
"reason": "Role-based address (not a personal mailbox)"
}

Input parameters

ParameterRequiredDescription
emailsYesList of email addresses to verify. You can also paste comma- or newline-separated emails into a single entry.
checkDomainHealthNoWhen enabled (default), checks SPF / DKIM / DMARC for each unique domain. Disable to run faster.
deepNoPlaceholder for future deep mailbox verification. Has no effect today — mailboxExists stays unknown regardless. Default off.

Example input:

{
"emails": [
"founder@stripe.com",
"info@example.com",
"test@gmail.com",
"hello@mailinator.com",
"not-an-email"
],
"checkDomainHealth": true
}

Use cases

  • Growth / cold-outreach teams: strip disposables, dead domains, and obvious role inboxes before a send so your bounce rate and spam score stay low.
  • Revenue / sales ops: clean scraped or purchased lead lists on import — flag free-provider and role addresses before they hit the CRM, and re-check stored contacts for domains that no longer accept mail.
  • Email marketers: pre-screen newsletter and campaign lists to protect sender reputation, and audit which sender domains publish SPF / DKIM / DMARC before a big send.
  • Product / forms teams: catch typo'd and throwaway signups during list cleanup without ever sending an email.

Limitations

  • Mailbox existence is never confirmed. mailboxExists is always unknown. This is a list-hygiene / bounce-risk-reduction tool, not a guarantee of deliverability — it removes obvious bad addresses, it does not promise the rest are live.
  • DKIM detection is best-effort. DKIM keys live under sender-specific names that can't always be discovered automatically, so a false does not prove DKIM is unconfigured.
  • Catch-all domains can't be distinguished from real mailboxes, so a valid on a catch-all domain still can't confirm the individual person.
  • Transient network hiccups can occasionally cause a known-good domain to report no mail records; re-run if that happens.
  • The disposable blocklist is community-maintained and updated periodically, so a brand-new throwaway domain may not be listed yet.

Compared to alternatives

The most comparable option on the Apify Store is ryanclinton/bulk-email-verifier. The key difference is honesty about what each check can and can't prove.

Bulk Email Verifier (Thirdwatch)ryanclinton/bulk-email-verifier
Syntax, mail-domain, disposable, role, free-provider checksYesYes
SPF / DKIM / DMARC domain healthYesLimited / not surfaced
Honest about deterministic vs. mailbox-dependent signalsYes — mailboxExists clearly reported as unknownOften implies full "deliverability" without separating what's actually confirmed
Hidden third-party verification relays / surprise add-on chargesNoneSome verifiers route to external relays you don't see

We don't dress up domain-level signals as mailbox-level guarantees, and there are no hidden relays or surprise charges. You get exactly the deterministic checks described above, clearly labelled, so you know precisely what a valid does and doesn't mean.

FAQ

Does this confirm an email is real / will receive mail? No. It confirms the address is well-formed and the domain can receive mail, and it flags quality risks. Confirming one specific mailbox would require a live mailbox handshake that isn't available here, so mailboxExists stays unknown. See the honest-scope note at the top.

Why is mailboxExists always unknown? Because we never connect to the recipient's mail server to probe an individual inbox. That's an intentional, honest limitation — we report what we can actually confirm and nothing more.

Can I verify thousands of emails cheaply? Yes — domain lookups are reused within a run, so cost scales with the number of unique domains, not the number of emails.

What's the difference between risky and invalid? invalid = deterministically undeliverable (bad syntax, or the domain can't receive mail). risky = the domain works but there's a quality flag (disposable or role address) you probably want to review before sending.

Support and custom builds

Need a deeper mailbox-verification tier, catch-all detection, bounce-list integration, or scheduled re-verification? Contact Thirdwatch at thirdwatch.dev or through the Apify actor support channel.

Last verified: 2026-06