Live
Free tier included
Verify Email Addresses Instantly
Validate any email with MX record checks, disposable detection, role-based filtering, and a deliverability score from 0–100. Reduce bounces before you send.
MX Records
Disposable Detection
Score 0–100
No API Key
Interactive Playground
Try it Free
Enter any email address and get a comprehensive validation report instantly.
Try Free
Result
Enter an email address and click Verify
API Documentation
Validate email addresses in real-time with format checks, MX record lookups, disposable email detection, role-based filtering, and a deliverability score from 0–100.
Endpoint
POST
https://www.mahmoudalhabash.com/api/v1/email-verify
Send a JSON body with an email address. The API performs syntax validation, DNS lookups, MX record checks, and heuristic analysis to return a comprehensive deliverability report.
Request Parameters
Response Fields
email The email address that was verifiedvalid Boolean — whether the email is considered deliverablescore Deliverability score from 0 (undeliverable) to 100 (highly deliverable)reason Human-readable explanation of the resultchecks.format_valid Whether the email matches RFC 5322 formatchecks.mx_records Whether the domain has valid MX recordschecks.has_a_record Whether the domain has a DNS A recordchecks.is_disposable Whether the domain is a known disposable email providerchecks.is_role_based Whether the address is role-based (e.g. info@, admin@)checks.is_free_provider Whether the domain is a free provider (Gmail, Yahoo, etc.)checks.mx_hosts Array of MX host records found for the domainCode Examples
cURL
curl -X POST https://www.mahmoudalhabash.com/api/v1/email-verify \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
Response 200
JSON
{
"email": "user@example.com",
"valid": true,
"score": 90,
"reason": "Valid email with MX records",
"checks": {
"format_valid": true,
"mx_records": true,
"has_a_record": true,
"is_disposable": false,
"is_role_based": false,
"is_free_provider": false,
"mx_hosts": ["mx1.example.com"]
}
}
JavaScript (fetch)
const res = await fetch('https://www.mahmoudalhabash.com/api/v1/email-verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@gmail.com' })
});
const data = await res.json();
if (data.valid && data.score >= 70) {
console.log('Email is deliverable!');
} else {
console.log('Risky email:', data.reason);
}
Python (requests)
import requests
resp = requests.post(
'https://www.mahmoudalhabash.com/api/v1/email-verify',
json={'email': 'user@gmail.com'}
)
data = resp.json()
if data['valid']:
print(f"Score: {data['score']}/100")
print(f"MX Hosts: {data['checks']['mx_hosts']}")
else:
print(f"Invalid: {data['reason']}")
PHP (Laravel)
$response = Http::post(
'https://www.mahmoudalhabash.com/api/v1/email-verify',
['email' => 'user@gmail.com']
);
$data = $response->json();
if ($data['valid'] && !$data['checks']['is_disposable']) {
// Safe to send email
}
Error Codes
422 Validation failed — email is required and must be a valid format
400 Bad request — malformed JSON body
429 Rate limit exceeded — too many requests
500 Internal server error — DNS lookup timeout or failure
Rate Limits
Unlimited — Free during beta
No API key required. DNS lookups are cached for 1 hour to improve response times on repeated checks.