A low-latency email verification API: syntax, MX lookup, disposable & temporary address detection, role-account flagging, and typo correction — in one call.
邮箱可达性验证 API:语法校验 + MX 查询 + 一次性邮箱识别 + 角色地址标注 + 拼写纠错,一次请求全返回。免费档无需信用卡。
Runs entirely in your browser. No signup, no logging.
Every response includes a 0–100 deliverability score and a machine-readable reason code.
| Check | What it does | Why it matters |
|---|---|---|
syntax | RFC 5322 practical subset validation | Catches typos and malformed input before you spend money sending |
mx | MX record lookup with provider fingerprinting | No MX = the domain cannot receive mail at all |
disposable | 1,400+ temporary email domains (yopmail, mailinator, guerrillamail…) | Removes burners that inflate your list and tank engagement |
role | Flags info@, support@, noreply@ and similar | Departmental addresses convert poorly and complain more |
free | Detects Gmail, QQ, 163, Outlook and other consumer domains | Essential signal for B2B lead scoring |
suggestion | zhang@gmail.co → zhang@gmail.com | Recovers signups that would otherwise be lost |
smtp (self-hosted only) | Mailbox-level probe with catch-all detection | Highest confidence tier. The hosted Workers endpoint cannot do this (no raw TCP); it is in the Node build |
curl "https://mailprobe.kevin-c0319.workers.dev/v1/verify?email=test@gmail.com"
# → {
# "email":"test@gmail.com","valid":true,"deliverable":true,"reason":"ok","score":90,
# "checks":{"syntax":true,"disposable":false,"free":true,"role":false,
# "mx":{"ok":true,"source":"dns","records":[{"exchange":"gmail-smtp-in.l.google.com","priority":5}]}},
# "provider":"google-workspace","duration_ms":18
# }
// JavaScript
const r = await fetch('https://mailprobe.kevin-c0319.workers.dev/v1/verify?email=' + encodeURIComponent(email), {
headers: { 'x-api-key': process.env.MAILPROBE_KEY }
});
const { valid, reason, score } = await r.json();
# Python
import httpx
r = httpx.get("https://mailprobe.kevin-c0319.workers.dev/v1/verify",
params={"email": email}, headers={"x-api-key": KEY}).json()
if r["valid"] and r["score"] >= 70:
send(email)
1,000 verifications a month, no credit card. Enter your email and the key is issued immediately.
Free to start, no credit card. When you outgrow it, pay once. Nothing recurring.
| Endpoint | Method | Auth | Notes |
|---|---|---|---|
/v1/verify?email= | GET | optional | Anonymous: 60 req/hour by IP |
/v1/verify | POST | optional | Body: {"email":"…","smtp":true} |
/v1/verify/batch | POST | required | Up to 20 emails per call (paid plans) |
/v1/signup | POST | — | Issues a free key, 1,000/month. Body: {"email":"you@company.com"} |
/health | GET | — | Uptime monitoring |
Reason codes: ok · invalid_format · illegal_chars · too_long · no_mx · mx_timeout · disposable · typo_suspect · mailbox_not_found
Yes. The free tier gives 1,000 verifications per month with no credit card. Anonymous requests are also accepted at 60/hour per IP so you can test before signing up.
No. Verification is stateless — addresses are processed in memory and not persisted. Only an aggregate request count is kept for quota accounting.
MX + disposable + syntax catches the large majority of invalid addresses and needs no extra infrastructure. Mailbox-level SMTP probing is not available on the hosted endpoint, because Cloudflare Workers cannot open raw TCP connections. It ships in the self-hosted Node build, and even there it is unreliable: many providers block port 25. MailProbe treats a failed probe as inconclusive rather than invalid, so a network error never marks a good address as dead.
Yes. The Node build runs anywhere with node src/server.js, and the same source also builds a single-file Cloudflare Worker, so it can run on a free Workers account. That self-hosted Node build is also the only one that can do SMTP mailbox probing.
MX lookup is global. Provider fingerprinting covers Google Workspace, Microsoft 365, Tencent Exmail (QQ / Foxmail), NetEase (163 / 126 / yeah), Aliyun, Feishu, Zoho, Yandex, ProtonMail and secure gateways.