Email Address Validator — Bulk MX, Disposable, Role, Score
Pricing
from $0.90 / 1,000 email validateds
Email Address Validator — Bulk MX, Disposable, Role, Score
Fast, cheap email list validator. RFC 5322 syntax, DNS MX lookup, disposable detection (3000+ domains), role & free-provider tagging, did-you-mean typo suggestions, 0–100 deliverability score. No external API key. ~$0.90 per 1,000 emails. MCP-ready.
Pricing
from $0.90 / 1,000 email validateds
Rating
0.0
(0)
Developer
Khadin Akbar
Actor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Email Address Validator — Bulk MX, Disposable, Role & Score
Fast, cheap email list validator. RFC 5322 syntax check, DNS MX lookup, disposable detection (3000+ domains), role/free-provider tagging, did-you-mean typo suggestions, and a 0–100 deliverability score per address. No external API key required. No third-party paid service in the loop.
At ~$0.90 per 1,000 emails — roughly $1/1K — this is among the cheapest deep-validation actors on Apify, and the only one that does not pass through paid third-party SMTP-verification API costs.
What you get per email
| Field | What it tells you |
|---|---|
status | valid / invalid / risky / unknown |
score | 0–100 deliverability score |
primaryReason | Single most important reason (e.g., mx_found, mx_not_found, disposable_domain) |
isValidSyntax | Passes RFC 5322 |
hasMxRecord | Domain has live MX records |
isFreeProvider | gmail.com / yahoo.com / outlook.com / icloud.com / 80+ |
isRoleBased | info@, sales@, admin@, postmaster@, … |
isDisposable | mailinator, 10minutemail, temp-mail, … (3000+ domains, kept current) |
suggestedEmail | jane@gmial.com → jane@gmail.com |
mxRecords[] | Resolved exchanges with priorities |
domain, localPart, normalizedEmail | Parsed components |
validatedAt | ISO 8601 timestamp |
What this catches without SMTP
The four classes of bad emails that wreck deliverability — caught with no SMTP probe:
- Bad syntax —
not-an-email,joe@,@gmail.com, double dots, length violations. - Dead / non-existent domains —
jane@thisdomaindoesnotexist.io(no MX). - Typos on big providers —
gmial.com,yaho.com,hotmaill.com(suggested fix returned). - Disposable / throwaway — mailinator, 10minutemail, guerrillamail (3000+ domains).
Real-world bounce rates: cleaning a list with these four checks alone typically removes 20–50% of bounces from purchased / scraped lists. SMTP probes catch maybe 5–15% on top — but only when port 25 is reachable, which it isn't from cloud datacenters.
When to use
- Before cold outreach — drop dead domains, typos, and disposables before they hurt sender reputation
- Signup form validation — block disposable accounts, suggest typos to real users
- CRM cleanup — score legacy lists for re-engagement vs suppression
- Lead-gen workflows — pair with the actors below to validate scraped emails
- AI agents — Claude / GPT calls this as a tool before sending email
Pricing
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Email validated | $0.0009 (≈ $0.90 per 1,000) |
Among the cheapest validation actors on Apify, with no external API costs to inflate the rate.
Input
{"emails": ["jane@example.com", "info@acme.io", "fake@thisdomaindoesnotexist.io"],"checkSmtp": false,"checkCatchAll": false,"concurrency": 10,"timeoutMs": 8000}
| Field | Type | Default | Description |
|---|---|---|---|
emails | string[] | — (required) | One or many addresses to validate |
checkSmtp | boolean | false | Live SMTP probe. Usually returns unknown from cloud datacenters (AWS port 25 block). Leave off unless self-hosting. |
checkCatchAll | boolean | false | Catch-all detection. Requires checkSmtp=true. |
concurrency | int (1–50) | 10 | Parallel validations |
timeoutMs | int (1000–30000) | 8000 | Per-SMTP-connection timeout |
Sample output
{"email": "jane@gmial.com","normalizedEmail": "jane@gmial.com","status": "invalid","score": 5,"primaryReason": "mx_not_found","reasons": ["syntax_valid", "typo_suggestion", "mx_not_found"],"isValidSyntax": true,"hasMxRecord": false,"smtpCheck": "skipped","isFreeProvider": false,"isRoleBased": false,"isDisposable": false,"suggestedEmail": "jane@gmail.com","domain": "gmial.com","localPart": "jane","validatedAt": "2026-05-03T20:00:00.000Z"}
Scoring rubric
| Score | Bucket | Action |
|---|---|---|
| 70+ | unknown (MX present, no red flags) → effectively safe | Send |
| 55–70 | risky — role address, free provider | Review / segment |
| 25 | risky — typo suggested but invalid as-is | Replace with suggestedEmail |
| 15 | risky — disposable | Suppress |
| 0–10 | invalid — bad syntax or no MX | Suppress |
Use with other Apify actors
This validator is the last mile for any email-producing scraper. Common pairings:
| Source actor | What it produces | Why validate after |
|---|---|---|
| linkedin-profile-email-scraper | LinkedIn profiles + work emails | Catch typos and dead domains |
| b2b-lead-finder-enrichment | Google Maps + emails | Drop dead-domain emails before outreach |
| google-maps-leads-scraper | Local business emails | Heavy on info@/contact@ — flag the role addresses |
| bulk-website-contact-extractor | Site-scraped contacts | Filter disposable + typo'd domains |
| contact-details-scraper | Emails, phones, socials | Final hygiene step before CRM ingestion |
| universal-lead-finder | Any niche+city leads | Score before pushing to outreach tools |
How it works
Input email│▼1. RFC 5322 syntax + length checks → invalid? STOP│▼2. Parse local + domain│▼3. Heuristics in parallel:- disposable-email-domains (3000+)- role-local list- free-provider list (80+ domains)- Levenshtein typo suggestions│▼4. DNS MX record lookup → no MX? STOP (invalid)│▼5. SMTP probe (opt-in only)│▼6. Score 0–100 + status bucket + reason codes│▼Dataset
Frequently asked
Why is checkSmtp off by default?
Apify runs on AWS, which blocks outbound port 25 by default — same as every major cloud (GCP, Azure, Hetzner cloud). SMTP probes from Apify almost always return unknown, so we don't waste your time and run cost. The non-SMTP signals already catch the majority of bad addresses.
Will turning checkSmtp on do anything?
On Apify infrastructure: usually no. The connections will refuse and you'll see smtpCheck: "unknown". If you fork this actor and run it on your own VPS with port 25 unblocked, the SMTP code path works fully (HELO → MAIL FROM → RCPT TO → catch-all probe).
What domains are on the disposable list? The maintained open-source disposable-email-domains registry — ~3000 domains including mailinator, 10minutemail, temp-mail, guerrillamail, sharklasers, throwaway, etc. Updated with package upgrades.
How accurate is this without SMTP?
For typical purchased / scraped B2B lists, removing addresses with score < 50 tends to drop the bounce rate to under 5% from a typical 20–40%. It will not catch "valid syntax + valid MX + non-existent mailbox" — that's the SMTP class only.
Can I use this from Make / Zapier / n8n / Pipedream? Yes — call the actor via Apify's REST API or use the Apify integrations directly.
MCP support? Yes. The actor exposes a clean tool description for Claude / GPT / Cursor agents via Apify MCP.
API usage
Apify REST API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~email-address-validator/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{ "emails": ["jane@example.com"] }'
JavaScript (Apify Client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('khadinakbar/email-address-validator').call({emails: ['jane@example.com', 'info@acme.io'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('khadinakbar/email-address-validator').call(run_input={'emails': ['jane@example.com', 'info@acme.io'],})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
Limitations & honesty
- No live SMTP from Apify. As noted, AWS blocks outbound port 25. The actor codes for it but you will get
unknownSMTP results from Apify. Most users do not need SMTP — the four offline checks (syntax, MX, disposable, typo) already catch the bulk of bad addresses. - Catch-all detection only works when SMTP works. Same constraint.
- No paid API in the loop. Cheaper, faster, no key juggling, no third-party rate limit. Trade-off: you don't get SMTP confirmations the way ZeroBounce / NeverBounce / MillionVerifier do via their private channels.
- Datacenter IP DNS. DNS resolution from Apify is fast and reliable. MX results are authoritative.
Legal / acceptable use
This actor performs DNS lookups and (optionally) SMTP RCPT TO probes — the same protocol-level checks every email server runs to deliver mail. It does not send mail, harvest addresses, or scrape any site. Use it for legitimate list hygiene, signup validation, and CRM cleanup. You are responsible for compliance with your local data-protection laws (GDPR, CAN-SPAM, CASL, etc.) when using validated addresses for outreach.
Author
Built and maintained by Khadin Akbar — 48+ production actors for lead gen, social media, ecommerce, and SEO.
🤖 Designed for AI agents (Claude, GPT, Cursor, n8n) and humans alike.