Pay per email — no monthly fee

Email Validation API.
10× cheaper than ZeroBounce.

Five-layer deliverability pipeline in one API call. Syntax, MX record, disposable domain detection, catch-all probe, and SMTP verification. $0.0008 per email. No contracts. No minimums.

$0.0008per email validated
10×cheaper than ZeroBounce
5validation layers
0–100deliverability score
Pricing
Simple per-email pricing. No surprises.

Pay only for what you use. Stripe charges your card automatically at month end. No setup fee, no monthly minimum.

$0.0008
per email — billed monthly via Stripe
No monthly fee No minimum volume No contracts Automatic billing Cancel anytime
ZeroBounce$0.0080 / email10× cheaper
NeverBounce$0.0070 / email8.7× cheaper
MillionVerifier$0.0030 / email3.7× cheaper
Monthly volumeYour costvs. ZeroBounceTypical use case
10,000$8vs. $80Startup list cleaning
100,000$80vs. $800Marketing agency
1,000,000$800vs. $8,000SaaS platform / CRM sync
10,000,000$8,000vs. $80,000Email marketing platform
How it works
Five validation layers. One API call.

Each email address passes through five checks sequentially. Results come back as structured JSON with a deliverability score from 0 to 100.

L1
Syntax validation
RFC 5321/5322 compliance. Catches malformed addresses instantly without any network call.
<1ms
L2
MX record lookup
Verifies the domain has mail servers configured. Results are cached for 6 hours to keep latency low.
~50ms
L3
Disposable domain detection
Checked against 350,000+ known throwaway email providers (Mailinator, Guerrilla Mail, etc.). Updated weekly.
<1ms
L4
Catch-all detection
Identifies domains that silently accept mail for any address, making individual mailbox verification unreliable.
~200ms
L5
SMTP mailbox verification
EHLO → MAIL FROM → RCPT TO handshake. Confirms the specific mailbox exists. No email is ever sent.
~300ms
Score guide: 100 Valid, mailbox confirmed  ·  60 Valid, provider blocks SMTP (Gmail / Outlook / Yahoo)  ·  20 Disposable or catch-all  ·  0 Invalid syntax or no MX
API Reference
One endpoint. Plain JSON.

POST a batch of up to 500 emails. Authenticate with Authorization: Bearer YOUR_KEY or X-Api-Key: YOUR_KEY.

# pip install emailval-client
from emailval import EmailValidator

ev      = EmailValidator(api_key="YOUR_API_KEY")
results = ev.validate(["user@company.com", "test@mailinator.com", "bad-address"])

for r in results:
    print(r.email, "→ score", r.score, "| valid:", r.is_valid)
curl -X POST https://api.emailval.net/v1/validate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"emails":["user@company.com","test@mailinator.com","bad-address"]}'
const r = await fetch("https://api.emailval.net/v1/validate", {
  method:  "POST",
  headers: { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({ emails: ["user@company.com", "test@mailinator.com", "bad-address"] }),
});
(await r.json()).results.forEach(x => console.log(x.email, "→", x.score));
HTTP 200 — Response
{
  "results": [
    { "email": "user@company.com",  "valid_syntax": true,  "has_mx": true, "is_disposable": false,
      "is_catch_all": false, "smtp_result": "accepted", "score": 100, "error": null },
    { "email": "test@mailinator.com", "valid_syntax": true,  "is_disposable": true,
      "smtp_result": "skipped",  "score": 20,  "error": null },
    { "email": "bad-address",        "valid_syntax": false, "score": 0,   "error": null }
  ],
  "meta": { "processed": 3, "valid_count": 1, "invalid_count": 2, "duration_ms": 312 }
}

Endpoint: POST https://api.emailval.net/v1/validate  ·  Max 500 emails per batch  ·  Charged per email submitted (all attempts, including invalid syntax)

Official Python client: pip install emailval-client PyPI → GitHub →
Features
Built for automated pipelines.

No CSV uploads. No dashboards. Pure API — designed to run inside your existing code with zero manual steps.

Batch up to 500 emails
Submit a list and get all results in one response. Concurrent processing — 500 emails typically complete in under 2 seconds.
🔑
Instant self-serve access
Pay via Stripe. Your API key arrives by email within seconds. No sales call, no trial approval, no waiting.
💳
Automatic monthly billing
Stripe charges your card at the end of each billing period. No invoices to approve, no manual renewals.
🛡️
GDPR compliant
Email addresses are processed in memory and never stored. No logging of input data. Standard DPA terms available.
📊
350k+ disposable domains
Blocklist updated weekly. Catch Mailinator, Guerrilla Mail, and thousands of newly created throwaway providers.
🔧
skip_smtp option
Need millisecond responses? Pass "skip_smtp": true to run layers 1–3 only and skip the SMTP handshake.
FAQ
Common questions.
How does billing work exactly?
You subscribe via Stripe (enter your card once). Every email submitted to the API is counted at $0.0008. At the end of each billing period Stripe charges your card automatically. There is no monthly minimum — validate 0 emails and pay $0.
Am I charged for invalid emails or errors?
Yes — you are charged per email submitted, not per email that passes validation. Every address in your batch triggers the pipeline regardless of the result. This is standard practice and is documented in the welcome email and API response.
Why does Gmail/Outlook return score 60, not 100?
Google, Microsoft, Yahoo, and Apple block SMTP-level mailbox verification — their servers accept any RCPT TO command regardless of whether the mailbox exists. Scores are capped at 60 for these providers. Every email validation service has this limitation — it's a deliberate anti-spam measure on their side.
Do you store the email addresses I submit?
No. Email addresses are processed in memory and discarded immediately after the API response is returned. We log only aggregate batch counts (e.g. "500 emails processed, 412 valid") for billing — never the addresses themselves.
What's the maximum batch size?
500 emails per API call. For larger lists, split into batches of 500 and send them concurrently. A 100,000-address list takes 200 API calls and typically completes in a few minutes.
How do I cancel?
Cancel anytime from the Stripe customer portal (link in your welcome email). Your API key is deactivated at the end of the current billing period. You will never be charged after cancellation.

Ready to clean your list?

API key delivered in seconds. Start validating immediately.

Get API Key — $0.0008 / email →