COMING SOON  ·  Join the Waitlist

Email verification
launching soon

Real SMTP handshakes. Disposable detection. MX validation. Protect your sender score with enterprise-grade checks — be the first to know when we go live.

99.1%
Accuracy
< 1s
Per check
SMTP
Handshake
$0
To start

Every bad address is a bounce. Every bounce hurts your domain. Verify before you send.

Get early access & launch updates

How it works

Six-layer verification engine

Every email goes through 6 progressive checks before we return a verdict.

01
🔤

Syntax Check

RFC 5322 grammar validation catches malformed addresses instantly.

02
🌐

DNS / MX Lookup

Validates the domain exists and has working mail exchange records.

03
🤝

SMTP Handshake

We initiate a real SMTP conversation to confirm the mailbox exists without sending mail.

04
🗑️

Disposable Filter

Cross-references 15,000+ temporary email domains (Mailinator, Guerrilla, etc.)

05
🎣

Catch-All Detection

Identifies domains that accept all mail — flags them as "risky" to protect your list.

06
📊

Deliverability Score

Outputs a 0-100 score and detailed status: deliverable / risky / undeliverable.

Trace Console

Not every @gmail is invalid.
Not every @microsoft exists.

These are real SMTP probes run live against Google & Microsoft mail servers — see why james.wilson@gmail.com passes while support@gmail.com doesn't.

james.wilson@gmail.com ✓ Valid
→ syntax_check ... PASS
→ disposable_check(gmail.com) ... CLEAN
→ dns_mx_lookup(gmail.com) ...
← MX: aspmx.l.google.com [5]
→ catch_all_probe(gmail.com) ...
← NOT catch-all — Google validates per-mailbox
→ connect(aspmx.l.google.com:25)
← 220 mx.google.com ESMTP ready
→ RCPT TO:<james.wilson@gmail.com>
← 250 OK — Mailbox confirmed ✓
✦ DELIVERABLE smtp:250 2132ms score:99
azure@microsoft.com ✓ Valid
→ syntax_check ... PASS
→ dns_mx_lookup(microsoft.com) ...
← MX: microsoft-com.mail.protection.outlook.com [0]
→ catch_all_probe(microsoft.com) ...
← NOT catch-all — Microsoft validates per-mailbox
→ connect(microsoft-com.mail.protection.outlook.com:25)
← 220 BN9PR04CA0073.outlook.com ESMTP ready
→ RCPT TO:<azure@microsoft.com>
← 250 OK — Mailbox confirmed ✓
✦ DELIVERABLE smtp:250 2301ms score:97
support@gmail.com ✗ Invalid
→ syntax_check ... PASS
→ disposable_check(gmail.com) ... CLEAN
→ dns_mx_lookup(gmail.com) ...
← MX: aspmx.l.google.com [5]
→ catch_all_probe(gmail.com) ... NOT catch-all
→ RCPT TO:<support@gmail.com>
← 550 5.1.1 The email account does not exist
→ is_role_address(support) ... FLAG: role prefix
✗ UNDELIVERABLE smtp:550 387ms role:true

Real output.
Zero black boxes.

Every verification exposes a full Trace Console — the raw SMTP dialogue captured step-by-step so you understand exactly why an address passed, failed, or hit a catch-all.

Call our REST API with a single line. Get back structured JSON with smtp_code, mx_host, disposable + catch-all flags, and a machine-readable verdict in under a second.

✓ DELIVERABLE ⚠ CATCH-ALL 🔛 DISPOSABLE ⚠ ROLE
POST /api/verify/single — ValidMy API
# cURL request
curl -X POST https://validmy.email/api/verify/single \
  -H "X-Api-Key: vm_your_key" \
  -d '{"email":"james.wilson@gmail.com"}'
# Response (2132 ms)
{
  "email":        "james.wilson@gmail.com",
  "status":      "valid",
  "smtp_code":    250,
  "mx_host":     "aspmx.l.google.com",
  "is_catch_all": false,
  "is_disposable": false,
  "is_role":      false,
  "latency_ms":   2132,
  "deliverable":  true
}
Transparency

See every handshake step

Unlike black-box verifiers, ValidMy shows you the full SMTP trace — so you know exactly why an email passed or failed.

SMTP Handshake Trace — sarah.johnson@gmail.com
→ syntax_check ... PASS
→ disposable_check(gmail.com) ... CLEAN
→ dns_mx_lookup(gmail.com) ...
← MX: aspmx.l.google.com [5] FOUND
→ catch_all_probe(gmail.com) → NOT catch-all
→ connect(aspmx.l.google.com:25) ...
← 220 mx.google.com ESMTP ready
→ EHLO mailverifier.trade
← 250-mx.google.com at your service
→ MAIL FROM:<verify@mailverifier.trade>
← 250 OK
→ RCPT TO:<sarah.johnson@gmail.com>
← 250 OK — Mailbox confirmed ✓
→ RSET && QUIT
✦ verdict: DELIVERABLE smtp:250 1994ms score:99/100
Platform

Built for developers & marketers

Everything you need to keep your lists clean and your inbox rate high.

REST API
Integrate in minutes. Single verify, bulk verify, and usage endpoints. OpenAPI/Swagger docs included.
📁
Bulk CSV Upload
Upload lists up to 50,000 emails via dashboard or API. Get results as JSON or CSV download.
🔑
API Key Auth
Per-account API keys with rotation support. Use in header or query param for easy integration.
📊
Live Dashboard
Real-time usage charts, credit balance, overage tracking, and billing management in one place.
🔍
SMTP Trace
Full SMTP handshake log for every verification — see exactly what the mail server responded.
🔄
30-Day Cache
Previously verified emails are cached 30 days. Re-checking the same address costs zero credits.
Compare

ValidMy vs the field

We checked the competition. Here's how we stack up.

Feature ValidMy ZeroBounce NeverBounce Kickbox
Entry price / mo$4.99$18$49$30
Free tier emails1,00010010100
SMTP handshake trace✓ ShownHiddenHiddenHidden
Add-on bulk packs
Overage billing$0.01$0.008$0.008$0.01
30-day result cache✓ Free
REST API included✓ All plansPaid only
50K pack price$5.00$90$40$47

Plug into any AI agent

ValidMy ships a public Model Context Protocol server. Connect Claude, GPT-4o, or any MCP-compatible tool to verify emails directly inside your AI workflows.

# In your Claude / Cursor / Cline MCP config:
{
  "validmy": {
    "url": "https://validmy.email/mcp",
    "headers": { "X-Api-Key": "vm_YOURKEY" }
  }
}
verify_email verify_bulk get_credits
API docs

Start verifying in 60 seconds

No credit card. No contracts. 1,000 free checks, then scale as you grow.

View API docs