Email Verifier & Validator - MX, Syntax & Disposable Check avatar

Email Verifier & Validator - MX, Syntax & Disposable Check

Pricing

from $0.55 / 1,000 email checkeds

Go to Apify Store
Email Verifier & Validator - MX, Syntax & Disposable Check

Email Verifier & Validator - MX, Syntax & Disposable Check

Bulk email validation without sending anything: syntax, domain and MX records, disposable domains (10,000+), role accounts, free providers and typo suggestions. Result status, reason and score per address. No mailbox probing. Export CSV/JSON or call via API.

Pricing

from $0.55 / 1,000 email checkeds

Rating

0.0

(0)

Developer

Teddy Wasserman

Teddy Wasserman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

What does Email Verifier & Validator do?

Email Verifier & Validator checks a list of email addresses and tells you, for each one, whether it is worth sending to. It runs the checks that can be proven from public data: the syntax of the address, whether the domain exists, whether the domain publishes mail servers (MX records), whether the domain is a known disposable or throw-away provider, whether the address is a shared role account such as info@ or sales@, whether it uses a free provider such as Gmail, and whether the domain looks like a typo of a popular one (gmial.com, hotmial.com, yahho.com).

Every address gets one row with a clear status (valid, risky, invalid or unknown), a machine-readable reason, a 0-100 score and the individual flags, so you can filter a list in one click and export it as CSV, Excel or JSON, or call the actor from your own code through the Apify API.

What it does not do: it never connects to a mail server and never sends a message. It therefore cannot tell you whether the mailbox jane@company.com exists on that company's server. Tools that claim to do so rely on SMTP probing, which is unreliable (many servers accept everything or block probes) and can damage the reputation of the IP address doing the probing. This actor is the safe, cheap first pass that removes the addresses that are certain to bounce or that you should not mail, before you pay for anything heavier.

Why use Email Verifier & Validator?

  • Cut hard bounces. Invalid syntax, domains that do not exist and domains that explicitly refuse mail (null MX) are removed before you send.
  • Keep disposable signups out. The actor ships with the community-maintained disposable-email-domains blocklist (10,000+ domains, CC0 licence) and also matches subdomains of listed domains.
  • Fix typos instead of losing leads. someone@gmial.com is flagged with the suggestion someone@gmail.com, so a form submission can be corrected rather than discarded.
  • Fast and cheap. DNS answers are cached per domain, so a list of 10,000 addresses at 800 domains costs 800 DNS lookups. Typical speed is several hundred addresses per second.
  • No credentials, no accounts, no proxies. Everything is public DNS data.
  • Transparent. The reason tells you exactly why an address got its status; the mxHosts field shows the mail servers that were found.
  • Works in pipelines. Feed it the dataset of a contact scraper run, pass a pasted column of emails, or call it from n8n, Make, Zapier or your own application.

What data can you extract?

FieldDescription
emailThe address as you supplied it
normalizedEmailCleaned address with the domain lower-cased and internationalised domains converted to their ASCII (punycode) form
statusvalid, risky, invalid or unknown
reasonWhy: domain_accepts_email, role_account, possible_typo, disposable_domain, no_mx_but_address_record, domain_does_not_exist, domain_does_not_accept_email, dns_lookup_failed, or a syntax problem such as missing_at_sign
score0-100 deliverability confidence from public data only
syntaxValid / problemWhether the address is well-formed and what is wrong if not
domain, localPartThe two halves of the address
isDisposableThe domain (or a parent domain) is on the disposable blocklist
isRoleThe local part is a shared role such as info, sales, support, admin, noreply
isFreeProviderGmail, Outlook, Yahoo, iCloud, Proton, GMX and about 90 other consumer providers
suggestionA corrected address when the domain is one edit away from a popular provider
dnsStatusmx, implicit_mx (no MX but an address record), null_mx, no_mail_records, nxdomain or error
mxHostsUp to five MX hosts in priority order
checkedAtTimestamp of the check

What the statuses mean

  • valid: the syntax is correct, the domain publishes MX records, it is not disposable, not a role account and not a probable typo. This does not prove the mailbox exists.
  • risky: the domain accepts mail but something calls for care: a shared role account (low engagement, often a gatekeeper), a disposable domain, a probable typo, or a domain that relies on an address record instead of MX.
  • invalid: the address would bounce or cannot be an address: bad syntax, a domain that does not exist, or a domain that publishes no mail servers or a null MX (RFC 7505).
  • unknown: the DNS lookup failed on every resolver (rare). Run those addresses again.

How to use Email Verifier & Validator (step by step)

  1. Open the actor and paste your addresses into Email addresses (one per line), or paste any text into Or paste a text blob. You can also point the actor to an Apify dataset (for example the output of a contact scraper) with Dataset ID and the Email field name.
  2. Leave Remove duplicate addresses on. Duplicates are not charged.
  3. Click Start. A list of a few hundred addresses finishes in seconds.
  4. Open the Results tab. Filter on status, then export CSV, Excel or JSON.
  5. Send to valid, review risky (especially possible_typo rows, where the suggestion is usually right), drop invalid.

The default input checks three example addresses and finishes in a few seconds, so you can see the output format before using your own list.

Input example

{
"emails": ["info@apify.com", "someone@gmial.com", "test@mailinator.com", "bad@@example.com"],
"deduplicate": true,
"maxEmails": 10000
}

