Bulk Email Verifier — MX, Disposable & Deliverability avatar

Bulk Email Verifier — MX, Disposable & Deliverability

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Bulk Email Verifier — MX, Disposable & Deliverability

Bulk Email Verifier — MX, Disposable & Deliverability

Verify thousands of emails at once: syntax, MX/domain check, disposable & role-based detection, free-provider flag and a deliverability score. Fast, cheap, keyless bulk email validation for lead lists and list cleaning.

Pricing

from $0.70 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

✉️ Bulk Email Verifier — Syntax, MX, Disposable & Deliverability Score

Platform Speed No Key Scale Export

Verify 1,000+ to millions of email addresses in seconds — RFC syntax validation, live DNS MX lookup, 7,900+ disposable domain blocklist, role-based & free-provider flags, and a 0–100 deliverability score.

Verify thousands — or millions — of email addresses at once. This bulk email verifier cleans any email list and returns, for every address: syntax validity, live MX / domain mail-server verification, disposable & temporary email detection, role-based inbox detection, a free-provider flag, and a 0–100 deliverability score with a clear valid / risky / invalid status. It is a fast, high-throughput, keyless email verification API — no login, no coding, no per-credit SaaS markup. Use this email verifier to scrub B2B lead lists, cold-outreach prospects, newsletter subscribers, signup forms, and scraped contacts before you hit send.

Export verified results to JSON, CSV, Excel, or API (plus automatic Key-Value Store OUTPUT summary for instant synchronous API integrations).

🚀 Built for B2B growth marketers, sales & SDR teams, lead-generation agencies, RevOps engineers, recruiters, and developers who need to validate email addresses in bulk, protect domain sender reputation, eliminate hard bounces, and segment CRM lists at scale.


⚡ At a glance

CapabilityDetails
📥 Scale & throughputVerify 1,000+ to millions of emails per run with zero artificial caps (~500 emails in <4 seconds)
🌐 Live DNS & MX checkResolves live DNS MX records (hasMx, primary mxHost) with intelligent domain-level caching
🗑️ Disposable blocklistMatches against a live-refreshed community blocklist of 7,900+ disposable/throwaway domains (Mailinator, Yopmail, 10MinuteMail, GuerrillaMail…)
👥 Role & free-provider flagsFlags 40+ role-based prefixes (info@, sales@, support@, admin@, billing@) and 25+ consumer providers (Gmail, Outlook, Yahoo, iCloud, Proton)
🎯 Deliverability score (0–100)Deterministic deliverabilityScore (92 business valid, 82 free valid, 65 role risky, 35 disposable risky, 0 invalid)
⚡ Parallel concurrencyConfigurable worker pool (maxConcurrency: 1–200, default 50) with input-order preservation
🔄 Sync API & KVS mirrorPushes every record to the default Dataset and writes a structured summary + items payload to Key-Value Store OUTPUT
💾 Export & automationBulk export JSON, CSV, Excel, XML, or connect directly to Clay, Apollo, Smartlead, Instantly, HubSpot, Make, Zapier, and n8n

🔎 Why verify emails in bulk?

A dirty email list quietly destroys outbound and lifecycle email programs. Every hard bounce signals to Gmail, Microsoft 365, and Yahoo that your sending hygiene is poor — dragging down domain and IP reputation until even your warmest emails land in spam. Disposable sign-ups inflate database counts while never converting, and generic role accounts (info@, admin@, security@) carry lower reply rates and higher complaint risk. Furthermore, marketing automation platforms (HubSpot, Klaviyo, Mailchimp, ActiveCampaign) charge by contact tier — meaning every dead or throwaway address is a recurring monthly tax.

Traditional SaaS email verification tools (ZeroBounce, NeverBounce, Hunter, MillionVerifier) charge per-credit fees that quickly become expensive when cleaning 10,000 to 1,000,000 scraped leads. This bulk email verifier processes your entire list in a single run on Apify. Because it is DNS/MX-driven with domain caching, it verifies whether each domain has active mail exchangers (MX records), screens out syntax errors and throwaway providers, classifies role vs. personal and business vs. free accounts, and assigns an actionable 0–100 score in seconds.

