Email Verification MX Checker — Syntax, DNS & SMTP avatar

Email Verification MX Checker — Syntax, DNS & SMTP

Pricing

from $0.035 / actor start

Go to Apify Store
Email Verification MX Checker — Syntax, DNS & SMTP

Email Verification MX Checker — Syntax, DNS & SMTP

Verify email addresses with multi-layer checks: syntax validation, MX record lookup, SMTP mailbox verification, disposable domain detection, role-based detection, and domain typo suggestions.

Pricing

from $0.035 / actor start

Rating

0.0

(0)

Developer

Perry AY

Perry AY

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share

Email Verification MX Checker — Syntax, DNS & SMTP

Verify email addresses with multi-layer checks including syntax validation, MX record lookup, SMTP mailbox verification, disposable domain detection, and typo suggestions. Whether you're cleaning a mailing list, validating sign-up forms, or checking lead quality, this actor provides comprehensive email verification in a single run.


What does it do?

This actor verifies email addresses through multiple layers of checks. It starts with syntax validation to catch obviously malformed addresses, then performs DNS MX record lookups to confirm the domain can receive email. For the most accurate results, it attempts SMTP verification by connecting directly to the recipient's mail server and checking whether the mailbox actually exists — without sending an actual email.

Additional checks include detecting disposable email domains (Mailinator, TempMail, etc.), identifying role-based addresses (admin@, info@, support@), and suggesting corrections for common domain typos (gmial.com → gmail.com). Each email receives a numeric score (0-100) and a clear verdict that helps you decide how to handle it.

Features

  1. Syntax validation — Checks email format, length limits, allowed characters, and structural rules per RFC 5321/5322.
  2. MX record lookup — Queries DNS for mail exchanger records using the dig command. Falls back to socket resolution if dig is unavailable.
  3. SMTP mailbox verification — Connects to the mail server, performs EHLO/HELO, issues MAIL FROM, and checks RCPT TO to verify the mailbox exists without sending email.
  4. Disposable domain detection — Checks against a built-in database of 80+ known disposable email providers.
  5. Role-based detection — Flags common role addresses (admin, info, support, sales, etc.).
  6. Domain typo suggestions — Recognizes 25+ common domain typos and suggests corrections.
  7. Confidence scoring — Each email receives a 0-100 score with a clear verdict label.
  8. Batch processing — Verify hundreds of email addresses concurrently with configurable worker count.
  9. Error resilience — Per-email error isolation. A timeout or DNS failure for one email doesn't affect others.

Why use this?

ProblemSolution
Your email list has high bounce ratesVerify emails before sending to identify undeliverable addresses
Users register with fake or disposable emailsDetect disposable domains and role-based addresses at sign-up
You're scoring leads from web scrapingVerify email quality before passing to sales
You need to clean a legacy mailing listBatch verify hundreds of emails in a single run
You want to catch typo errors in email collectionGet automatic domain typo suggestions
You need programmatic email validationIntegrate via API with documented cURL and Python examples

Who is it for?

PersonaWhat they use it for
Email MarketerCleaning mailing lists before campaigns to reduce bounce rates
Web DeveloperValidating email addresses at sign-up form submission
Data AnalystScoring lead quality by email deliverability
System AdministratorMaintaining user database hygiene
Sales OperationsVerifying prospect email addresses before outreach
Fraud AnalystDetecting disposable and role-based email registrations

Input Parameters

FieldTypeDefaultDescription
emailstringA single email address to verify
emailsarrayMultiple email addresses to verify in batch mode
verifySmtpbooleantrueEnable SMTP verification (connects to mail server to check mailbox existence). Disable for faster but less accurate results.
maxWorkersinteger10Maximum concurrent verifications. Range: 1-30.

Example Input JSON

{
"email": "user@gmail.com",
"verifySmtp": true
}

Example Batch Input

{
"emails": [
"user@gmail.com",
"test@mailinator.com",
"invalid-email",
"admin@company.com",
"nonexistent@example.com"
],
"verifySmtp": true,
"maxWorkers": 15
}

Output Format

FieldTypeDescription
emailstringThe email address that was verified
verdictstringOverall result: deliverable, likely_deliverable, undeliverable, risky_disposable, invalid_domain, invalid_syntax, uncertain
scoreintegerConfidence score 0-100
checksobjectDetailed per-layer check results

Verdict Meanings

VerdictScore RangeMeaning
deliverable85-100SMTP confirmed the mailbox exists
likely_deliverable70-84Syntax valid, domain has MX, not disposable
undeliverable0-10SMTP rejected the mailbox
risky_disposable50-65Valid address but using a disposable provider
invalid_domain50Syntax valid but domain has no MX/A records
invalid_syntax0Email format is invalid
uncertain50-69Could not fully verify, but not rejected

checks Object

CheckFieldsDescription
syntaxvalid, local_part, domain, errorRFC email format validation
disposabledisposableWhether domain is a known disposable provider
role_basedrole_basedWhether local part is a role-based address
typohas_typo, suggestion, suggested_emailDomain typo detection
mxhas_mx, mx_records, errorDNS MX record lookup results
smtpsmtp_status, smtp_response, errorSMTP verification results

Example Output JSON

{
"email": "user@gmail.com",
"verdict": "deliverable",
"score": 95,
"checks": {
"syntax": {
"valid": true,
"local_part": "user",
"domain": "gmail.com",
"error": null
},
"disposable": {
"disposable": false
},
"role_based": {
"role_based": false
},
"typo": {
"has_typo": false,
"suggestion": null
},
"mx": {
"has_mx": true,
"mx_records": [
{"priority": 5, "hostname": "gmail-smtp-in.l.google.com"},
{"priority": 10, "hostname": "alt1.gmail-smtp-in.l.google.com"}
],
"error": null
},
"smtp": {
"smtp_status": "deliverable",
"smtp_response": "RCPT accepted (code 250)",
"error": null
}
}
}

