Bulk Email Address Validator — No Signup avatar

Bulk Email Address Validator — No Signup

Pricing

$6.00 / 1,000 email checkeds

Go to Apify Store
Bulk Email Address Validator — No Signup

Bulk Email Address Validator — No Signup

Clean an email list before a campaign or a CRM import: syntax, a live MX lookup, disposable-domain matching, role-account detection and typo suggestions such as gmial.com to gmail.com. No signup and no third-party API. No SMTP handshake, so mailbox existence is never claimed.

Pricing

$6.00 / 1,000 email checkeds

Rating

0.0

(0)

Developer

Comall Agency

Comall Agency

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Email Address Validator — Clean Lists, No Signup

Clean a list of email addresses before a campaign send, a CRM import or a signup flow. One pass gives you syntax, a real DNS check on the domain, disposable-address detection, role-account detection and a typo suggestion.

No signup, no third-party validation API, no key to go and create. Every signal is either pure computation or a direct DNS query against the domain's own nameservers.

What it checks, per address

  • Syntax — the pragmatic subset of RFC 5322 that mainstream validators actually use in practice.
  • MX records — a live DNS lookup on the domain. has_mx: false means the domain genuinely cannot receive mail, which is a far stronger signal than syntax alone.
  • Disposable domains — matched against the community-maintained disposable-email-domains project, plus a handful of domains added by hand that the community list was missing.
  • Role accountsinfo@, support@, sales@, noreply@ and similar. These are usually valid addresses that you still do not want in a marketing list.
  • Typo suggestiongmial.comgmail.com, using edit distance against major providers, including French ones (orange.fr, free.fr, laposte.net, wanadoo.fr, sfr.fr). A suggestion is only offered when the domain is within a small edit distance, so genuinely different domains are left alone.

The quality score

Every address gets a quality_score from 0 to 100 and a quality_grade of good, risky or bad — the single column you can sort or filter a list on. score_reasons always spells out, in plain English, every deduction that was applied, so any score can be checked by hand.

SituationScore
Syntax is not a valid email0 (bad)
Domain has no MX record — cannot receive mail0 (bad)
Disposable / throwaway provider10 (bad)
Domain looks like a typo of a major provider−35
Role address (info@, support@…)−25
Free consumer mailbox (gmail.com, orange.fr…)−5
Nothing against it100 (good)

Grades: good ≥ 70, risky 30–69, bad < 30. A row whose DNS lookup failed on our side scores null and grades unknown — and is not charged.

What this score is not. It is not a probability that the mailbox exists, and not a deliverability prediction. It is a transparent sum of the deterministic signals listed above, nothing more. There is no model, no external data and no reputation database behind it — which is exactly why the same address always gets the same score.

Duplicates are checked once and charged once

Send the same address twice — in any capitalisation — and you get two rows back, in your original order, so the result still joins cleanly onto your list. But the repeat carries is_duplicate: true, copies the first answer, and is not charged. A list with 1,000 rows and 400 repeats is billed as 600 checks.

The run also writes a SUMMARY record to the key-value store: how many addresses were submitted, how many were unique, how many duplicates were skipped, how many domains were resolved, and the counts per grade and per verdict.

Use cases

  • Before a campaign send — bounce rates hurt sender reputation for weeks. Removing dead domains and typos first is cheaper than repairing deliverability afterwards.
  • CRM and list imports — stop junk entering the database instead of cleaning it later.
  • Lead qualification — flag disposable and role addresses before they reach a sales rep's queue.
  • Signup forms — catch a mistyped provider domain at the point of entry, not after a welcome email silently bounces.

Input

{ "emails": ["jane.doe@apify.com", "contact@apify.com", "test@gmial.com",
"info@mailinator.com", "not-an-email", "JANE.DOE@apify.com"] }

Output (one row per address)

{
"email": "test@gmial.com",
"normalized_email": "test@gmial.com",
"valid_syntax": true,
"domain": "gmial.com",
"has_mx": false,
"mx_hosts": [],
"is_disposable": false,
"is_role_account": false,
"is_free_provider": false,
"suggested_correction": "gmail.com",
"quality_score": 0,
"quality_grade": "bad",
"score_reasons": ["domain has no MX record - it cannot receive mail"],
"is_duplicate": false,
"verdict": "no_mail_server",
"checked_at": "2026-08-28T17:00:00.000Z"
}

verdict is one of valid, invalid_syntax, no_mail_server, disposable or role_account.

Pricing, and when you are not charged

Pay-per-event: $0.006 per unique email checked, charged once a completed answer is produced. Repeated addresses in the same run are not charged again. An address that turns out to be invalid, disposable or role-based is still a real answer to the question you asked, so it is charged.

You are not charged when our own DNS resolver fails (a timeout or network error on our side, as opposed to a domain that genuinely has no mail server). That row comes back with verdict: "error" and no charge.

Limitations — read this before you buy

  • No SMTP handshake. This does not connect to the mail server to ask whether the individual mailbox exists. It confirms the domain can receive mail, not that john@ is a real person there. Anyone promising per-mailbox certainty without an SMTP probe is overselling.
  • A disposable-domain list always trails reality. New throwaway providers appear constantly and some rotate domains deliberately. A false on is_disposable means "not on the list", not "proven permanent".
  • Catch-all domains accept everything, so a valid MX record tells you nothing about the individual address.
  • No deliverability score, no reputation data, no spam-trap detection.

FAQ

Does a score of 100 mean the mailbox exists? No. It means nothing deterministic counts against the address. Confirming a mailbox exists requires an SMTP handshake, which this Actor does not do — see the limitations above.

Why is a real address flagged role_account? Because it starts with a role prefix such as info or support. It is almost certainly deliverable — the flag is about list quality, not validity.

Why does a valid-looking domain come back no_mail_server? The domain resolves but publishes no MX record, so it cannot receive mail. That is usually a parked domain or a typo close to a real one — check suggested_correction.

Part of the same family of small, single-purpose checkers on this account — each does one thing, priced per item checked: