Developer Reference

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.

GET /v1/email/check

Query Parameters

ParameterTypeDescription
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

CheckDescriptionRisk Points
disposableChecks against 80K+ disposable domain database+80
roleDetects role-based addresses (admin@, support@, etc.)+20
freeIdentifies free email providers (gmail, yahoo, etc.)+10
mxValidates MX records exist for domain+50 (if none)
dnsblChecks 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
POST /v1/email/check/bulk

Request Body

ParameterTypeDescription
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
GET /v1/email/blacklist

Query Parameters

ParameterTypeDescription
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[]
GET /v1/email/blacklist/download

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": {}
}

Used by people at amazing companies

VercelLLM PulseOLXCasa ModernaPipeCal.comBeehiivSnykTogglRemoteSprigDeel