Email Blacklist API Documentation
Email Blacklist API Documentation: Comprehensive email validation API to detect disposable/temporary email addresses, role-based addresses, free providers, and check domain reputation. Our database contains 80,000+ disposable email domains with high/medium/low confidence scoring. Essential for signup fraud prevention and lead quality filtering.
Email Blacklist
Comprehensive email validation API to detect disposable/temporary email addresses, role-based addresses, free providers, and check domain reputation. Our database contains 80,000+ disposable email domains with high/medium/low confidence scoring. Essential for signup fraud prevention and lead quality filtering.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| email required | string | Email address to check (e.g., "user@tempmail.com") |
| checks optional | string | Comma-separated checks to run: disposable, role, free, mx, dnsbl. Default: all |
Available Checks
| Check | Description | Risk Points |
|---|---|---|
disposable | Checks against 80K+ disposable domain database | +80 |
role | Detects role-based addresses (admin@, support@, etc.) | +20 |
free | Identifies free email providers (gmail, yahoo, etc.) | +10 |
mx | Validates MX records exist for domain | +50 (if none) |
dnsbl | Checks domain against DNS blacklists (Spamhaus, etc.) | +15-60 |
Risk Levels
- Low (0-39):: Safe to accept
- Medium (40-69):: Review recommended
- High (70-100):: Likely fraudulent/temporary
Example Request
# Full check (all validations)
curl "https://domscan.net/v1/email/check?email=user@tempmail.com"
# Quick disposable check only
curl "https://domscan.net/v1/email/check?email=user@gmail.com&checks=disposable"
import requests
response = requests.get(
"https://domscan.net/v1/email/check",
params={"email": "user@tempmail.com"}
)
data = response.json()
if data['risk_level'] == 'high':
print(f"Reject: {data['flags']}")
elif data['checks']['disposable']['is_disposable']:
print("Disposable email detected")
Example Response
{
"email": "user@tempmail.com",
"domain": "tempmail.com",
"local_part": "user",
"valid_syntax": true,
"checks": {
"disposable": {
"is_disposable": true,
"confidence": "high"
},
"role": {
"is_role": false,
"role_type": null
},
"free": {
"is_free": false,
"provider": null
},
"mx": {
"has_mx": true,
"records": ["mx.tempmail.com"]
},
"dnsbl": {
"listed": false,
"threat_level": "none"
}
},
"risk_score": 80,
"risk_level": "high",
"flags": ["DISPOSABLE_DOMAIN"],
"checked_at": "2025-01-15T12:00:00Z"
}
Response Fields
| Field | Type |
|---|---|
email |
string |
domain |
string |
local_part |
string |
valid_syntax |
boolean |
checks |
object |
checks.disposable |
object |
checks.disposable.is_disposable |
boolean |
checks.disposable.confidence |
string |
checks.role |
object |
checks.role.is_role |
boolean |
checks.role.role_type |
string | null |
checks.free |
object |
checks.free.is_free |
boolean |
checks.free.provider |
string | null |
checks.mx |
object |
checks.mx.has_mx |
boolean |
checks.mx.records[] |
string[] |
checks.dnsbl |
object |
checks.dnsbl.listed |
boolean |
checks.dnsbl.threat_level |
string |
risk_score |
integer |
risk_level |
string |
flags[] |
string[] |
checked_at |
string |
Request Body
| Parameter | Type | Description |
|---|---|---|
| emails required | string[] | Array of email addresses to check (max 100 per request) |
| checks optional | string[] | Checks to run: ["disposable", "role", "free", "mx", "dnsbl"] |
Use Cases
- Clean email lists before marketing campaigns
- Validate user registrations in real-time
- Score leads by email quality
- Detect signup fraud patterns
Example Request
curl -X POST "https://domscan.net/v1/email/check/bulk" \
-H "Content-Type: application/json" \
-d '{
"emails": [
"user@gmail.com",
"test@tempmail.org",
"admin@company.com"
],
"checks": ["disposable", "role"]
}'
Example Response
{
"results": [
{
"email": "user@gmail.com",
"risk_level": "low",
"risk_score": 10,
"flags": ["FREE_PROVIDER"]
},
{
"email": "test@tempmail.org",
"risk_level": "high",
"risk_score": 80,
"flags": ["DISPOSABLE_DOMAIN"]
},
{
"email": "admin@company.com",
"risk_level": "medium",
"risk_score": 20,
"flags": ["ROLE_ADDRESS"]
}
],
"summary": {
"total": 3,
"disposable": 1,
"role_based": 1,
"free_provider": 1,
"high_risk": 1,
"medium_risk": 1,
"low_risk": 1
},
"checked_at": "2025-01-15T12:00:00Z"
}
Response Fields
| Field | Type |
|---|---|
results[] |
object[] |
results[] |
object |
summary |
object |
summary.total |
integer |
summary.disposable |
integer |
summary.role_based |
integer |
summary.free_provider |
integer |
summary.no_mx |
integer |
summary.dnsbl_listed |
integer |
summary.high_risk |
integer |
summary.medium_risk |
integer |
summary.low_risk |
integer |
checked_at |
string |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| limit optional | number | Number of domains to return (default: 1000, max: 10000) |
| offset optional | number | Pagination offset (default: 0) |
| format optional | string | json (default) or txt for plain text list |
Description
Download our disposable email domain blacklist. Free for all users. Use /v1/email/blacklist/download for the complete list as a downloadable file.
Example Request
# Get first 1000 domains as JSON
curl "https://domscan.net/v1/email/blacklist"
# Get as plain text for firewall rules
curl "https://domscan.net/v1/email/blacklist?format=txt&limit=5000"
# Download complete blacklist
curl "https://domscan.net/v1/email/blacklist/download" -o disposable.json
Example Response
{
"domains": [
"tempmail.com",
"guerrillamail.com",
"10minutemail.com",
"mailinator.com",
"..."
],
"total": 85432,
"offset": 0,
"limit": 1000,
"metadata": {
"last_updated": "2025-01-15T00:00:00Z",
"total_domains": 85432,
"high_confidence_count": 12500,
"wildcard_count": 234,
"sources": [
"disposable-email-domains",
"ivolo/disposable-email-domains"
]
}
}
Response Fields
| Field | Type |
|---|---|
domains[] |
string[] |
total |
integer |
offset |
integer |
limit |
integer |
metadata |
object |
metadata.last_updated |
string |
metadata.total_domains |
integer |
metadata.high_confidence_count |
integer |
metadata.wildcard_count |
integer |
metadata.sources[] |
string[] |
Query Parameters
| Parameter | Type | required |
|---|---|---|
| format | string | optional |
Response Fields
| Field | Type |
|---|---|
domains[] |
string[] |
wildcards[] |
string[] |
metadata |
object |
Example Request
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/email/blacklist/download?format=example.com"
Example Response
{
"domains": [
"example.com"
],
"wildcards": [
"string"
],
"metadata": {}
}