Free disposable email API: the open-source option

May 19, 2026 · 6 min read

Search for a “disposable email API” and every result bills per request. For a high-traffic signup form, paying per email check adds up quickly — and sends every one of your users' addresses to a third party. There is a simpler, free option for the common case.

You often don't need an API at all

Detecting a known disposable domain is a lookup against a list. It does not need a network round-trip. The open-source @isdisposable/js package bundles 160,000+ disposable domains and runs the check locally:

Terminalbash
npm install @isdisposable/js
check.tstypescript
import { isDisposable } from '@isdisposable/js';

isDisposable('user@mailinator.com'); // true
isDisposable('user@gmail.com');      // false

No API key, no rate limit, no per-request cost, and no user data leaving your server. It works in Node.js, the browser, serverless functions, and edge runtimes. A Python package is available on PyPI with the same blocklist.

What a free package gives you

  • Instant, synchronous checks with zero latency.
  • No usage cap — check millions of emails for free.
  • Full privacy — addresses never leave your infrastructure.
  • Open source — you can audit exactly which domains are blocked.

When a hosted API is still worth it

An offline list, by definition, only knows the domains it shipped with. A hosted API earns its cost when you need signals a static list can't provide:

  • Brand-new domains registered after your last package update.
  • MX-record checks — confirming the domain can actually receive mail.
  • A risk score rather than a plain yes/no, for borderline cases.

The isDisposable API has a free plan for exactly this — start with the offline package, and add the API only for the traffic that needs live checks.

The pragmatic setup

Use both. Run the free offline check on every signup to reject obvious disposable domains at no cost. Fall back to the API only for addresses that pass the offline check but still look risky. You get full coverage while keeping API usage — and spend — low.

validate.tstypescript
import { isDisposable } from '@isdisposable/js';
import { createIsDisposable } from '@isdisposable/js';

const client = createIsDisposable({ apiKey: process.env.ISDISPOSABLE_KEY });

export async function validate(email: string) {
  // Free, offline: catches all known disposable domains.
  if (isDisposable(email)) return { ok: false, reason: 'disposable' };

  // Paid, live: only for addresses that passed the offline check.
  const result = await client.check(email);
  return { ok: !result.disposable, reason: result.reason };
}

Block disposable emails today

isDisposable is free and open source — add it to your signup flow in one line.

Keep reading