57,402 disposable email domains, tracked and updated daily. Detect throwaway addresses used for fake signups, trial abuse, and spam — via a simple API call.
This is the disposable detection engine behind EmailKind, the email classification API. It goes beyond static blocklists: EmailKind combines MX record analysis, domain age signals, and pattern matching to catch disposable domains that static lists miss — including auto-generated subdomains and newly registered throwaway services.
Disposable email services let anyone create a temporary inbox in seconds. They're used to:
- Abuse free trials — sign up, use the trial, discard the address, repeat
- Create fake accounts — inflate metrics, manipulate reviews, spam other users
- Bypass email verification — disposable addresses pass syntax and deliverability checks
- Pollute mailing lists — addresses that bounce after 24 hours degrade sender reputation
Static blocklists catch known services, but new disposable domains appear daily. A list that was complete last month is already outdated.
EmailKind maintains a database of 57,402+ disposable domains, updated daily from:
- Public threat intelligence feeds
- Community reports
- EmailKind's own detection engine (MX pattern analysis, domain lifecycle tracking, behavioral signals)
The database is exposed through a real-time API that returns structured classification data — not just "disposable or not", but provider name, email type, confidence score, and company enrichment.
curl -H "Authorization: Bearer sk_live_xxx" \
"https://emailkind.com/v1/classify?email=test@mailinator.com"{
"provider": {
"id": "mailinator",
"name": "Mailinator",
"type": "disposable"
},
"classification": {
"is_disposable": true,
"is_business": false,
"is_free": false
},
"confidence": 0.99
}Free tier: 100 calls/month, no credit card required. Get an API key
pip install emailkindfrom emailkind import EmailKind
client = EmailKind("sk_live_xxx")
result = client.classify(email="test@tempmail.com")
if result.classification.is_disposable:
print(f"Blocked: {result.provider.name} is a disposable service")npm install emailkindimport { EmailKind } from "emailkind";
const client = new EmailKind("sk_live_xxx");
const result = await client.classify({ email: "test@tempmail.com" });
if (result.classification.is_disposable) {
console.log(`Blocked: ${result.provider.name} is a disposable service`);
}go get github.com/gastonmedia/emailkind-goclient := emailkind.NewClient("sk_live_xxx")
result, _ := client.Classify(ctx, &emailkind.ClassifyParams{
Email: "test@tempmail.com",
})
if result.Classification.IsDisposable {
fmt.Printf("Blocked: %s is a disposable service\n", result.Provider.Name)
}from fastapi import FastAPI, HTTPException
from emailkind import EmailKind
app = FastAPI()
ek = EmailKind() # reads EMAILKIND_API_KEY from env
@app.post("/signup")
def signup(email: str):
result = ek.classify(email=email)
if result.classification.is_disposable:
raise HTTPException(400, "Please use a permanent email address")
# proceed with registration...import { EmailKind } from "emailkind";
const ek = new EmailKind(process.env.EMAILKIND_API_KEY);
app.post("/signup", async (req, res) => {
const result = await ek.classify({ email: req.body.email });
if (result.classification.is_disposable) {
return res.status(400).json({ error: "Disposable emails are not allowed" });
}
// proceed with registration...
});EmailKind isn't just a disposable email checker. A single API call returns:
| Signal | Example | Use case |
|---|---|---|
provider.name |
"Google Workspace" | Distinguish paid vs free Google accounts |
provider.type |
"business" | Route B2B signups to sales |
classification.is_business |
true |
Qualify leads automatically |
classification.is_disposable |
true |
Block throwaway addresses |
classification.is_free |
true |
Detect Gmail, Yahoo, Outlook.com |
classification.is_education |
true |
Identify .edu and academic domains |
company.name |
"Stripe, Inc." | Enrich CRM records with company data |
confidence |
0.98 |
Gate automation on detection certainty |
150+ email providers detected. Company enrichment from SSL, OG meta, and RDAP.
| Static list | EmailKind API | |
|---|---|---|
| Coverage | 3,000-10,000 domains (typical) | 57,402+ domains |
| Freshness | Updated manually, sporadically | Updated daily, automatically |
| New domains | Missed until someone adds them | Caught by pattern analysis |
| Auto-generated subdomains | Not covered | Detected via MX patterns |
| Additional signals | None — binary yes/no | Provider, type, company, confidence |
| Latency | Local lookup (fast) | < 50ms p99 (cached) |
| Maintenance | You maintain the list | We maintain the list |
For large datasets, use batch classification (up to 100 per request) or bulk CSV upload (up to 10,000 emails, processed async):
# Batch — 100 emails in one call
batch = client.classify_batch(
emails=["a@mailinator.com", "b@stripe.com", "c@guerrillamail.com"]
)
for item in batch.results:
if item.classification.is_disposable:
print(f"Disposable: {item.input} ({item.provider.name})")
# Bulk — upload a CSV
job = client.bulk_upload("signups.csv")EmailKind exposes a native Model Context Protocol server. Claude Desktop, Cursor, and Windsurf can classify emails and detect disposable addresses without code.
{
"mcpServers": {
"emailkind": {
"url": "https://emailkind.com/v1/mcp",
"headers": { "Authorization": "Bearer sk_live_xxx" }
}
}
}| Metric | Value |
|---|---|
| Response time | < 50ms (p99) |
| Uptime | 99.9% (last 90 days) |
| Disposable domains | 57,402+ (updated daily) |
| Providers detected | 150+ |
| Infrastructure | EU (Germany) |
| Language | Package | Install |
|---|---|---|
| Python | emailkind | pip install emailkind |
| Node.js | emailkind | npm install emailkind |
| Go | emailkind-go | go get github.com/gastonmedia/emailkind-go |
| Any | REST API | cURL, Fetch, any HTTP client |
How is this different from other disposable email lists on GitHub? Most public lists contain 3,000-10,000 domains and are updated when someone opens a PR. EmailKind tracks 57,402+ domains, updated daily via automated feeds and pattern detection — including auto-generated subdomains that static lists can't cover.
What about free email providers like Gmail? Gmail, Yahoo, and Outlook.com are not disposable — they're legitimate personal email providers used by billions of people. EmailKind distinguishes between free (Gmail), disposable (Mailinator), and business (Google Workspace) with separate classification flags.
Does it catch new disposable services? Yes. Beyond the domain list, EmailKind analyzes MX records and domain patterns to detect previously unseen disposable services. A brand-new throwaway domain using known disposable MX infrastructure gets flagged automatically.
Can I use it without an API key for testing?
Yes. Use sandbox keys (sk_test_xxx) for development — same classification results, no quota usage. Create a free account to get your keys.
- EmailKind — Email classification API
- API documentation
- Disposable domain checker — Free online tool
- What is email classification? — Complete guide