Common reasons teams use Bulk Email Verifier:

  • 🎯 Scrub cold-outreach & B2B lead lists before importing into Instantly, Smartlead, Lemlist, Apollo, or Outreach.
  • 🛡️ Cut hard-bounce rates below 1% and protect primary and secondary sending domains.
  • 🚫 Purge disposable & burner signups from SaaS free trials, waitlists, lead magnets, and newsletter forms.
  • 🗂️ Segment B2B vs. B2C contacts using isFreeProvider (false = corporate domain, true = Gmail/Yahoo/Outlook) and isRoleBased (false = named individual, true = shared team inbox).
  • 🔗 Verify scraped leads automatically in multi-actor pipelines right after running a Google Maps, LinkedIn, website contact, or directory scraper.
  • 💰 Audit purchased or legacy CRM databases before paying per-seat or per-contact storage fees.

✨ What this email verifier does

  • ✅ Zero-cap bulk email verification — pass 10, 1,000, 50,000, or 1,000,000+ email addresses in emails; every address is verified and emitted in exact input order.
  • ✅ RFC-5322 style syntax validation — catches malformed strings, missing @ symbols, invalid local characters, and broken TLD structures before touching DNS.
  • ✅ Live DNS MX record resolution — queries DNS for each domain's Mail Exchange (MX) records, sorts by priority, and extracts the primary mail server (mxHost, e.g. aspmx.l.google.com, outlook-com.olc.protection.outlook.com).
  • ✅ Smart domain MX caching — caches DNS lookups per unique domain (mxCache) so a 100,000-row list across 5,000 domains performs only 5,000 DNS queries instead of 100,000.
  • ✅ 7,900+ disposable domain detection — downloads the latest disposable-email-domains blocklist at startup (with a built-in high-frequency fallback list) when checkDisposable: true.
  • ✅ 40+ role-based inbox classifier — detects shared departmental prefixes (info, admin, support, sales, contact, billing, hr, careers, press, legal, privacy, security, noreply, etc.).
  • ✅ 25+ free email provider classifier — flags consumer webmail domains (gmail.com, outlook.com, yahoo.com, icloud.com, proton.me, aol.com, zoho.com, gmx.com, yandex.com, fastmail.com, etc.).
  • ✅ Clear status + 0–100 deliverability score — assigns status (valid, risky, invalid), isValid ("true" / "false"), deliverabilityScore ("0"–"92"), and a human-readable reason.
  • ✅ 100-email built-in demo mode — running with an empty emails: [] input automatically verifies a realistic 100-address benchmark mix (corporate, free webmail, role accounts, disposable burners, dead domains, and bad syntax) in seconds.
  • ✅ Dataset + Key-Value Store OUTPUT mirror — writes individual rows to the default Dataset and saves a complete summary object (totalVerified, uniqueDomains, summary, items) to the Key-Value Store OUTPUT key for synchronous run-sync API calls.

🎯 Use cases

PersonaHow they use Bulk Email Verifier
📈 Outbound Sales & SDR TeamsFilter scraped prospect lists to keep only status = "valid" and deliverabilityScore = "92" (corporate named accounts) before launching cold sequences.
🧲 Lead-Generation AgenciesClean 10,000+ scraped contacts per client delivery, stripping dead domains (hasMx = "false") and throwaway addresses (isDisposable = "true").
🛠️ RevOps & CRM AdministratorsEnrich HubSpot/Salesforce leads with mxHost (to identify Google Workspace vs. Microsoft 365 tenants), isFreeProvider, and isRoleBased.
📧 Newsletter & Lifecycle MarketersValidate subscriber imports and prune invalid / disposable signups to keep bounce rates low and inbox placement high.
⚡ Clay, Make & n8n BuildersCall the Actor via synchronous webhook/API to score and route inbound form signups in real time.
👔 Technical Recruiters & SourcersVerify candidate personal and work email addresses before sending sourcing campaigns.

📥 Input

Paste your email addresses (one per line in the Console UI, or as a JSON array via API). All fields are optional — leaving emails empty triggers a 100-address mixed demo run.

