✅ Bulk Email Verifier - MX, Disposable & Role Check avatar

✅ Bulk Email Verifier - MX, Disposable & Role Check

Pricing

$2.00 / 1,000 email verifieds

Go to Apify Store
✅ Bulk Email Verifier - MX, Disposable & Role Check

✅ Bulk Email Verifier - MX, Disposable & Role Check

Verify a list of emails without an API key: RFC syntax, live DNS MX record + provider (Google/Microsoft…), disposable-domain and role-based detection, free-provider flag, and a 0-100 deliverability score. Clean your lead list and cut bounces before cold outreach.

Pricing

$2.00 / 1,000 email verifieds

Rating

0.0

(0)

Developer

Renzo Madueno

Renzo Madueno

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

✅ Bulk Email Verifier — MX, Disposable & Role Check

Paste a list of emails, get back a clean one. This Actor takes any list of email addresses and returns, for each one, whether it's well-formed, whether its domain can actually receive mail (a live DNS MX lookup), who runs that mail (Google Workspace, Microsoft 365, Zoho…), and whether it's a disposable, role-based, or free consumer address. Every email gets a status (valid / risky / invalid) and a 0–100 deliverability score so you can sort, filter and clean in seconds.

No API key. No signup with a third-party verification service. Keyless DNS + heuristics that run reliably from the cloud.


The value chain: find → verify → send

A cold list is only as good as its deliverability. Sending to dead, fake, or throwaway addresses hurts your sender reputation — mailbox providers watch your bounce rate and spam-trap hits, and a dirty list gets your good mail sent to spam. The fix is a two-step pipeline:

  1. Find the emails. Use our sibling Actors:
    • Website Contact Finder — crawl any domain and pull out emails, phones and social links.
    • Company Enrichment — turn a domain into tech stack, contacts and MX provider.
  2. Verify before you sendthis Actor. Drop the raw list in, keep the valid rows, review the risky ones, and discard the invalid ones.
  3. Then email with your ESP / cold-outreach tool on a clean list.

The result: lower bounce rate, protected sender reputation, higher inbox placement, and you stop paying your email tool to send to addresses that were never going to land.


What each check means

FieldWhat it tells you
syntaxValidPasses pragmatic RFC-ish validation (single @, legal local/domain parts, length limits). Catches typos like john@@stripe, .leading, trailing dots.
hasMxThe domain has a live DNS MX record — i.e. a mail server is configured to receive its mail. Resolved with Node's native dns resolver. Falls back to an implicit A-record MX (RFC 5321 §5.1) and flags it as weaker.
mxProviderWho runs the mailbox, classified from the MX hostnames: Google Workspace, Microsoft 365, Zoho, Proofpoint, Mimecast, GoDaddy, Amazon SES, Yahoo, Yandex, Proton, transactional ESPs, and more. A real, useful deliverability & segmentation signal.
isDisposableThe domain is a known throwaway / temp-mail service (Mailinator, Guerrilla Mail, 10MinuteMail, YOPmail, and ~100 more). These addresses vanish — never worth emailing.
isRoleBasedThe local part is a role/alias, not a person (info@, support@, sales@, admin@, noreply@…). Higher bounce and complaint risk on cold outreach; often catch-all.
isFreeProviderA free consumer mailbox (gmail.com, yahoo.com, outlook.com, icloud.com…). Deliverable, but usually not a business contact — matters when cleaning a B2B list.
statusRoll-up: valid (good syntax + real MX + not disposable + not role/free), risky (deliverable but low-quality: role-based, free, or A-record-only), invalid (bad syntax, no MX, or disposable).
score0–100 deliverability score combining every signal above. Sort your list by it.
reasonShort machine-readable reason for the status (e.g. no-mx-record, disposable-domain, role-based, ok).
checkedAtISO timestamp of the check.

Honest note: this is MX + heuristics, not live SMTP

