Email Validator: Bulk MX, Disposable & Typo Check avatar

Email Validator: Bulk MX, Disposable & Typo Check

Pricing

from $0.50 / 1,000 email checkeds

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

Email Validator: Bulk MX, Disposable & Typo Check

Bulk email validator and email list cleaner: syntax check, domain and MX lookup, disposable and free-provider detection, role accounts and typo suggestions. Never contacts the mailbox, so your sender reputation stays safe.

Pricing

from $0.50 / 1,000 email checkeds

Rating

0.0

(0)

Developer

Aditya Sapra

Aditya Sapra

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

Email Validator is a bulk email validator and email list cleaner. For every address you get a clear verdict and the reasons behind it: is it well formed, can its domain receive mail, is it a throwaway address, a role account like info@, or a likely typo of a well-known domain?

It checks everything that can be checked without ever contacting the recipient's mail server. No test emails, no mailbox probing, nothing that could hurt your sender reputation or the recipient. Use it to clean signup lists, CRM exports and cold-email lists before you send, or call it from your signup form through the API.

What is it good for?

  • Marketing and sales teams: clean a list before you send, to protect your sender reputation.
  • Signup forms and CRMs: block throwaway addresses and catch typos like gmial.com.
  • Agencies: hand clients cleaner lists.
  • Developers: a pay-per-address validation API with no subscription.

Try it in 30 seconds

  1. Press Start: the input is prefilled with real examples.
  2. Open the Output tab and download JSON, CSV or Excel.
  3. Replace the examples with your own and run again. You pay about $0.50 per 1,000 emails.

A taste of the output

EmailVerdictWhySuggested fix
john.doe@gmial.comriskyno_mx_record_uses_address_record, possible_typo, disposable_domainjohn.doe@gmail.com

The full record has more fields; see the example output further down.

What does Email Validator check?

