BYTETOOLS

Disposable Email Domains List API

Free JSON array of roughly a hundred thousand disposable email domains, rebuilt daily from dozens of upstream sources. No key, permissive CORS. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Disposable Email Domains List API?

The disposable/disposable-email-domains project publishes its full blocklist as a plain JSON array at a static URL. It is an alphabetically sorted list of domain strings, rebuilt automatically from many upstream lists, and needs no key.

This is not a query API — it is one file, and that is the point. Rather than asking a remote service about each address one at a time, you download the whole list once, hold it in a set, and answer every subsequent question locally in constant time with no network call and no rate limit to think about. For a signup form handling any real volume, that is the right shape.

The list is maintained as a GitHub project and rebuilt on a schedule by merging dozens of community sources, then published to GitHub Pages, so it inherits GitHub's uptime and CDN rather than a hobbyist's VPS. There is a companion `domains_mx.json` alongside it containing only domains whose MX records still resolve, which cuts a lot of long-dead noise if you care more about precision than recall.

Quick facts

Base URL
https://disposable.github.io/disposable-email-domains
Authentication
No API key. It is a static JSON file served from GitHub Pages.
Rate limit
None beyond GitHub Pages' own fair-use limits. Fetch it once a day, not once per signup.
Pricing
Free. The project is open source under a permissive licence.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Disposable Email Domains List API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Download the full disposable-domain blocklist

GET https://disposable.github.io/disposable-email-domains/domains.json

curl
curl 'https://disposable.github.io/disposable-email-domains/domains.json'
JavaScript (fetch)
const res = await fetch("https://disposable.github.io/disposable-email-domains/domains.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://disposable.github.io/disposable-email-domains/domains.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  "0-00.usa.cc",
  "0-30-24.com",
  "0-attorney.com",
  "0-mail.com",
  "00-tv.com",
  "00.msk.ru",
  "00.pe",
  "000-webmail.myhome-server.de",
  "000000000000000.theworkpc.com",
  "000777.info",
  "00082cc.com",
  "000email.com",
  "000webmail.ddnss.de",
  "000webmail.ddnss.org",
  "000webmail.dyn.ddnss.de",
  "000webmail.dyn.home-webserver.de",
  "000webmail.dyndns.ddnss.de",
  "000webmail.home-webserver.de",
  "001.igg.biz",
  "001gmail.com",
  "002gmail.com",
  "002r.com",
  "002t.com",
  "003271.com",
  "0033.pl",
  "0039.cf",
  "0039.ga",
  "0039.gq",
  "0039.ml",
  "003j.com",
  "004k.com",
  "0058.ru",
  "006j.com",
  "006o.com",
  "007game.ru",
  "007gmail.com",
  "008gmail.com",
  "009gmail.com",
  "00b2bcr51qv59xst2.cf",
  "00b2bcr51qv59xst2.ga",
  "00b2bcr51qv59xst2.gq",
  "00b2bcr51qv59xst2.ml",
  "00b2bcr51qv59xst2.tk",
  "00g0.com",
  "00jac.com",
  "00sh.cf",
  "01022.hk",
  "010530.xyz",
  "010gmail.com",
  "01130.hk",
  "011gmail.com",
  "0123.website",
  "01234.space",
  "012gmail.com",
  "017gmail.com",
  "01852990.ga",
  "01911.ru",
  "0199934.com",
  "019gmail.com",
  "01bktwi2lzvg05.cf",
  "01bktwi2lzvg05.ga",
  "01bktwi2lzvg05.gq",
  "01bktwi2lzvg05.ml",
  "01bktwi2lzvg05.tk",
  "01g.cloud",
  "01gmail.com",
  "01hosting.biz",
  "01trends.com",
  "02.pl",
  "020307.xyz",
  "020gmail.com",
  "020yiren.com",
  "020zlgc.com",
  "022gmail.com",
  "023gmail.com",
  "024024.cf",
  "02466.cf",
  "02466.ga",
  "02466.gq",
  "02466.ml",
  "025gmail.com",
  "027168.com",
  "029gmail.com",
  "02gmail.com",
  "02hotmail.com",
  "03-genkzmail.ga",
  "030gmail.

Parameters

ParameterTypeRequiredDescription
(none)n/aOptionalA static file. No query parameters exist.
domains_mx.jsonpathOptionalSibling file containing only the domains whose MX records currently resolve — a smaller, higher-precision list.
domains.txtpathOptionalThe same list as newline-separated plain text, if JSON parsing is inconvenient.

Response fields

(root)array
A JSON array of domain strings, lowercase and alphabetically sorted. Around a hundred thousand entries, so the file is several megabytes.

What you can build with the Disposable Email Domains List API

  • Load the list into a set at boot and check signups locally with no network call
  • Seed a database table used by an anti-abuse rule engine
  • Diff today's list against yesterday's to spot newly registered disposable domains
  • Score existing CRM contacts in bulk without hitting a per-request API

Common errors and how to fix them

Memory spike on load

The array holds roughly a hundred thousand strings.

Fix: Stream-parse it, or load it into a Set/Bloom filter once at startup rather than re-parsing per request.

Subdomain not matched

The list stores registrable domains, not every subdomain.

Fix: Normalise the address domain before lookup, and consider matching the parent domain as well.

Legitimate domain flagged

Aggregated community lists occasionally include a false positive.

Fix: Keep a local allowlist that takes precedence, and prefer `domains_mx.json` where precision matters more than coverage.

Disposable Email Domains List API — frequently asked questions

Is this list free to use commercially?

Yes. It is an open source project published under a permissive licence and served as a static file, with no key and no usage terms attached to fetching it.

How often is it updated?

It is rebuilt automatically from its upstream sources on a regular schedule, so a daily fetch will keep you close to current. There is nothing to gain from fetching it more often than that.

What is the difference between domains.json and domains_mx.json?

`domains.json` is the full aggregate. `domains_mx.json` is the subset whose MX records still resolve, which removes long-dead domains and reduces false positives at the cost of some coverage.

Should I use this instead of a live API?

For high volume, yes — a local set lookup has no latency and no quota. A live API is better when you also need mailbox-level verification, which a domain list cannot provide.

Tools that pair with this API

Disposable Email Domains List is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.