Email Validator: Syntax, Domain, MX, Disposable & Typo Check avatar

Email Validator: Syntax, Domain, MX, Disposable & Typo Check

Pricing

from $0.30 / 1,000 emails

Go to Apify Store
Email Validator: Syntax, Domain, MX, Disposable & Typo Check

Email Validator: Syntax, Domain, MX, Disposable & Typo Check

Validate email lists in bulk: syntax, typos (gmial.com), disposable and role addresses, free providers, domain and MX records, mail provider (Google, Microsoft, IONOS...). Fast pre-filter, no SMTP, pay per email.

Pricing

from $0.30 / 1,000 emails

Rating

0.0

(0)

Developer

Tim Tonat

Tim Tonat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Email Validator do?

This Actor validates email lists in bulk without sending a single email. For every address you get a status (valid, invalid, risky, unknown), a reason, a score from 0 to 100 and the individual checks:

  • Syntax check close to RFC 5321/5322, including international domains (müller.de) and Name <email> / mailto: input
  • Typo suggestions for common providers: gmial.com → gmail.com, hotmial.de → hotmail.de, firma.con → firma.com
  • Domain and MX records: domain exists, has mail servers, or explicitly accepts no mail (null MX)
  • Disposable / temporary email domains (about 10,000 known services, subdomains included)
  • Role accounts (info@, sales@, kontakt@, …) and no-reply addresses
  • Free providers (Gmail, Outlook, GMX, WEB.DE, …) to separate business from private addresses
  • Mail provider detected from the MX records: Google Workspace, Microsoft 365, IONOS, Strato, Hornetsecurity, Proofpoint and more

You get one row per input row in the original order, so the result lines up with your spreadsheet. Duplicates are marked and not charged again.

Why use this email validator?

  • Clean lists before a campaign: remove addresses whose domain doesn't exist or doesn't accept mail
  • Pre-filter before paid SMTP verification: drop the obviously bad addresses here for a fraction of the price, then verify only the rest
  • Fix typos in sign-up and CRM data with the suggested correction
  • Block disposable addresses in lead lists and trial sign-ups
  • Segment B2B leads by mail provider: Microsoft 365 vs. Google Workspace vs. local hosters
  • Fast and cheap: no proxies, no browser, each domain is looked up only once per run

What it does not do

This Actor does not connect to the recipient's mail server (no SMTP "mailbox exists" check), because cloud platforms block outgoing port 25. So it can tell you that max@company.com has a valid domain with working mail servers, but not whether the mailbox max exists. Use it as the first, cheap stage of list cleaning.

Status and reasons

StatusReasonMeaningScore
validOKValid syntax, domain has mail servers100
validROLE_ACCOUNTValid, but a shared role address like info@80
riskyNO_MX_RECORDDomain has no MX record, only an A record. Mail servers may still deliver, but often nobody reads it50
riskyPOSSIBLE_TYPODomain is one keystroke away from a big provider, see suggestion20
riskyDISPOSABLEDisposable / temporary email service10
riskyNO_REPLY_ADDRESSnoreply@, do-not-reply@, mailer-daemon@ …10
invalidINVALID_SYNTAXNot an email address0
invalidDOMAIN_NOT_FOUNDThe domain does not exist0
invalidDOMAIN_ACCEPTS_NO_MAILThe domain publishes a null MX record (RFC 7505)0
invalidNO_MAIL_SERVERThe domain has neither MX nor A records0
unknownDNS_ERRORDNS did not answer (timeout, server failure). Try again later–

How to validate an email list

  1. Click Try for free.
  2. Paste your addresses into Email addresses, one per line (or upload them via the API).
  3. Click Start.
  4. Open the Overview table, or download everything as CSV, Excel or JSON. The Summary shows counts by status, reason and mail provider.

How much does it cost?

This Actor uses pay per event: a fixed price per unique validated address, and platform usage is included. The current price is shown in the Pricing tab. Free: duplicates, rows that are not an email address at all (like a CSV header), and addresses whose domain could not be checked because of a DNS error.

Input

{
"emails": ["info@apify.com", "someone@gmial.com", "test@mailinator.com", "not-an-email"]
}

Output

{
"email": "someone@gmial.com",
"normalizedEmail": "someone@gmial.com",
"status": "risky",
"reason": "POSSIBLE_TYPO",
"score": 20,
"suggestion": "someone@gmail.com",
"domain": "gmial.com",
"mailProvider": null,
"mxRecords": [],
"isValidSyntax": true,
"isDisposable": true,
"isRole": false,
"isFreeProvider": false,
"hasMx": false,
"requiresSmtpUtf8": false,
"isDuplicate": false,
"error": null
}

All Actors by Veedel Digital: apify.com/veedel_digital

FAQ

Where does the disposable domain list come from?

From the open-source project disposable-email-domains (CC0 public domain), bundled with the Actor.

Why is info@ "valid" and not "risky"?

In B2B, and especially for small companies, info@ is often the only published address and it is read. The isRole flag and the lower score let you filter role accounts if you don't want them.

Something does not work

Please open an issue in the Issues tab with an example address and the run ID. You can also start the Actor programmatically from the API tab.