CheckWhat it tells you
SyntaxRFC-compliant format, length limits (64 / 254), internationalised addresses (ünï@bücher.de)
Domain and MXWhether the domain exists and publishes mail servers (with the standard fallback to the domain's own address record, and detection of "null MX" domains that refuse mail)
Disposable domainsAbout 9,000 known throwaway-mailbox services (Mailinator and similar)
Free providersGmail, Yahoo, Outlook and ~100 more, flagged so you can tell personal from business addresses
Role accountsinfo@, support@, sales@, noreply@ and similar shared mailboxes
Typo suggestionsjohn@gmial.com becomes john@gmail.com, .con and .cmo endings are fixed too

What does it not do?

It does not tell you whether a specific mailbox exists (jane@company.com versus jjane@company.com). That needs an SMTP conversation with the recipient's server, which this Actor never starts. valid means "well formed, and its domain accepts mail". If you need mailbox-level proof, use this Actor first to remove the obvious junk, then a mailbox-verification service for what is left.

How do I validate an email list?

  1. Paste addresses, one per line (commas, semicolons and spaces also separate them). Duplicates are removed and charged once.
  2. Run it and download JSON, CSV or Excel, or call it through the API from your signup form or CRM.

Example input

{
"emails": ["hello@apify.com", "test@gmail.com", "info@mailinator.com", "john.doe@gmial.com", "not-an-email"],
"checkMx": true,
"detectDisposable": true,
"suggestTypoFixes": true
}

What does the output look like?

One record per address, in the order you supplied them:

{
"email": "john.doe@gmial.com",
"normalized": "john.doe@gmial.com",
"status": "risky",
"reasons": [
"no_mx_record_uses_address_record",
"possible_typo",
"disposable_domain"
],
"error": null,
"validSyntax": true,
"localPart": "john.doe",
"domain": "gmial.com",
"isDisposable": true,
"isFreeProvider": false,
"isRoleAccount": false,
"hasMx": false,
"mxHosts": [],
"suggestion": "john.doe@gmail.com",
"mailboxChecked": false
}

What do the status values mean?

statusMeaning
validWell formed, and the domain accepts mail
riskyWell formed and the domain accepts mail, but it is a disposable domain, a role account, or a likely typo
undeliverableInvalid syntax, or the domain does not exist or cannot receive mail
unknownThe DNS lookup failed temporarily. Try again later

reasons lists every finding: invalid_syntax, domain_not_found, no_mail_server, domain_does_not_accept_email, dns_lookup_failed, disposable_domain, role_account, possible_typo, no_mx_record_uses_address_record. The flags isDisposable, isRoleAccount and isFreeProvider let you decide for yourself, for example keep role accounts for support mailings but drop them for sales outreach.

mailboxChecked is always false, to make the limit above explicit in the data itself.

How much does it cost to validate emails?

You pay per address checked: $0.0005 per email, about $0.50 per 1,000 emails, plus a tiny fixed fee per run. Duplicates are removed and charged once. Apify bills the platform usage of the run (compute) on top, which is normally a small fraction of the per-address price. Max addresses to check is a hard cap on the cost of a run, and the run also stops if it reaches the maximum charge you set in the run options. The Pricing tab always shows the current rate.

Can I use Email Validator through the API?

Yes. Like every Apify Actor it can be started from code, scheduled in the Apify Console, or connected to Make, Zapier, n8n, Google Sheets and webhooks through Apify integrations, for example to check every new signup or CRM contact automatically.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run_input = {
"emails": [
"hello@apify.com",
"test@gmail.com",
"john.doe@gmial.com"
]
}
run = client.actor("cyborg_cell/email-validator").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const input = {
"emails": [
"hello@apify.com",
"test@gmail.com",
"john.doe@gmial.com"
]
};
const run = await client.actor('cyborg_cell/email-validator').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL

curl -X POST "https://api.apify.com/v2/acts/cyborg_cell~email-validator/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"emails": ["hello@apify.com", "test@gmail.com", "john.doe@gmial.com"]}'

FAQ

Is this an email verifier that checks whether the mailbox exists?

No. It validates syntax and domain, flags disposable domains, free providers and role accounts, and suggests typo fixes, but it never talks to the recipient's mail server, so it cannot confirm that a specific mailbox exists. That is also why it is safe to run on any list: nothing is sent and nothing can bounce.

Can I use it as a disposable email checker?

Yes. Every address is compared with about 9,000 known throwaway-mailbox domains (Mailinator and similar). Matches get isDisposable: true, the reason disposable_domain and the status risky, so you can drop them from a signup list or a mailing.

Is there an MX record checker built in?

Yes. The Actor looks up the mail servers (MX records) of every domain, falls back to the domain's own address record the way mail software does, and detects "null MX" domains that refuse mail. Domains without a working mail setup are marked undeliverable.

Does it work as an email syntax checker?

Yes. Syntax is checked against the RFC rules, including length limits (64 characters before the @, 254 in total) and internationalised addresses. Invalid addresses are marked undeliverable with the reason invalid_syntax.

Can it clean an email list?

Yes, that is the main use. Paste the list, run it, then keep the rows with status valid (and decide about risky ones such as role accounts) and drop the rest. Duplicates are removed for you.

Will it hurt my sender reputation?

No. The Actor sends no email and makes no SMTP connection. It only looks up the DNS records of the domains in your list.

How many addresses can I check in one run?

Up to 100,000 addresses per run by default; raise Max addresses to check to go up to 1,000,000. Domain lookups are cached, so a list with thousands of addresses at the same few domains is fast.

Where does the disposable-domain list come from?

From the community-maintained disposable-email-domains list (public domain, CC0), snapshot of 4 October 2026, refreshed whenever this Actor is updated.

Could a real company domain be "corrected" by mistake?

No. Typo suggestions are only offered for well-known domains such as Gmail, Yahoo and Outlook.

Is it safe for personal data?

The Actor only processes the addresses you submit, sends nothing to them and keeps nothing after your run besides the results you download. You are responsible for having a lawful basis to process the addresses you submit and for how you use the results.

A verdict looks wrong, or a disposable domain was missed. What now?

Open an issue on the Actor page with the address (or just its domain) and we will look at it.

Other Actors by the same author