DEV Community

Cover image for A Cheaper Email Validation API When You Don't Need Full Deliverability Scoring
Axio Api
Axio Api

Posted on Originally published at axioapi.com

A Cheaper Email Validation API When You Don't Need Full Deliverability Scoring

Services like ZeroBounce do real SMTP-level deliverability scoring: they can tell you whether a mailbox actually exists, catch spam traps, and grade sender reputation. That's genuinely useful for cold-email senders protecting their domain reputation, and it's priced accordingly — published tiers run roughly $0.0195/credit at 2,000 credits down to $0.0032/credit at 1 million (check zerobounce.net/pricing for current numbers).

A lot of signup forms don't need that depth. They need: is this a real email format, does the domain have mail servers, and is it a disposable/temp-mail address someone's using to dodge your "verify your email" step. That's a much cheaper check to run, and it's what AxioAPI's email validation endpoint does — 1 credit (~$0.001) per validation, which is roughly 3–20x cheaper per check than the ZeroBounce tiers above. To be clear about the trade-off: this is syntax + MX + disposable-domain detection, not SMTP mailbox-existence verification — if you need to know whether a specific inbox actually accepts mail, a deliverability-focused service is still the right tool.

The endpoint

POST https://axioapi.com/api/v1/email/validate
Content-Type: application/json

{ "email": "someone@example.com" }
Enter fullscreen mode Exit fullscreen mode
const res = await fetch('https://axioapi.com/api/v1/email/validate', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.AXIOAPI_KEY}`,
    'Content-Type': 'application/json',
    Accept: 'application/json',
  },
  body: JSON.stringify({ email: 'someone@example.com' }),
});

const { data } = await res.json();
console.log(data);
// { email, domain, is_disposable, is_valid_format, has_mx, ... }
Enter fullscreen mode Exit fullscreen mode

Malformed addresses are rejected before any lookup happens — you get is_valid_format: false and the rest of the fields come back null instead of wasting a check.

Batch validation for signup lists

If you're cleaning an existing list rather than validating at signup time, there's a batch route:

const res = await fetch('https://axioapi.com/api/v1/email/validate-batch', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.AXIOAPI_KEY}`,
    'Content-Type': 'application/json',
    Accept: 'application/json',
  },
  body: JSON.stringify({ emails: ['a@example.com', 'b@tempmail.io', 'not-an-email'] }),
});

const { data } = await res.json();
data.items.forEach((item) => console.log(item));
Enter fullscreen mode Exit fullscreen mode

Each failed lookup in a batch comes back as { email, error: 'service_unavailable' } instead of failing the whole batch — one bad upstream response doesn't block the rest of the list.

Where this fits

Use this at the signup form to block disposable addresses and catch typos before you send a confirmation email nobody receives. If you're running cold outreach at scale and protecting sender reputation is the actual goal, pair it with (or use instead) a deliverability-grade service — that's a different problem than "is this a real-looking, non-disposable address."

Try it without an account first on the free email validator tool.

Top comments (0)