A collection of domains for disposable email services like 10MinuteMail and GuerrillaMail. Also, some ๐ to make your life easier.
If you are already familiar with the topic or have good suggestions for automating the crawling processes, feel free to open an issue. We are also looking for people to maintain this project or implement additional pages.
Use it to validate email addresses on sign up, or just to see how many real email addresses you have in your system.
We provide an autogenerated list which is updated every 24 hours. To lookup informations about a domain, please use:
https://disposable.github.io/disposable-email-domains/lookup/
A file containing a sorted list of domains, one domain per line.
curl https://raw.githubusercontent.com/disposable/disposable-email-domains/master/domains.txtA file containing a sorted list of greylist domains, one domain per line. The greylist contains e-mail services which do allow anonymous signup - domains from this list are only listed in strict mode. Greylist membership is derived from mailservices.json (forwarding/alias services and providers with anonymous signup) plus explicit entries in greylist.txt. For more informations, please check Issue #81.
curl https://raw.githubusercontent.com/disposable/disposable-email-domains/master/domains_strict.txtCheckout ZliIO/zliio-disposable - thanks @ZliIO for the implementation in Java.
To work with the Python tools in this repo using uv:
pip install --upgrade uv
uv sync --dev
uv run python disposable.py --help
uv run disposable --help
uv run ./.generateTo update the list of domains using uv, run uv run ./.generate, and optionally submit a PR.
$ uv run ./.generate
Fetched 5196 domains and 6593 hashes
- 2000 domain(s) added
- 75 domain(s) removed
- 2010 hash(es) added
- 76 hash(es) removedSome sources require an API key and are only enabled when the corresponding environment variable is set:
| Environment variable | Source | How to get a key |
|---|---|---|
DUSTMAIL_API_KEY |
dustmail.net shared inbox domains | Register at dustmail.net, then create a dm_live_ key in the Dashboard (free tier is sufficient) |
FLARESOLVERR_PROXIES |
temp-mail.org mailbox sampling | Optional comma-separated proxy URLs (e.g. http://user:pass@host:port) - each mailbox request egresses through a different IP |
If FLARESOLVERR_URL points to a running FlareSolverr instance (e.g. http://127.0.0.1:8191), sources that answer with a Cloudflare challenge page are automatically retried through it.
Domains seen by sources we crawl ourselves are remembered in source_cache.json next to the output file and kept contributing to the list for --retention-days (default: 30, 0 disables). Retention is opt-in per source via "retain": true in the source config - set on our own scrapers/API crawls so transient fetch failures and rotating-domain providers do not lose coverage. Upstream compilation sources stay unflagged.
Additionally, a run aborts without writing output if more than --max-delta-ratio (default: 0.2, 0 disables) of the previous list would be removed, as mass removal usually indicates a source outage. Runs limited via --src or --file are exempt.
@adamloving @smeinecke @GeroldSetz @martenson @FGRibreau @daisy1754 @wesbos @7c @copini @ZliIO @iocium @castle @jespernissen @unkn0w