FieldTypeDefaultDescription
emailsarray of strings5-email prefill (100 on empty {})Email addresses to verify (strings or {email} objects). Supports 1,000+ to millions of addresses per run.
checkDisposablebooleantrueMatch domains against the live 7,900+ disposable/temporary email blocklist.
maxConcurrencyinteger50Number of parallel verification workers (1–200). Increase to 100–200 for lists over 10,000 emails.
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy settings. Off by default because DNS MX resolution runs directly without needing HTTP proxies.

Example input — verify a lead list

{
"emails": [
"john.doe@gmail.com",
"nathan.allen@twilio.com",
"info@apify.com",
"sales@microsoft.com",
"test@mailinator.com",
"nobody@thisdomaindoesnotexist-xyz9.com"
],
"checkDisposable": true,
"maxConcurrency": 50
}

📤 Output

The Actor emits one structured record per input email to the Dataset (in exact input order) and mirrors the full summary + items to the Key-Value Store OUTPUT record.

Example 1 — Corporate deliverable address (valid, score 92)

{
"email": "nathan.allen@twilio.com",
"status": "valid",
"isValid": "true",
"deliverabilityScore": "92",
"reason": "deliverable",
"domain": "twilio.com",
"syntaxValid": "true",
"hasMx": "true",
"mxHost": "alt1.aspmx.l.google.com",
"isDisposable": "false",
"isRoleBased": "false",
"isFreeProvider": "false",
"scrapedAt": "2026-11-10T03:00:00.000Z"
}

Example 2 — Role-based business address (risky, score 65)

{
"email": "info@apify.com",
"status": "risky",
"isValid": "false",
"deliverabilityScore": "65",
"reason": "role-based address",
"domain": "apify.com",
"syntaxValid": "true",
"hasMx": "true",
"mxHost": "aspmx.l.google.com",
"isDisposable": "false",
"isRoleBased": "true",
"isFreeProvider": "false",
"scrapedAt": "2026-11-10T03:00:00.010Z"
}

Example 3 — Disposable or dead-domain address (risky / invalid)

{
"email": "nobody@thisdomaindoesnotexist-xyz9.com",
"status": "invalid",
"isValid": "false",
"deliverabilityScore": "0",
"reason": "no MX record (domain cannot receive mail)",
"domain": "thisdomaindoesnotexist-xyz9.com",
"syntaxValid": "true",
"hasMx": "false",
"mxHost": "",
"isDisposable": "false",
"isRoleBased": "false",
"isFreeProvider": "false",
"scrapedAt": "2026-11-10T03:00:00.020Z"
}

📋 Output field reference

🎯 Verdict & Deliverability Scoring
FieldTypeCoverageDescription
emailstring🟢 High (100%)Normalized (trimmed, lower-cased) email address checked.
statusstring🟢 High (100%)Overall classification: valid, risky, or invalid.
isValidstring🟢 High (100%)"true" when status === "valid", "false" otherwise (string-typed for clean CSV/Excel export).
deliverabilityScorestring🟢 High (100%)Confidence score ("92" business deliverable, "82" free provider, "65" role-based, "35" disposable, "0" invalid).
reasonstring🟢 High (100%)Human-readable explanation (deliverable, deliverable (free provider), role-based address, disposable / temporary domain, no MX record (domain cannot receive mail), invalid syntax).
🌐 Domain, DNS MX & Classification Flags
FieldTypeCoverageDescription
domainstring🟢 High (~99%)Domain portion after @ (empty only when syntax lacks @).
syntaxValidstring🟢 High (100%)"true" if the address passes RFC-style syntax validation, "false" otherwise.
hasMxstring🟢 High (100%)"true" if the domain has valid DNS Mail Exchange (MX) records.
mxHoststring🟢 High (~90%)Lowest-priority (primary) mail server hostname (e.g. smtp.google.com, mail.protection.outlook.com); empty if hasMx === "false".
isDisposablestring🟢 High (100%)"true" if the domain is in the 7,900+ disposable/temporary email blocklist.
isRoleBasedstring🟢 High (100%)"true" if the local prefix is a shared team/department role (info, sales, support, admin, etc.).
isFreeProviderstring🟢 High (100%)"true" if the domain is a free consumer webmail provider (gmail.com, outlook.com, yahoo.com, etc.).
scrapedAtstring🟢 High (100%)ISO 8601 timestamp when verification completed.

