Home API Tools Posts Hire Me About
Sign In Create Account
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

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

ParameterTypeRequiredDescription
email string required The email address to verify (e.g. user@example.com)

Response Fields

email The email address that was verified
valid Boolean — whether the email is considered deliverable
score Deliverability score from 0 (undeliverable) to 100 (highly deliverable)
reason Human-readable explanation of the result
checks.format_valid Whether the email matches RFC 5322 format
checks.mx_records Whether the domain has valid MX records
checks.has_a_record Whether the domain has a DNS A record
checks.is_disposable Whether the domain is a known disposable email provider
checks.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 domain

Code 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.