Email Verifier: Syntax, MX, Disposable & Role Check avatar

Email Verifier: Syntax, MX, Disposable & Role Check

Pricing

$0.30 / 1,000 email verifieds

Go to Apify Store
Email Verifier: Syntax, MX, Disposable & Role Check

Email Verifier: Syntax, MX, Disposable & Role Check

Check email lists without sending mail: syntax, domain and MX records (with A-record fallback and null MX), disposable domains, free providers, role accounts and typos like gmial.com, with one plain verdict per address. DNS only, from $0.30 per 1,000.

Pricing

$0.30 / 1,000 email verifieds

Rating

0.0

(0)

Developer

Michael Shanker

Michael Shanker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Give it a list of email addresses and get back one row per address with a plain verdict and a short reason: is the address well formed, does the domain exist, does it have a mail server (MX records), is it a disposable (throwaway) inbox, a free provider like Gmail or Outlook, a role account like info@ or noreply@, or a likely typo like gmial.com (with the fix suggested).

It works from DNS only. No email is sent and no mail server is ever contacted, which is why it's fast, cheap ($0.30 per 1,000), and never touches the recipient's mail server or puts your IP address on a blocklist.

Who it's for

  • Sign-up forms and CRMs: catch typos (hotmial.com), throwaway addresses and dead domains before they get into your list.
  • Sales and marketing ops: clean a lead list before an email campaign, and split role inboxes (info@, sales@) from people's own addresses.
  • Developers: a cheap first-pass filter before a paid mailbox (SMTP) check, run from the API, Zapier, Make or n8n.

What it checks

