Email Verification, at 50 ms.
Format, DNS, disposable / role / free / spam-trap flags, did-you-mean for common typos, and a single 0–10 deliverability score per email. Bundled with Acuris address validation — no separate SKU, no double billing.
Try it right now
Paste any email below — we'll show the full validation response in <1 second. No signup, no card, public widget endpoint.
Demo is IP rate-limited. For production, grab a 100-credit dev key and call /email-validate with header X-Acuris-Key.
What each result means
Every field the check above returns, and what it tells you about the email address you entered.
- deliverable
- Our overall verdict. deliverable — the mailbox exists and accepts mail, safe to send. risky — we couldn't fully confirm it (a catch-all domain, a role or free address), so send with caution or review. undeliverable — it will bounce (bad domain, no such mailbox, or a spam-trap), don't send. unknown — a temporary DNS/SMTP failure stopped us, retry later.
- score
- A 0–10 confidence score for deliverability. 10 = a live mailbox was confirmed; ~5 = the server accepts mail but won't reveal whether this exact mailbox exists (catch-all / free provider); 0 = invalid or undeliverable. Lets your code branch simply, e.g.
if score < 8: review. - format_valid
- Whether your address is a syntactically valid
name@domain.tld(RFC-tight, 254-char cap).falsemeans it's malformed or a typo — nothing else is worth checking. - domain_has_mx
- Whether the domain publishes MX (mail-exchange) DNS records — i.e. it is actually set up to receive email.
falsemeans the domain can't receive mail at all. - mx_record
- The mail server that handles email for the domain — the host we then probe.
- is_disposable
- The domain is a throwaway / temporary-mail provider (mailinator, yopmail, …). Commonly used to dodge signups — treat as risky.
- is_role
- A role / group address (
info@,sales@,admin@,support@) rather than a person. Deliverable, but worth flagging on signup forms — no individual owner. - is_free
- A free webmail provider (gmail, yahoo, outlook, icloud, …). Perfectly valid — useful to know for B2B vs B2C routing.
- is_spam_trap
- The address matches a known spam-trap / honeypot. Mailing it can damage your sender reputation and get you blocklisted — never send.
- did_you_mean
- A suggested correction for a likely typo (e.g.
user@gmial.com→user@gmail.com). Offer it back to the user at the point of entry. - smtp_checked
truemeans we ran a live RCPT-TO probe — we actually asked the mail server whether the mailbox exists, not just checked DNS. Real mailbox verification.- smtp_classification
- What the live probe concluded:
deliverable,catch_all,undeliverable, orunknown. - smtp_code
- The raw SMTP response from the mail server (e.g.
250= accepted,550= no such user) — the evidence behind the verdict. - is_catch_all
- The domain accepts mail to every address, so we can't confirm this specific mailbox exists. We cap the verdict at risky / score 5 and tell you honestly rather than guess.
- reasons
- Machine-readable codes behind the verdict (e.g.
possible_typo,disposable_domain,accept_all) — for your code to act on programmatically.
Provider coverage — honest verification, not theater
We perform a live SMTP RCPT TO probe against the domain's mail server, then run a second probe with a random non‑existent local‑part to detect catch‑all behavior (where the server says "yes" to every address it's asked about). Below: what that lookup actually returns for the major consumer providers, live-tested today.
| Provider | Domains | Verification | Score (real) | Score (fake) |
|---|---|---|---|---|
| gmail.com · googlemail.com · Workspace | ✅ Honest | 10 | 1 | |
| Microsoft | outlook.com · hotmail.* · live.* · msn.com · M365 | ✅ Honest | 10 | 1 |
| Apple | icloud.com · me.com · mac.com | ✅ Honest | 10 | 1 |
| Proton | protonmail.com · proton.me | ✅ Honest | 10 | 1 |
| Yahoo | yahoo.com · yahoo.de · yahoo.fr · yahoo.co.uk · … | ⚠️ Catch-all | 5 | 5 |
| AOL | aol.com · aim.com (now on Yahoo's infra) | ⚠️ Catch-all | 5 | 5 |
| Custom domains | your-company.com · self-hosted MX · most B2B | ✅ Usually honest | 10 | 1 |
Why score 5, not 10, for Yahoo/AOL? Their servers answer 250 OK to every address — real and fake alike — as anti-probe policy. No verification service in the world (ZeroBounce, NeverBounce, Kickbox, Hunter, …) can break that. We honestly report is_catch_all: true, deliverable: risky and a capped score of 5 so your list-cleaning code can if score < 8: review rather than receive a misleading "deliverable" verdict that bounces in production.
Coverage in practice: Gmail + Microsoft alone are >80% of consumer accounts globally. Add Apple, Proton and every self-hosted business MX and the catch-all blind spot collapses to a small Yahoo/AOL tail — mostly long-tenured US accounts, market share trending down each year.
Every check, every email, every time
RFC-tight format
Rejects malformed addresses immediately. 254-char cap. No false positives on edge cases like "weird"@dom.
DNS MX + A fallback
Resolves the domain's mail server. Falls back to A record per RFC 5321 §5. 2-second timeout.
Disposable detection
5,488 known temp-mail domains (mailinator / yopmail / guerrillamail / 10minutemail / …). Auto-refreshed weekly.
Role-account flag
info@ / admin@ / sales@ / postmaster@ — deliverable but worth flagging for signup-form UX.
Free-provider classification
gmail / yahoo / outlook / icloud / etc. — route B2B vs B2C lead intake differently.
Spam-trap detection
Known honeypot domains return deliverable: undeliverable immediately. Protects your sender reputation.
Did-you-mean
179 explicit common typos (gmial → gmail) + Levenshtein-1 fuzzy fallback against known providers.
0–10 score
Single numeric score per email so list-cleaning code can if score < 5: drop. Sortable, comparable.
Three lines, any language
First-tier official Node and Python SDKs — none of our competitors ships a maintained Python SDK.
curl -X POST 'https://api.acuris-geo.com/email-validate' \
-H 'X-Acuris-Key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"email": "user@gmial.com"}'
# → {
# "email": "user@gmial.com",
# "deliverable": "risky",
# "score": 2,
# "did_you_mean": "user@gmail.com",
# "reasons": ["possible_typo"]
# }// npm install @acuris-geo/av-sdk
import { AcurisClient, emailValidate } from "@acuris-geo/av-sdk";
const cli = new AcurisClient({ apiKey: process.env.ACURIS_API_KEY });
const r = await emailValidate(cli, "user@gmial.com");
console.log(r.deliverable, r.score, r.did_you_mean);
// → "risky" 2 "user@gmail.com"# pip install acuris-geo
from acuris_geo import AcurisClient
cli = AcurisClient() # reads ACURIS_API_KEY env
r = cli.email_validate("user@gmial.com")
print(r["deliverable"], r["score"], r["did_you_mean"])
# → risky 2 user@gmail.comBundled into every Acuris plan
Email verification shares the same credit pool as your address validation — buy one plan, get both. 1,000 free on the Dev trial. 25,000–100,000/mo on Growth and Pro. Standalone bulk cleanse packs for one-off list hygiene.