API Usage

cURL

curl -X POST "https://api.apify.com/v2/acts/perryay~email-verification-mx-checker/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "verifySmtp": false}'

Python (ApifyClient)

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("perryay~email-verification-mx-checker").call(
run_input={"emails": ["user@gmail.com", "test@mailinator.com"]}
)
dataset = client.dataset(run["defaultDatasetId"]).list_items()
for item in dataset.items:
print(f'{item["email"]}: {item["verdict"]} (score: {item["score"]})')

Use Cases

  1. Email list cleaning — Before a marketing campaign, run your subscriber list through the checker to remove invalid and disposable addresses. Reduce bounce rates and protect sender reputation.

  2. Sign-up validation — Integrate into your registration flow to detect fake or disposable email addresses at sign-up. Reject role-based addresses for personal accounts or flag them for review.

  3. Lead scoring — When scraping leads from the web, verify each email's deliverability before passing to sales. Prioritize high-scoring leads and flag suspicious ones for manual review.

  4. User database hygiene — Periodically check your user database for invalid emails resulting from expired domains or deleted accounts. Proactively reach out to affected users to update their contact information.

  5. Fraud detection — Disposable email providers are commonly used for fraudulent registrations, spam accounts, and review manipulation. Flag or block disposable addresses at registration.

  6. Typo recovery — A user types "gmial.com" instead of "gmail.com". Catch the typo at the point of entry and suggest the correction before the email is saved, preventing future delivery failures.

  7. Bulk domain migration verification — When migrating email from one provider to another, batch-verify all user emails to identify accounts that may have been lost or misconfigured during migration.

FAQ

Q: Does SMTP verification send an email to the address? A: No. SMTP verification uses the SMTP protocol's RCPT TO command, which checks whether the mail server will accept mail for that address without actually delivering a message. The connection is closed before any email is sent.

Q: How fast is email verification? A: Syntax-only checks are instant. MX lookups take 1-3 seconds per domain. SMTP verification takes 3-10 seconds per email depending on mail server responsiveness. With 10 concurrent workers, a batch of 100 emails typically completes in 30-60 seconds.

Q: Why would SMTP verification fail for a valid email? A: Some mail servers reject RCPT TO verification from unknown senders, return generic responses to prevent address harvesting, or require STARTTLS which the basic SMTP check doesn't support. These emails will show as "uncertain" rather than undeliverable.

Q: What domains are considered disposable? A: The actor checks against a built-in list of 80+ known disposable email providers including Mailinator, Guerrilla Mail, TempMail, 10 Minute Mail, YopMail, TrashMail, and others. The list is included in the code and can be extended if needed.

Q: What is a "role-based" email? A: Role-based addresses are generic addresses like admin@, info@, support@, sales@, contact@, and postmaster@. These are often shared among multiple people and are not tied to a specific individual. They are flagged but not rejected.

Q: Can I use this actor without SMTP verification? A: Yes. Set verifySmtp to false for faster results. The actor will still perform syntax validation, MX record lookup, disposable detection, role-based detection, and typo checking. The verdict will be based on these checks alone.

Q: How does the score work? A: The score starts at 50 for passing syntax validation. MX records add 20 points. Not being disposable adds 15 points. SMTP deliverability adds 15 points. The maximum is 100. A score below 50 indicates invalid syntax or SMTP rejection.

Q: What happens if a domain doesn't have MX records? A: The actor falls back to checking for A/AAAA records. If neither exists, the verdict is "invalid_domain". If only A records exist, the domain is noted as possibly unable to receive email but not definitively invalid.

Q: What is the maximum number of emails I can check in one run? A: There is no hard limit, but runs are subject to the actor's timeout (default 300 seconds). With 10 workers, a batch of 500 emails typically completes within timeout. For larger lists, increase the timeout or process in multiple runs.

Q: Does the actor work with international email addresses? A: The syntax validator handles standard ASCII email addresses per RFC rules. Full internationalized email (EAI/RFC 6531) support is limited. Non-ASCII characters in the local part or domain may be flagged as invalid.

Q: Can SMTP verification get my IP blocked? A: SMTP verification connects to mail servers and issues standard protocol commands (EHLO, MAIL FROM, RCPT TO). This is normal SMTP protocol behavior and is unlikely to result in blocking. However, rapidly checking hundreds of addresses against the same mail server may trigger rate limiting.

Q: What's the difference between "deliverable" and "likely_deliverable"? A: "deliverable" means SMTP confirmed the mailbox exists. "likely_deliverable" means the email passed syntax and MX checks but SMTP verification was either skipped or inconclusive. Likely deliverable addresses are expected to receive email in most cases.

Usage & Billing

This actor uses Apify's PAY_PER_EVENT pricing model. You are charged per event:

Event NamePrice (USD)Trigger
apify-actor-start$0.035Charged on every actor start
email-verification$0.020Charged per email verified
smtp-verify$0.010Charged when SMTP verification is attempted
disposable-check$0.005Charged when a disposable domain is detected

Platform infrastructure costs (Apify's compute and storage) are passed through at cost.

MCP Integration

This actor can be used through the Apify MCP server. Once connected, your MCP client (Claude Desktop, Cursor, etc.) can discover and run this actor from the Apify Store.

Quick Start

  1. Install the Apify connector in your MCP client:

    • Claude Desktop: Search for "Apify" in the connector directory, or use the remote server at https://mcp.apify.com
    • Other clients: See the Apify MCP server docs for setup instructions
  2. Ask your AI assistant to use the actor.

Claude Desktop Configuration

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Bearer Token Alternative

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}