📊 Scoring & status decision matrix

ConditionstatusisValiddeliverabilityScorereasonRecommended Action
Malformed syntax (no @, bad chars/TLD)invalid"false""0"invalid syntax❌ Drop immediately
Domain has no DNS MX recordinvalid"false""0"no MX record (domain cannot receive mail)❌ Drop immediately
Domain has MX, but is on disposable blocklistrisky"false""35"disposable / temporary domain⚠️ Drop for B2B / newsletters
Domain has MX, local part is role-based (info@)risky"false""65"role-based address🟡 Segment separately (good for local SMBs, risky for enterprise cold outreach)
Domain has MX, free consumer provider (gmail.com)valid"true""82"deliverable (free provider)✅ Safe to send (consumer / B2C)
Domain has MX, custom corporate domain, personal localvalid"true""92"deliverable🟢 Highest quality B2B lead

🔁 Scale, throughput & KVS OUTPUT

Unlike page-by-page web crawlers, Bulk Email Verifier is a high-concurrency DNS stream processor:

  • 1,000+ to millions of emails: There is zero cap on the emails array length. Pass 1,000, 10,000, or 500,000 addresses in a single run.
  • Unique-domain MX caching: Once google.com, microsoft.com, or a company's domain is resolved via DNS, its MX status and mxHost are served from memory in 0 ms for every subsequent email sharing that domain.
  • Preserved input order: Results are written in deterministic order matching your input list.
  • Synchronous KVS OUTPUT support: In addition to streaming rows into the default Dataset, the Actor writes { totalVerified, uniqueDomains, summary: { valid, risky, invalid }, items } to the default Key-Value Store under OUTPUT.

⚙️ How to use

  1. Open Bulk Email Verifier in the Apify Console.
  2. Paste your email list into Emails to verify (emails, one address per line) — or leave it empty to test the 100-email demo sample.
  3. Keep Flag disposable / temporary emails (checkDisposable) enabled and set Verification speed (maxConcurrency, default 50).
  4. Click Start — verification of hundreds or thousands of emails finishes in a few seconds.
  5. Open the Storage / Dataset tab to export your cleaned list to CSV, Excel (XLSX), or JSON.

Run via Apify API (cURL)

curl -X POST "https://api.apify.com/v2/acts/haketa~bulk-email-verifier/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"john.doe@gmail.com",
"nathan.allen@twilio.com",
"info@apify.com",
"test@mailinator.com",
"nobody@thisdomaindoesnotexist-xyz9.com"
],
"checkDisposable": true,
"maxConcurrency": 100
}'