CheckHow
SyntaxPractical RFC 5321/5322 rules: one @, an unquoted local part (letters, digits, .!#$%&'*+/=?^_\{|}~-, no leading, trailing or double dots, 64 characters at most), a real internet domain name, 254 characters at most. Internationalised domains (münchen.de) work. Quoted local parts, comments and IP-address domains are reported as invalid because almost no real system accepts them. Reserved names (.local, .internal, .test, localhost`) are refused.
Domain existsA DNS lookup. "Does not exist" (NXDOMAIN) gives domain_not_found.
MX recordsSorted by priority. With no MX record, the domain's own A/AAAA address is used as an implicit mail server, as RFC 5321 allows (mxSource: a_record_fallback). A null MX (0 ., RFC 7505: "this domain takes no mail") and MX records pointing to localhost or private addresses give no_mail_server.
DisposableThe domain, or a parent of it, is on the bundled disposable-email-domains list (10,143 domains such as mailinator.com, yopmail.com, guerrillamail.com).
Free providerAbout 160 consumer mailbox domains: Gmail, Outlook/Hotmail/Live, Yahoo, iCloud, AOL, Proton, GMX, Yandex, Mail.ru, QQ, 163 and big national webmail and ISP domains.
Role accountThe part before the @ (ignoring a +tag) is a shared inbox: info, sales, support, admin, contact, hello, billing, hr, jobs, press, noreply/no-reply, postmaster, webmaster and about 90 more, including forms like customer.service and support-team.
Likely typoOne keystroke from a big provider (gmial.com, yaho.com, hotmial.com, outlok.com), a wrong ending (gmail.con, hotmail.co) or a missing dot (gmailcom). Real look-alike providers (mail.com, email.com, ymail.com, gmx.com) are never "corrected".

Verdicts

verdictMeaningCharged
valid_domainThe domain exists and has a mail server. The mailbox itself is not checked.Yes
likely_typoThe domain answers in DNS but looks like a misspelt provider; see typoSuggestion and suggestedEmail.Yes
disposableA throwaway inbox service.Yes
no_mail_serverThe domain exists but takes no mail (null MX, no MX and no address, or an MX pointing nowhere).Yes
domain_not_foundThe domain doesn't exist. A typo hint is added to the reason when there is one.Yes
invalid_syntaxThe address is malformed; reason says how. No DNS lookup is made.No
unknownDNS didn't answer, even after a retry. Run the address again later.No

When more than one applies, the first in this order wins: domain_not_found, no_mail_server, likely_typo, disposable, valid_domain. The flags (disposable, freeProvider, roleBased, typoSuggestion) are always filled in on their own, so you can filter on them whatever the verdict.

How it compares

This toolA typical SMTP mailbox verifier
Syntax, domain and MX checksYesYes
Disposable, free-provider, role and typo flagsYes, every rowVaries
Confirms the mailbox exists, detects catch-all domainsNoYes, when the receiving server cooperates
Contacts the recipient's mail serverNeverYes, on port 25
SpeedThousands of addresses a minute; each domain is looked up once per runSlower: one server conversation per address, and some servers delay or block it
Price$0.30 per 1,000, malformed and unknown rows freeStore prices we saw run from about $0.89 to $5 per 1,000

Use this tool to remove the obviously bad addresses cheaply; use a mailbox verifier afterwards if you need to know that a specific person's inbox exists.

Input

FieldWhat it does
Email addresses (emails)One per line. Jane Doe <jane@acme.com>, mailto:info@acme.com and wrapping quotes are cleaned up.
Or paste a list (emailsText)Addresses separated by new lines, commas or semicolons, e.g. a spreadsheet column. Added to the list above.
DNS lookups at once (maxConcurrency)Domains looked up in parallel (default 20, max 100).

Up to 100,000 different addresses per run. Repeats are checked once: the domain part is compared without regard to capitals, the part before the @ as typed.

{
"emails": ["info@acme.com", "jane.doe@gmial.com", "test@mailinator.com"],
"emailsText": "sales@example.org\nsupport@acme.com"
}

Output

One row per address (values illustrative):

{
"input": "Jane Doe <jane.doe@gmail.com>",
"email": "jane.doe@gmail.com",
"localPart": "jane.doe",
"domain": "gmail.com",
"verdict": "valid_domain",
"reason": "gmail.com accepts email: 5 MX records, first gmail-smtp-in.l.google.com. The mailbox itself is not checked.",
"syntaxValid": true,
"domainExists": true,
"mailServerFound": true,
"mxRecords": [
{"priority": 5, "host": "gmail-smtp-in.l.google.com"},
{"priority": 10, "host": "alt1.gmail-smtp-in.l.google.com"}
],
"mxSource": "mx",
"disposable": false,
"freeProvider": true,
"roleBased": false,
"typoSuggestion": null,
"suggestedEmail": null,
"checkedAt": "2026-11-04T10:12:01+00:00"
}

mxSource is mx (real MX records), a_record_fallback (implicit MX from the A/AAAA record), null_mx, mx_points_nowhere or none, and empty when the domain wasn't found or DNS failed. domainExists and mailServerFound are empty (null) when they couldn't be checked.

Rows keep the order of your input. Download as JSON, CSV or Excel, or send results to Google Sheets, Zapier, Make or n8n. The run also saves a SUMMARY record with counts per verdict, the flags, how many addresses were charged, the DNS lookups made and whether the spending cap stopped the run.

Pricing

Pay per event: $0.0003 per address with a DNS-based verdict ($0.30 per 1,000), that is every valid_domain, likely_typo, disposable, no_mail_server and domain_not_found row. invalid_syntax and unknown rows are free. No start fee. Set a maximum charge per run in the run options and the Actor stops cleanly before going over it (no address is looked up that the cap couldn't pay for).

Good to know

  • No mailbox check. Without talking to the receiving mail server there's no way to know whether jane@acme.com exists, or whether acme.com accepts mail for any name (catch-all). A valid_domain verdict means mail to that domain has somewhere to go, not that this person's inbox exists. It's also why the tool is cheap, quick and can't harm your sending reputation.
  • DNS sources. Lookups go to public resolvers (Cloudflare 1.1.1.1, Google 8.8.8.8, Quad9 9.9.9.9) with short timeouts; if plain DNS is blocked where the Actor runs, it switches once per run to the system resolver, then to DNS over HTTPS (Cloudflare, then Google). A timeout or server failure is retried once. Each domain is looked up once per run however many addresses share it.
  • MX hosts aren't looked up. The tool checks that the domain names a mail server, not that the named server answers.
  • Disposable list. Bundled from the disposable-email-domains project (file disposable_email_blocklist.conf, main branch, downloaded 2026-11-04, 10,143 domains), released under CC0 1.0 (public domain). New throwaway services appear all the time, so a few will be missing; the list is not downloaded at run time. Some typo domains (like gmial.com) are on it too; those get likely_typo with the disposable flag set.
  • Typos are only suggested towards about 40 big mailbox providers, never for company domains.
  • Role and free-provider lists are heuristics for filtering, not judgments: a small business may well use a Gmail address.

Responsible use

Use it on addresses you have a reason to hold, such as your own sign-ups, customers or leads, and follow the email and privacy laws that apply to you (for example GDPR, CAN-SPAM and CASL). The tool reads only public DNS records and makes no other network request.

This Actor isn't affiliated with or endorsed by any email provider, DNS provider or the disposable-email-domains project.

More tools from the same developer