Know before you send.
You submit your addresses. We tell you which ones are deliverable — and exactly where each one stopped. One per API call, or an entire list before a campaign.
100 free verifications when you sign up. No card, no subscription.
Four scenarios, played out as examples. No address is verified from this page.
Two questions, two answers.
"Does it arrive?" and "is it worth it?" aren't the same question. Mix them up, and you'll delete addresses that were perfectly fine.
Is it deliverable?
One answer, and only one: the mailbox accepts mail, refuses it, or we couldn't tell. That's a fact about the address, not an opinion.
deliverable [email protected]
Is it desirable?
A set of flags, alongside the verdict. Role address, disposable domain, catch-all domain: it's your call what to do with them.
role address, not personal [email protected]
The same address can carry both. contact@ is often exactly what you're after in prospecting — calling it 'risky' without saying whether it exists would leave you with only half the answer.
Every address stops at the first question that settles it.
We ask six questions, always in the same order. As soon as one of them answers, that's it: nothing goes further down the chain.
- 01 is the address well-formed? A comma instead of a dot, one space too many: it stops right here.
- 02 does the domain accept mail? A domain can exist and accept no mail at all. A company that's closed down, a site nobody's watching anymore.
- 03 is it a temporary inbox? Set up to catch a signup link and then disappear. It might still receive mail — that doesn't make it worth anything to you.
-
04
is it a role address?
contact@,info@,sales@. Flagged — and the check keeps going, because it might be exactly the one you're after. - 05 does the domain accept everything? Some domains say yes to any address. 'Valid' stops meaning much there, and we tell you so.
- 06 does the mailbox exist? The question that matters — the only one that earns the answer 'deliverable.'
The price doesn't depend on which question settles it. An address that stops at the first one is billed the same as any other: you asked a question, you got an answer. What isn't billed is what we couldn't verify.
Your lists, in the order you choose.
Every list joins the processing queue. You decide its priority — standard or boost.
Shared queue.
For cleanup you've planned ahead: you drop it off, you pick up the result when it's ready.
Jumps ahead of the standard queue.
When time is tight.
Priority is about order, not a deadline: we won't promise a turnaround we can't keep every single day. Single verifications — API, dashboard — never wait in line behind anyone.
You buy credits. One credit, one address.
No subscription, no commitment. The price drops by tier, and the tier you reach applies to the whole quantity — you can check the total with a single multiplication.
| Starting at | Price per address | Total |
|---|---|---|
| 1,000 credits | 0.0059 € | 5.90 € |
| 10,000 credits | 0.0049 € | 49.00 € |
| 50,000 credits | 0.0039 € | 195.00 € |
| 100,000 credits | 0.0029 € | 290.00 € |
100 free verifications
At signup, no credit card required. Enough to see for yourself.
Top up from 1,000 to 1,000,000
Top up whenever you want, for any amount within these limits.
Unverifiable, not billed
If we can't reach a conclusion, we retry, then refund the credit.
The same thing, through a different door.
Same engine, same verdicts, same meter. A key is issued from the dashboard, and revoked in the same place.
The request
# one address, instant response
curl -X POST https://.../api/v1/verify \
-H "Authorization: Bearer $CLE" \
-H "Accept-Language: en" \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}'
Pass an idempotency_key and the same call replayed only gets billed once. For an entire list, POST /api/v1/batches acknowledges receipt right away and works in the background.
The response
{
"data": {
"email": "[email protected]",
"deliverability": "valid",
"deliverability_label": "deliverable",
"reason": "mailbox_accepted",
"reason_label": "mailbox accepted by the receiving server",
"confidence": "high",
"confidence_label": "high",
"flags": [
{ "code": "role_address",
"label": "role address, not personal" }
]
},
"credits_remaining": 4871
}
Every value comes in two forms: a stable code you filter on, and a label meant for display. Same fields, same shape, whether you're checking one address or a whole batch. Labels follow the Accept-Language header, in the languages the service ships: build your logic on the code, never the label.
deliverability answers 'does it arrive.' flags answers 'is it worth it.' Never one in place of the other.
What we don't do.
You're trusting us with the addresses of people who never asked to hear from us. Here's what we refuse to do.
We never email your addresses
Verifying an address sends no message, no test, no receipt. An address never becomes a recipient just because it passed through us.
Your addresses never enter a log
No technical trace, no error queue, no incident report. It's a rule enforced in the code, not just an intention: a test fails if an address ever turns up there.
Your lists are actually erased
An address that fails basic input checks is never stored at all. A dead address is kept only as an unreadable fingerprint. And the list you upload is erased once its retention period passes — not archived.
We never sell your data
Your lists are never resold, shared, or reused — not by us, not by anyone else. Real erasure guarantees it: what's destroyed at the end of the retention period can't be monetized.
Your inbox isn't the only thing that can fail
DomainHealth checks whether your domain itself is set up to send mail safely — free report, no account needed.
See DomainHealthTry it on your worst list.
The one nobody dares to use. 100 free verifications, no credit card — enough to find out what it's really worth before you touch it.
Create an account