Some verifiers claim to "ping the mailbox" over SMTP (connect to the mail server on port 25 and issue RCPT TO to see if the address exists). We deliberately don't do that, and neither should you trust services that claim they do from the cloud:

  • Cloud providers (Apify included) block or throttle outbound port 25 to stop spam, so the check would fail or hang for most addresses.
  • Even when it connects, results are unreliable: greylisting delays it, and catch-all domains accept every address, so a "yes" means nothing.
  • Aggressive SMTP probing can get your IP blacklisted.

So we do the checks that are honest, fast and reliable from the cloud: valid syntax + a real MX record + disposable/role/free heuristics. This catches the overwhelming majority of bad addresses (typos, dead domains, throwaways) without pretending to a mailbox-level certainty that no cloud tool can truthfully deliver. risky is our honest label for "deliverable domain, but verify the mailbox yourself before a high-stakes send."


Input

{
"emails": ["john@stripe.com", "test@mailinator.com", "info@notion.so"],
"maxConcurrency": 5
}
FieldTypeDefaultDescription
emailsarray of strings— (required)Emails to verify, one per line.
maxConcurrencyinteger5How many to verify in parallel (1–25).

Output

One record per email:

{
"email": "john@stripe.com",
"syntaxValid": true,
"hasMx": true,
"mxProvider": "Google Workspace",
"isDisposable": false,
"isRoleBased": false,
"isFreeProvider": false,
"status": "valid",
"score": 100,
"reason": "ok",
"checkedAt": "2026-07-02T00:00:00.000Z"
}
{
"email": "test@mailinator.com",
"syntaxValid": true,
"hasMx": false,
"mxProvider": null,
"isDisposable": true,
"isRoleBased": false,
"isFreeProvider": false,
"status": "invalid",
"score": 5,
"reason": "disposable-domain",
"checkedAt": "2026-07-02T00:00:00.000Z"
}

The dataset ships with a table view (email, status, score, MX, disposable, role-based, provider) and exports to CSV, JSON, Excel, and via API.


Use cases

  • Clean a lead list before importing it into your CRM or ESP.
  • Cut your bounce rate — drop invalid, review risky, keep valid.
  • Protect sender reputation ahead of a cold-outreach campaign.
  • Segment B2B vs consumer with isFreeProvider, and person vs alias with isRoleBased.
  • Route by provider — e.g. tailor sending to Google Workspace vs Microsoft 365 domains.
  • De-risk a purchased or scraped list by spotting disposable and dead domains.

FAQ

Does it connect to the mailbox / do a real SMTP check? No — see the honest note above. We do syntax + live MX + disposable/role/free heuristics, which is the reliable approach from the cloud.

Can it prove an address definitely exists? No cloud tool can (catch-all domains accept everything). We prove the domain can receive mail and flag everything that makes an address low-quality or fake.

What does risky mean — should I email those? Deliverable domain, but a lower-quality target: a role alias (info@), a free consumer inbox, or a domain with only an A record. Fine for some sends, worth a second look before high-stakes outreach.

Do I need an API key or account anywhere? No. DNS is queried directly; the disposable/role/free lists are bundled.

How fast is it? Fast — checks run in parallel (default concurrency 5). Thousands of emails run in minutes.

Are results deduplicated? Yes, the input list is de-duplicated (case-insensitive) before verification.


Automate it

Run this Actor on a schedule or from your own code:

  • Schedule it in the Apify Console to re-verify a list periodically.
  • API / SDK: call it from Node or Python and read the dataset back.
  • Integrations: pipe results to Google Sheets, Slack, Zapier, Make, or a webhook.
  • Chain it: run Website Contact Finder → feed its emails straight into this verifier → export the valid rows to your outreach tool.

Pricing is pay-per-result: you're charged per email verified, so a run costs exactly what you use.


Part of a lead-gen Actor family: Website Contact Finder and Company Enrichment to find and enrich; Bulk Email Verifier to clean before you send.