Paste an address to see whether it can actually receive mail. Checks syntax, MX records, disposable providers, role accounts and common typos.
No signup and no logging. For a handful of addresses this is free forever. For lists, use the API.
| Field | Reading it |
|---|---|
valid | The overall verdict. False as soon as any blocking check fails. |
deliverable | Whether mail can plausibly reach a mailbox. Null means the check could not complete, which is not the same as false. |
score | 0 to 100. Useful for ranking a list when you cannot act on a boolean. |
reason | Machine-readable cause: ok, disposable, no_mx, invalid_format, role_account and others. |
suggestion | A corrected address when the domain looks like a typo. |
A null result means the network could not answer, usually a timeout or a blocked port. Treating that as invalid throws away valid customers. Retry it, and only act on a definite false.
Addresses like info@, sales@ and noreply@ are perfectly deliverable and usually a poor signup. They belong to a department, not a person, and they generate support tickets rather than product usage. Flag them, then decide based on the flow.
One GET request returns everything on this page as JSON:
curl "https://mailprobe.kevin-c0319.workers.dev/v1/verify?email=name@example.com"
Set the x-api-key header to move from the anonymous hourly allowance to a monthly quota of 1,000 on the free tier.
Domain-level checks stop at the mail server. A mailbox-level answer needs an SMTP probe, exposed as the smtp field and only meaningful where the server does not accept everything.
The free flag marks large consumer providers. That is a signal, not a problem. Use it for B2B lead scoring, not for rejection.
The domain accepts mail for every address, so any answer about one mailbox is unreliable. Most verification services handle catch-all domains badly and report false positives. Treat them as unknown.
No. The endpoint answers and forgets. The only counters kept are per-key and per-IP usage totals, not the addresses.