Real-time email validation with MX lookup, disposable domain detection, and role account identification. Clean your email lists, reduce bounces, and improve deliverability.
Read the DocsRFC-compliant email format checking catches malformed addresses before they hit your system.
Verifies the domain can receive mail by checking MX DNS records in real-time.
Identifies temporary email providers like Mailinator, Guerrilla Mail, and 10 Minute Mail.
Detects generic role accounts (admin@, info@, support@) vs real personal addresses.
Get a 0-100 confidence score for every email, combining all validation signals.
Sub-100ms responses on most queries. Built with FastAPI and async Python.
Test an email address instantly — no API key required. Rate limited to 3 requests per minute.
Get started in minutes with these code examples for your language.
import requests
# Your API key from https://emailvalidation.ewabeachwebcreations.com
API_KEY = "ev_your_api_key_here"
resp = requests.post(
"https://emailvalidation.ewabeachwebcreations.com/api/validate",
headers={
"X-API-Key": API_KEY,
"Content-Type": "application/json"
},
json={"email": "user@gmail.com"}
)
data = resp.json()
print(f"Valid: {data['is_valid']}")
print(f"Score: {data['score']}/100")
print(f"MX Record: {data['mx_record']}")
print(f"Disposable: {data['is_disposable']}")
# Bulk validation with CSV
import csv, io
emails = ["user@gmail.com", "bad@", "test@mailinator.com"]
csv_file = io.StringIO()
writer = csv.writer(csv_file)
for e in emails:
writer.writerow([e])
resp = requests.post(
"https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk",
headers={"X-API-Key": API_KEY},
files={"file": ("emails.csv", csv_file.getvalue(), "text/csv")}
)
result = resp.json()
print(f"Total: {result['total']}, Valid: {result['valid_count']}, Invalid: {result['invalid_count']}")
// Your API key from https://emailvalidation.ewabeachwebcreations.com
const API_KEY = "ev_your_api_key_here";
// Single validation
async function validateEmail(email) {
const resp = await fetch(
"https://emailvalidation.ewabeachwebcreations.com/api/validate",
{
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
}
);
const data = await resp.json();
console.log(`Valid: ${data.is_valid}`);
console.log(`Score: ${data.score}/100`);
console.log(`MX: ${data.mx_record}`);
console.log(`Disposable: ${data.is_disposable}`);
return data;
}
// Bulk validation
async function validateBulk(emails) {
const blob = new Blob(
[emails.map(e => e + "\n").join("")],
{ type: "text/csv" }
);
const formData = new FormData();
formData.append("file", blob, "emails.csv");
const resp = await fetch(
"https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk",
{
method: "POST",
headers: { "X-API-Key": API_KEY },
body: formData,
}
);
return resp.json();
}
// Usage
validateEmail("user@gmail.com").then(console.log);
# Single email validation
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate \
-H "X-API-Key: ev_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"email": "user@gmail.com"}'
# Bulk validation from CSV file
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk \
-H "X-API-Key: ev_your_api_key_here" \
-F "file=@emails.csv"
# Create a free API key
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/keys/create \
-H "Content-Type: application/json" \
-d '{"name": "My Key", "plan": "free"}'
# Free demo (no API key needed, rate limited)
curl "https://emailvalidation.ewabeachwebcreations.com/api/validate-demo?email=user@gmail.com"
# Check usage dashboard
curl "https://emailvalidation.ewabeachwebcreations.com/dashboard?api_key=ev_your_api_key_here"
<?php
// Your API key from https://emailvalidation.ewabeachwebcreations.com
$apiKey = "ev_your_api_key_here";
// Single validation
function validateEmail($email, $apiKey) {
$ch = curl_init("https://emailvalidation.ewabeachwebcreations.com/api/validate");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-API-Key: $apiKey",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode(["email" => $email])
]);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
$data = validateEmail("user@gmail.com", $apiKey);
echo "Valid: " . ($data['is_valid'] ? 'true' : 'false') . "\n";
echo "Score: " . $data['score'] . "/100\n";
echo "Disposable: " . ($data['is_disposable'] ? 'true' : 'false') . "\n";
?>
require 'net/http'
require 'json'
require 'uri'
# Your API key
API_KEY = "ev_your_api_key_here"
# Single validation
def validate_email(email)
uri = URI("https://emailvalidation.ewabeachwebcreations.com/api/validate")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = API_KEY
request["Content-Type"] = "application/json"
request.body = { email: email }.to_json
response = http.request(request)
JSON.parse(response.body)
end
data = validate_email("user@gmail.com")
puts "Valid: #{data['is_valid']}"
puts "Score: #{data['score']}/100"
puts "MX Record: #{data['mx_record']}"
# Bulk validation (requires csv gem)
require 'csv'
def validate_bulk(emails, api_key)
csv_string = CSV.generate { |csv| emails.each { |e| csv << [e] } }
uri = URI("https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
boundary = "BOUNDARY#{Random.rand(100000)}"
body = []
body << "--#{boundary}"
body << "Content-Disposition: form-data; name="file"; filename="emails.csv""
body << "Content-Type: text/csv"
body << ""
body << csv_string
body << "--#{boundary}--"
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = api_key
request["Content-Type"] = "multipart/form-data; boundary=#{boundary}"
request.body = body.join("\r\n")
response = http.request(request)
JSON.parse(response.body)
end
package main
import (
"bytes"
"encoding/csv"
"encoding/json"
"fmt"
"io"
"mime/multipart"
"net/http"
"strings"
)
const apiKey = "ev_your_api_key_here"
type ValidationResult struct {
Email string `json:"email"`
IsValid bool `json:"is_valid"`
Reason string `json:"reason"`
MxRecord string `json:"mx_record"`
IsDisposable bool `json:"is_disposable"`
IsRoleAccount bool `json:"is_role_account"`
Score int `json:"score"`
}
type BulkResult struct {
Total int `json:"total"`
ValidCount int `json:"valid_count"`
InvalidCount int `json:"invalid_count"`
ProcessingTimeMs int `json:"processing_time_ms"`
Results []ValidationResult `json:"results"`
}
// Single validation
func validateEmail(email string) (*ValidationResult, error) {
body := map[string]string{"email": email}
jsonBody, _ := json.Marshal(body)
req, _ := http.NewRequest("POST",
"https://emailvalidation.ewabeachwebcreations.com/api/validate",
bytes.NewBuffer(jsonBody))
req.Header.Set("X-API-Key", apiKey)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result ValidationResult
json.NewDecoder(resp.Body).Decode(&result)
return &result, nil
}
// Bulk validation
func validateBulk(emails []string) (*BulkResult, error) {
var buf bytes.Buffer
writer := multipart.NewWriter(&buf)
csvWriter := csv.NewWriter(io.Writer(nil))
for _, e := range emails {
csvWriter.Write([]string{e})
}
part, _ := writer.CreateFormFile("file", "emails.csv")
for _, e := range emails {
part.Write([]byte(e + "\n"))
}
writer.Close()
req, _ := http.NewRequest("POST",
"https://emailvalidation.ewabeachwebcreations.com/api/validate/bulk",
&buf)
req.Header.Set("X-API-Key", apiKey)
req.Header.Set("Content-Type", writer.FormDataContentType())
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var result BulkResult
json.NewDecoder(resp.Body).Decode(&result)
return &result, nil
}
func main() {
result, _ := validateEmail("user@gmail.com")
fmt.Printf("Valid: %v, Score: %d\n", result.IsValid, result.Score)
}
Get a free API key and validate your first email:
# Create a sandbox API key
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/keys/create \
-H "Content-Type: application/json" \
-d '{"name": "My Test Key", "plan": "starter"}'
# Validate an email
curl -X POST https://emailvalidation.ewabeachwebcreations.com/api/validate \
-H "X-API-Key: *** \
-H "Content-Type: application/json" \
-d '{"email": "user@gmail.com"}'