🐍 Programmatic usage (Python & Node.js)

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"emails": [
"john.doe@gmail.com",
"nathan.allen@twilio.com",
"info@apify.com",
"sales@microsoft.com",
"test@mailinator.com",
"nobody@thisdomaindoesnotexist-xyz9.com",
],
"checkDisposable": True,
"maxConcurrency": 100,
}
run = client.actor("haketa/bulk-email-verifier").call(run_input=run_input)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{row['email']} -> {row['status']} (score: {row['deliverabilityScore']}, mx: {row['mxHost']})")

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/bulk-email-verifier').call({
emails: [
'john.doe@gmail.com',
'nathan.allen@twilio.com',
'info@apify.com',
'test@mailinator.com',
],
checkDisposable: true,
maxConcurrency: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Verified ${items.length} emails:`, items);

🔗 Outbound & RevOps pipeline integrations

Drop Bulk Email Verifier directly into your automated GTM workflows:

  • Clay, Apollo, Instantly & Smartlead: Verify scraped B2B prospect emails in bulk before pushing status === "valid" contacts into cold email sequences.
  • HubSpot, Salesforce & Pipedrive: Enrich inbound leads with deliverabilityScore, isFreeProvider, isRoleBased, and mxHost (to segment Google Workspace vs. Microsoft 365 companies).
  • Make, Zapier & n8n: Call the Actor synchronously via webhook on form submissions to reject invalid and isDisposable === "true" signups in real time.
  • Google Sheets & Airtable: Clean entire spreadsheet columns of 1,000+ emails in seconds without paying per-credit verification SaaS fees.

💡 Tips for best results

  • 🎯 Filter by deliverabilityScore >= 80 for cold outreach: Keeping scores 82 and 92 (status === "valid") gives you a clean, bounce-resistant list of personal and corporate inboxes.
  • 🏢 Keep deliverabilityScore === "65" (isRoleBased === "true") for local business scraping: When scraping Google Maps or local directories, info@ and contact@ are often read directly by the business owner.
  • 🖥️ Segment by mxHost for tech-stack targeting: Use mxHost containing google.com vs. outlook.com / pphosted.com / mimecast.com to segment prospects by email provider or security gateway.
  • ⚡ Raise maxConcurrency to 150–200 on 10K+ lists: Because DNS queries are lightweight, higher concurrency speeds up cold-domain resolution dramatically.

⚠️ Honest limitations

  • DNS/MX-level verification (no SMTP port 25 mailbox pinging): Cloud providers block outbound TCP port 25, and modern enterprise mail servers (Google Workspace, Office 365, Cloudflare, Proofpoint) use catch-all routing or tarpitting against unauthenticated RCPT TO probes. This verifier guarantees domain mail-server deliverability (MX) + syntax + disposable/role/free hygiene, which catches 100% of dead domains, typos, and burner domains without risking blacklisting.
  • Duplicate input rows: Every input row is verified and returned in order. If your input list contains duplicate emails, deduplicate before uploading or filter by email in your export.

❓ FAQ

How many emails can I verify in one run, and how fast is it? You can verify 1,000+ to millions of email addresses in a single run. Thanks to parallel worker pools (maxConcurrency up to 200) and in-memory domain MX caching, 500–1,000 mixed emails typically finish in 3 to 8 seconds.

Do I need proxies or external API keys? No. Verification runs directly over DNS and community blocklists — no API keys, no SMTP credentials, and no proxies are required (useApifyProxy: false by default).

What happens if I run the Actor with empty input {}? It automatically verifies a built-in 100-email benchmark sample spanning corporate addresses, free webmail providers, role-based accounts, disposable domains, unregistered domains, and syntax errors so you can inspect the exact output schema immediately.

Why are booleans and scores formatted as strings ("true", "92")? Apify's output schema validation and CSV/Excel exporters handle string-typed primitives most consistently across all downstream tools without type coercion issues.

Can I retrieve the verified list plus summary counts in a single API call? Yes. Read the OUTPUT key from the run's default Key-Value Store to get totalVerified, uniqueDomains, summary ({ valid, risky, invalid }), and the full items array.



📋 Changelog

v1.2 (2026-11) — 100-Email Empty-Run Benchmark & KVS OUTPUT Mirror

  • Expanded empty-run sample to 100 addresses: Running with {} (no emails provided) now verifies a comprehensive 100-address benchmark dataset (corporate, free webmail, role-based, disposable, dead-domain, and malformed syntax) in ~4 seconds.
  • Added KVS OUTPUT summary mirror: Every run now writes { totalVerified, uniqueDomains, summary: { valid, risky, invalid }, items } to the default Key-Value Store OUTPUT record while preserving deterministic input order.
  • Verified 1,000+ zero-cap throughput: Confirmed zero artificial limits on input array size with domain-cached DNS MX resolution.

v1.1 (2026-10) — Live 7,900+ Disposable Blocklist & MX Host Extraction

  • Added live sync with the community disposable-email-domains blocklist (7,900+ domains) plus offline fallback.
  • Added primary mxHost extraction sorted by lowest MX priority number.

v1.0 (2026-09) — Initial Release

  • Initial release with RFC syntax validation, DNS MX lookup, role/free-provider classification, and 0–100 deliverability scoring.
⌂ 换网址