Email Validation API

Email Validation,
Done Right.

Real-time validation with AI-powered risk scoring. Detect bots, disposable addresses, verify MX records, and protect your app from fake signups.

~2s
Avg response time
12+
Data fields
7K+
Disposable domains
EU
Hosted
One call. Full picture.

Every validation returns 12+ data points — format, domain, MX records, disposable detection, bot username analysis, and an AI risk score.

Format & Syntax Check
Catches malformed addresses, double @ symbols, missing domains, and invalid TLDs before they enter your database.
MX Record Lookup
Verifies the domain actually accepts email by checking live DNS MX records. A valid format means nothing if the domain cannot receive mail.
Disposable Detection
Blocks throwaway services like Mailinator, Guerrilla Mail, and 7,000+ others used to bypass signup restrictions.
Bot Username Detection
Analyzes the username pattern for bot signals — random strings, number dumps, keyboard walks like asdfgh. Catches what domain checks miss entirely.
AI Risk Scoring
Returns a 0–100 risk score with a LOW, MEDIUM, HIGH, or INVALID rating and a plain-English reason. No extra logic to write on your end.
Typo Suggestions
When an email looks like a typo of a known provider — gmial.com, yahooo.com — the API suggests the correct version automatically.
Works with any language.

One GET request. One JSON response. Integrate in under 5 minutes with any stack.

fetch · JavaScript
// Install: no dependencies needed // Replace YOUR_RAPIDAPI_KEY with your key from RapidAPI const response = await fetch( 'https://mailforge-email-validation.p.rapidapi.com/validate?email=john@example.com', { method: 'GET', headers: { 'x-rapidapi-key': 'YOUR_RAPIDAPI_KEY', 'x-rapidapi-host': 'mailforge-email-validation.p.rapidapi.com' } } ); const data = await response.json(); // data.risk_level → 'LOW' | 'MEDIUM' | 'HIGH' | 'INVALID' // data.risk_score → 0.0 to 1.0 // data.is_disposable → true | false // data.risk_reason → plain English explanation if (data.risk_level === 'HIGH' || data.is_disposable) { // block the signup }
# Install: pip install requests # Replace YOUR_RAPIDAPI_KEY with your key from RapidAPI import requests url = "https://mailforge-email-validation.p.rapidapi.com/validate" headers = { "x-rapidapi-key": "YOUR_RAPIDAPI_KEY", "x-rapidapi-host": "mailforge-email-validation.p.rapidapi.com" } params = { "email": "john@example.com" } response = requests.get(url, headers=headers, params=params) data = response.json() # data['risk_level'] → 'LOW' | 'MEDIUM' | 'HIGH' | 'INVALID' # data['risk_score'] → 0.0 to 1.0 # data['is_disposable'] → True | False # data['risk_reason'] → plain English explanation if data['risk_level'] == 'HIGH' or data['is_disposable']: pass # block the signup
// No dependencies needed — uses built-in cURL // Replace YOUR_RAPIDAPI_KEY with your key from RapidAPI $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://mailforge-email-validation.p.rapidapi.com/validate?email=john@example.com", CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "x-rapidapi-key: YOUR_RAPIDAPI_KEY", "x-rapidapi-host: mailforge-email-validation.p.rapidapi.com" ], ]); $response = curl_exec($curl); $data = json_decode($response, true); curl_close($curl); // $data['risk_level'] → 'LOW' | 'MEDIUM' | 'HIGH' | 'INVALID' // $data['is_disposable'] → true | false if ($data['risk_level'] === 'HIGH') { // block the signup }
# Replace YOUR_RAPIDAPI_KEY with your key from RapidAPI curl --request GET \ --url 'https://mailforge-email-validation.p.rapidapi.com/validate?email=john@example.com' \ --header 'x-rapidapi-key: YOUR_RAPIDAPI_KEY' \ --header 'x-rapidapi-host: mailforge-email-validation.p.rapidapi.com' # Example response: # { # "email": "john@example.com", # "valid": true, # "risk_score": 0.15, # "risk_level": "LOW", # "risk_reason": "human name on trusted provider", # "is_disposable": false, # "mx_found": true # }
Field
Type
Description
valid
boolean
True if the email has valid format and domain. Use this as your main pass/fail gate.
risk_score
float
0.0 to 1.0. Higher means more likely to be fake or bot-generated. Above 0.7 should be blocked.
risk_level
string
LOW, MEDIUM, HIGH, or INVALID. The simplest field to act on in your signup logic.
risk_reason
string
Plain English explanation of the risk score — e.g. "bot-like username detected: number_heavy, random_pattern".
is_disposable
boolean
True if the domain is a known throwaway email provider. Always block these at signup.
is_free_provider
boolean
True for Gmail, Yahoo, Outlook etc. Useful for B2B apps that require work emails.
is_business
boolean
True if the domain is a business domain — not free and not disposable.
mx_found
boolean
True if the domain has live MX records. False means the domain cannot receive email at all.
format_valid
boolean
True if the email passes basic format checks — correct structure, valid characters, proper TLD.
suggested_fix
string|null
If the domain looks like a typo, returns the suggested correction — e.g. "Did you mean: john@gmail.com?"
domain_age_years
int|null
Age of the domain in years. Very new domains are a common signal of throwaway or fraud accounts.
mx_record
string|null
The primary MX record hostname for the domain. Null if no MX records were found.
Built to be relied on

When you build on MailForge you need to know it will be there every time.

~2s
Response Time
Average response time including real MX lookups, disposable detection, and AI risk scoring. Fast enough to validate at signup without blocking your users.
EU
GDPR Compliant
Hosted in Helsinki, Finland. No email data stored after processing. Fully compliant with GDPR for EU-based applications.
7K+
Disposable Domains
Our disposable domain list covers 7,000+ known throwaway providers and is updated regularly to stay ahead of new services.
24h
Support Response
Every support request answered within 24 hours. Real responses from the developer who built the API — not automated replies.

See it in action

Type any email below and see exactly what the API returns. Switch to Live mode to test against real mail servers.

Quick load: Valid business Gmail Bot email Disposable Invalid
@
Awaiting input
Validation output
Enter an email or click a sample above
Raw API response application/json
Start free — no credit card required

Start validating emails today

Integrate in minutes. Works with any language. Cancel any time.

Get API Access on RapidAPI