Reading the addresses from the output of another run:

{
"datasetId": "YOUR_DATASET_ID",
"emailField": "email"
}

Output example

{
"type": "email",
"email": "someone@gmial.com",
"normalizedEmail": "someone@gmial.com",
"syntaxValid": true,
"problem": null,
"domain": "gmial.com",
"localPart": "someone",
"isDisposable": true,
"isRole": false,
"isFreeProvider": false,
"suggestion": "someone@gmail.com",
"dnsStatus": "implicit_mx",
"mxHosts": [],
"status": "risky",
"reason": "possible_typo",
"score": 35,
"checkedAt": "2026-11-11T18:00:00Z"
}

How much does it cost?

Email Verifier & Validator uses pay-per-event pricing.

EventPrice (Free plan)When it is charged
Actor start$0.0005Once per run
Email checked$0.001 ($1 per 1,000 emails)Every address that was checked

Duplicates, empty lines and rows that only report a problem reading a dataset are free. Paid Apify plans get Store discounts (Bronze −15%, Silver −30%, Gold and up −45%).

Worked examples (Free plan prices):

  • A 500-address signup export: about $0.50.
  • A 10,000-address newsletter list: about $10.
  • Checking each new lead from a webhook: one address per run costs $0.0015 including the start fee; batch addresses in one run to avoid paying the start fee each time.

You can set a maximum total charge for the run in the Apify run options; the actor stops cleanly when the limit is reached.

Use cases

  • Clean a mailing list before an outreach or newsletter campaign to protect your sender reputation.
  • Check leads exported from a CRM, a form tool or a scraper; combine with the Website Contact Scraper to find and check company emails in one flow.
  • Block disposable signups by calling the actor from your registration backend.
  • Repair typos in lead forms and event registrations using the suggestion field.
  • Audit a database for role accounts, free-provider addresses and dead domains.
  • Enrich B2B lists: isFreeProvider separates company addresses from personal ones.

Use with AI agents, MCP and the API

You can run the actor from the Apify API, the JavaScript and Python clients, n8n, Make, Zapier or any MCP-capable agent through Apify's MCP server. A minimal call with the Python client:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("teddythebuilder/email-verifier").call(run_input={"emails": ["jane@example.com", "bob@mailinator.com"]})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["email"], row["status"], row["reason"])

The dataset is flat JSON, so an agent can read it directly: filter on status == "valid" and use suggestion to propose a correction to the user.

Integrations

Use Apify's integrations to send the results to Google Sheets, Airtable, Slack, a webhook or a database, or to start a run automatically when a new lead arrives. Schedule the actor to re-check a list every month, because domains expire and mail setups change.

Data source and legality

All checks use public information: the syntax rules of RFC 5321/5322, public DNS answers (MX, A and AAAA records) fetched through DNS-over-HTTPS from Cloudflare with Google Public DNS as fallback, and the open disposable-email-domains blocklist, released under CC0 1.0. The actor never contacts the mail servers of the addresses you submit, never sends email and stores nothing beyond the run's dataset.

Email addresses can be personal data. You are responsible for having a lawful basis (for example legitimate interest or consent) to process and to contact the people in your list, and for following anti-spam rules such as GDPR, ePrivacy, CAN-SPAM and CASL.

FAQ

Can it tell me whether a specific mailbox exists? No. Confirming a mailbox requires an SMTP conversation with the recipient's server. Large providers answer the same for every address, many company servers accept everything and then bounce later, and probing from shared IP addresses gets those addresses blocklisted. This actor does not do it, on purpose. It tells you what is certain: which addresses cannot work and which need care.

Why is a Gmail address valid even if the account does not exist? Because a public DNS lookup can only confirm that the domain is set up to receive mail. If you need mailbox-level confirmation, use an SMTP-based verifier on the addresses that this actor marks valid; you will pay for fewer addresses there.

Why is info@company.com marked risky? Role accounts are usually shared inboxes. They are deliverable but have lower engagement and a higher complaint rate for cold outreach. Filter them out or keep them as you wish.

What is the difference between invalid and risky? invalid means the address cannot receive mail (bad syntax, no such domain, no mail servers). risky means it probably can, but there is a reason to be careful.

What happens with internationalised addresses? Domains in non-Latin scripts are converted to punycode (müller.de becomes xn--mller-kva.de) and checked normally. Non-ASCII local parts are accepted when they contain no forbidden characters.

What if DNS lookups fail? The actor retries and falls back to a second resolver. If both fail, the row is unknown and you can re-run it.

How is the score calculated? It is a simple, fixed mapping from the checks: 90 for a clean address on a domain with MX records, 65 for a domain with only an address record, 60 for a role account, 35 for a probable typo, 15 for a disposable domain, 5 or 0 for invalid. It is a sorting aid, not a probability.

Is there a limit on the list size? Up to 1,000,000 addresses per run (default 10,000). Large lists are processed in batches of 200 with 25 parallel checks.

How often is the disposable list updated? It is bundled at build time and refreshed with each new version of the actor.

Changelog and support

  • 1.0 (November 2026): first release. Syntax, MX, disposable (10,000+ domains), role accounts, free providers, typo suggestions, dataset input.

Questions or feature requests? Open an issue on the actor page. We reply within 24 hours.