DEV Community

Callie Schneider
Callie Schneider

Posted on • Originally published at abundanceapis.com

Email Validation in One API Call: Syntax, MX, Disposable, Typos

Canonical version on our guides page. Disclosure: I built the API used in the examples — it has a permanent free tier.

Why form regex isn't enough

A regex can tell you jane@gmial.com looks like an email. It can't tell you:

  • the domain has no MX records (mail is undeliverable),
  • it's a throwaway from a disposable-mail provider,
  • it's a role account (admin@, billing@) that never converts,
  • the user meant gmail.com.

Dead addresses pollute your list, tank your sender reputation, and waste onboarding emails.

One call, five checks

curl "https://email-validator109.p.rapidapi.com/validate?email=jane.doe@gmial.com" \
  -H "X-RapidAPI-Key: YOUR_KEY" \
  -H "X-RapidAPI-Host: email-validator109.p.rapidapi.com"
Enter fullscreen mode Exit fullscreen mode
const res = await fetch(
  "https://email-validator109.p.rapidapi.com/validate?email=" + encodeURIComponent(email),
  { headers: {
      "X-RapidAPI-Key": "YOUR_KEY",
      "X-RapidAPI-Host": "email-validator109.p.rapidapi.com",
  } }
);
const v = await res.json();
Enter fullscreen mode Exit fullscreen mode

The response combines syntax validation, MX-record lookup, disposable-domain detection (checked against a ~121,000-domain list), role-account detection, and a did-you-mean typo suggestion — one JSON object.

What to do with the results

  • Invalid syntax / no MX → reject with a clear message.
  • Disposable domain → your call: block for trials, allow for downloads.
  • Typo suggestion → offer "Did you mean jane.doe@gmail.com?" — this alone recovers a surprising number of signups.
  • Role account → flag for sales/marketing lists rather than blocking.

Nothing is stored server-side; each request is validated in-memory.

Try it free

In-browser checker (no signup): abundanceapis.com/tools/email-validator. The API's free tier is 1,000 validations/month.

Top comments (0)