Email Validator API

Validate e-mail addresses: syntax, MX/A records, ~120k disposable domains, role accounts, free providers and typo hints like gmial.com → gmail.com.

GETPOSThttps://apibox.io.vn/v1/email-validator
Network & Validation▶ Try it online

The Email Validation API tells you whether an address is worth accepting. It checks the syntax (length limits, dots, allowed characters, domain labels), then looks up the domain’s MX records – falling back to an A record, and detecting “null MX” domains that refuse mail – using DNS over HTTPS. It also flags disposable / temporary inbox domains from a list of about 120,000, role accounts such as info@, support@ or noreply@, and free providers like Gmail, Yahoo and Outlook.

Common domain typos are caught with a did_you_mean suggestion (john@gmial.com → john@gmail.com). Each address gets a verdict – deliverable, risky, undeliverable or invalid – a score from 0 to 100, and a canonical form (lower-cased, +tag removed, dots removed for Gmail) that helps detect duplicate sign-ups.

Honest limitation: the API does not probe the mailbox over SMTP, because outgoing port 25 is not available on Cloudflare Workers. “Deliverable” therefore means the address is well formed and its domain accepts e-mail, not that the specific mailbox exists. Validate one email, or up to 50 at once by POSTing an emails array; dns=false skips the DNS lookups for a pure offline check.

Parameters

NameInTypeRequiredDefault
emailbody|querystringyesE-mail address to validate (max 320 characters).
emailsbodyarraynoArray of up to 50 addresses (JSON body) instead of email.
dnsbody|querybooleannotrueSet to false to skip MX/A lookups.

Example

curl -X POST "https://apibox.io.vn/v1/email-validator" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"john.doe@gmial.com"}'

Response

{
  "email": "john.doe@gmial.com",
  "normalized": "john.doe@gmial.com",
  "local_part": "john.doe",
  "domain": "gmial.com",
  "syntax_valid": true,
  "syntax_error": null,
  "canonical": "john.doe@gmial.com",
  "result": "risky",
  "score": 70,
  "disposable": false,
  "role_account": false,
  "free_provider": false,
  "did_you_mean": "john.doe@gmail.com",
  "dns_checked": true,
  "domain_exists": true,
  "mx_found": false,
  "null_mx": false,
  "a_record_fallback": true,
  "mx_records": [],
  "note": "SMTP mailbox probing is not performed (port 25 is not available on Cloudflare); \"deliverable\" means the address is well formed and its domain accepts e-mail."
}

Use cases

  • Block disposable e-mail addresses at sign-up
  • Catch typos like gmial.com before sending a confirmation e-mail
  • Clean a mailing list before importing it into your newsletter tool
  • Detect duplicate accounts using the canonical address

FAQ

Does it check whether the mailbox really exists?

No. SMTP probing needs outgoing port 25, which Cloudflare Workers do not allow, and many providers give misleading answers anyway. The API verifies syntax and that the domain accepts mail (MX or A record), plus disposable, role and typo checks.

How do I validate many e-mails at once?

POST {"emails": ["a@example.com", "b@example.org"]} with up to 50 addresses. You get a results array in the same order.

What does "risky" mean?

The address can receive mail but is suspicious: a disposable domain, a likely typo (see did_you_mean) or a role account such as info@ or support@. Decide per case whether to accept it.

Related APIs

Start with 1,000 free requests every month. Get free API key →