Email Verifier (Syntax + MX + SMTP) avatar

Email Verifier (Syntax + MX + SMTP)

Pricing

from $1.00 / 1,000 email verifieds

Go to Apify Store
Email Verifier (Syntax + MX + SMTP)

Email Verifier (Syntax + MX + SMTP)

Verify email deliverability via syntax checks, MX lookups, and a non-intrusive SMTP RCPT probe. Flags disposable domains, role accounts, and catch-all servers. $0.001/email + $0.02 start.

Pricing

from $1.00 / 1,000 email verifieds

Rating

0.0

(0)

Developer

ando

ando

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Verify email address deliverability through a four-stage pipeline: syntax validation → MX lookup → SMTP RCPT probe → catch-all detection, plus disposable-domain and role-account flags. Never sends an actual message — the SMTP probe stops before DATA.

⚠️ Compliance note

This Actor performs verification only. It does not send, receive, or store email content, and it must not be used for harvesting, scraping, or unsolicited mass-mailing purposes. The SMTP probe issues EHLOMAIL FROM:<>RCPT TO:<email>QUIT against the target mail server and never sends DATA — no message is ever transmitted or delivered. Always ensure you have a legitimate basis (e.g. your own leads/CRM data) for verifying the addresses you submit, and comply with applicable anti-spam and data protection laws (e.g. GDPR, CAN-SPAM) in your jurisdiction.

Pipeline

  1. Syntax validation — RFC 5322-inspired regex check
  2. MX lookupdns.resolveMx(), falling back to the domain's own A record (implicit MX per RFC 5321 §5.1) if no MX records exist
  3. SMTP RCPT probe — raw net.createConnection to port 25, EHLOMAIL FROM:<>RCPT TO:<email>, reading the server's real-time accept/reject response — no message is sent
  4. Catch-all detection — if the real address is accepted, a second probe with a random nonexistent local part at the same domain checks whether the server accepts everything (a catch-all configuration)
  5. Disposable domain check — embedded list of ~65 common temporary-email providers
  6. Role account check — flags shared mailboxes like info@, admin@, support@

Input

FieldTypeRequiredDefaultDescription
emailsarrayYesEmail addresses to verify (max 10,000)
concurrencyintegerNo10Parallel verification workers (1-50)

Input Example

{
"emails": ["jane.doe@example.com", "info@example.com", "not-an-email"],
"concurrency": 10
}

Output

{
"email": "jane.doe@example.com",
"status": "valid",
"mx_ok": true,
"disposable": false,
"role_account": false
}
FieldDescription
emailThe input email address
status"valid", "invalid", "catch_all", or "unknown"
mx_okWhether the domain has a usable mail server (MX or fallback A record)
disposabletrue if the domain matches a known disposable/temporary email provider
role_accounttrue if the local part looks like a shared role mailbox (e.g. admin, support)
errorPresent when status is "invalid" or "unknown", or on a partial failure

Status meanings

StatusMeaning
validSyntax OK, domain has mail servers, and the mailbox was explicitly accepted (RCPT 2xx) by a non-catch-all server
invalidBad syntax, domain has no mail servers at all, or the mail server explicitly rejected the mailbox (RCPT 5xx)
catch_allThe mail server accepts any recipient at this domain, so individual mailbox existence cannot be confirmed
unknownThe check could not be completed — DNS timeout, connection refused/timed out, port 25 blocked, greylisting, or a temporary (4xx) SMTP response. Connection failures are always reported as unknown, never invalid.

Pricing

EventCost
Actor start$0.02
Email Verified$0.001

Typical run cost: 1,000 emails ≈ $0.02 + 1,000 × $0.001 = $1.02.

Limitations

  • Outbound port 25 is frequently blocked by cloud providers (including many hosting/PaaS platforms) to prevent spam. If SMTP connections are blocked in your run environment, most results will come back as unknown rather than valid/invalid — this is expected behavior for the "never guess invalid on connection failure" safety rule, not a bug.
  • Some large providers (e.g. Gmail, Outlook) intentionally delay or obscure RCPT-level rejections for anti-enumeration reasons, which can also surface as unknown or false catch_all results.
  • Per-mail-server throttling (minimum 1-second gap between connections to the same MX host) means verifying thousands of addresses at the same domain will take proportionally longer — this is intentional to avoid being blocklisted.
  • The disposable-domain list is a fixed embedded snapshot (~65 domains) and will not catch brand-new or obscure temporary-email providers.
  • No retries are performed on transient failures; re-run the Actor with the unknown subset if you need another attempt.

Use Cases

  • Clean email lists before a marketing campaign to reduce bounce rates
  • Validate signup-form submissions asynchronously
  • Enrich CRM contact records with deliverability and role-account flags
  • Pre-filter disposable-email signups for fraud/abuse prevention