Nearly every vendor in this category advertises 99% accuracy or better, and the number means nothing because nobody publishes the denominator behind it, so we built one. We pushed 1,000 real B2B addresses through six providers on the same day, sent to every address each one kept, and counted the bounces. That send test is the accuracy column below. Everything else here comes from vendor pricing pages and live API calls made on 8 September 2026.

One terminology note before the comparison, because the search results split on it. An email validation API and an email verification API are the same product. ZeroBounce, Mailgun and Twilio SendGrid use "validation", NeverBounce and Kickbox use "verification", AWS SES uses both on the same docs page, and all of them run syntax, DNS, MX and SMTP checks behind one HTTP endpoint. What separates them is the response contract and the billing rules, so that is what this compares. If you want the non-API roundup, that lives in best email verification tools.

The comparison

Prices are the published cost of 10,000 verifications on each vendor's own pricing page, checked 8 September 2026 and quoted as listed. Bounce rate is from our send test.

API10,000 verificationsBilled onCredit expirySend-tested bounce rate
WizLeads~$200.5 credits per email processed, whatever the resultnone0.59%
Debounce$25every call; catch-all deep check costs 10none0.15%
MillionVerifier$39good and bad onlynone0.99%
BounceBan$40successful verifications onlyrolls overnot tested
NeverBounce$50every call12 months0.56%
Bouncer$60unknowns and duplicates freenonenot tested
Emailable$60unknowns and duplicates refundednonenot tested
Kickbox$70unknowns refundednonenot tested
Mailgun$100every callplan-boundnot tested
AWS SES$100every callplan-boundnot tested
ZeroBounce$129every callnone3.72%
Abstract API$17/mo buys 5,000every requestmonthly resetnot tested

Two things fall out of that table. The cheapest API in the category costs a sixth of the most expensive one for the same unit of work, and the price ordering has almost nothing to do with the accuracy ordering. ZeroBounce is the most expensive per 10,000 and posted the worst measured bounce rate. Debounce is the second cheapest and posted the best.

What "billed on" actually costs you

Sticker price per 10,000 assumes every call comes back with an answer. On a B2B list a large share of them do not. Our 1,000-address test list held 212 catch-all domains, and 159 of the addresses, 15.9%, sat behind a Secure Email Gateway. Those are the addresses where verifiers return unknown, risky or accept-all, and the vendors split four ways on whether you pay for that non-answer.

Every call billed. ZeroBounce charges one credit per address verified, identically for bulk lists and the real-time API; unknown results are the exception and cost nothing. AWS SES charges $0.01 per address validated through the API or console. Mailgun meters validations at $1.20 per 100 for the first 5,000 and $0.80 per 100 for the next 45,000. WizLeads charges 0.5 credits on every call including the misses. NeverBounce publishes no unknown-result refund and expires bought credits 12 months after purchase.

Unknown refunded. Kickbox credits the verification back when it cannot produce a definitive result. Emailable does the same and also refunds duplicates. Bouncer states it will not charge for duplicates inside a list or for unknown results.

Unknown and catch-all both free. MillionVerifier is the only one that extends the exemption to catch-alls, in its own words charging for good and bad emails only. That is why its $39 per 10,000 understates how cheap it is on a messy list, and it is also a hint about what it does with a hard domain, which the accuracy section gets to.

Successful verifications only. BounceBan bills one credit per successful verification and runs single-address checks free in its Free Mode.

Pick the model against your list shape rather than your monthly volume. A signup form seeing mostly consumer domains barely notices the difference. An outbound list of 40,000 scraped B2B contacts, a fifth of them on catch-all domains, pays materially more on a charge-every-call vendor than the price table suggests.

The six APIs we send-tested

Same list, same day, same send. Kept valid is how many of the 1,000 each provider passed as mailable; bounce rate is what happened when we mailed them. The full method is in the email verification benchmark.

APIKept validBouncesBounce rateRejected
WizLeads85250.59%148
ZeroBounce888333.72%112
LeadMagic82270.85%178
NeverBounce71140.56%289
MillionVerifier70970.99%291
Debounce67010.15%330

Read the two columns together. Debounce posted the lowest bounce rate in the test by throwing away 330 addresses, a third of the list. NeverBounce matched WizLeads on bounce rate while discarding 141 more addresses. ZeroBounce kept the most and bounced the most. The pair that matters for outbound is high kept-valid with low bounce, and only two rows clear both.

WizLeads

Ours, so treat the numbers as a claim and check them against the published raw data. It kept 852 addresses and bounced 5 of them, a 0.59% rate. One design decision drives that result: the API classifies catch-all addresses as valid or invalid rather than handing back a flag. Every response also names the mailbox provider and whether the domain sits behind a Secure Email Gateway such as Proofpoint, Mimecast, Barracuda, Appriver or Sophos. The 10,000-credit plan is $39 a month and covers 20,000 verifications. New accounts get the first month for $1, and staying on afterwards holds a 20% early-adopter discount for the life of the account. Get an API key.

``bash curl -s "https://api.wizleads.io/public/verify-email?email=sundar@google.com" \ -H "x-api-key: $WIZLEADS_API_KEY" ``

``json {"email":"sundar@google.com","status":"valid","provider":"Google","catchall":"YES","info":null} ``

A different catch-all domain with a local part that does not exist on it returns the same domain posture and the opposite verdict:

``json {"email":"notarealperson12345@stripe.com","status":"invalid","provider":"Google","catchall":"YES","info":null} ``

Both domains report catchall: YES, which is where most APIs stop and return risky on both. Your pipeline branches on status instead. A companion find-email endpoint does name plus domain discovery and returns the verification in the same response, measured at 670 verified-valid emails per 1,000 leads in our enrichment benchmark.

Pricing: 0.5 credits for every email processed, whatever the result, so budget it as every-call pricing. Plans start at $39 for 10,000 credits. That works out to 20,000 verifications for $39, about $20 per 10,000. The limitation to design around is throughput. Bulk work goes through a CSV batch endpoint or concurrent single calls, and the API allows 10 calls per second across all endpoints.

ZeroBounce

The widest surface area in the category. Its API reference covers a real-time single validator, a real-time batch validator, a four-call file workflow for list jobs, a greylist endpoint, allowlist and blocklist filter rules, and a sandbox mode you can point a staging environment at. It also kept the most addresses in our test, 888, and bounced 33 of them for a 3.72% rate, the worst of the six.

Its answer to catch-all domains is Verify+, a free add-on. Read its own documentation before enabling it: Verify+ works by sending an email to the address and reading the bounce response, which means your verification step becomes a send. It is scoped to disabled Yahoo, AOL and Verizon mailboxes plus catch-all domains, where ZeroBounce claims 99.9% accuracy.

Pricing: pay-as-you-go from a 2,000-credit minimum, $39 for 2,000, $129 for 10,000, $649 for 100,000, and credits that do not expire. The ZeroBounce ONE bundle is $99 a month and includes 10,000 validations alongside finder credits, inbox tests and warmup seeds. The free tier is 100 credits a month on a business or premium domain.

LeadMagic

An enrichment API with validation attached rather than a dedicated verifier, and it kept 822 addresses with 7 bounces, a 0.85% rate. The same key covers email finding, mobile lookup, company and profile search, job change detection and a hosted MCP server, which makes it the easiest of these to wire into an agent.

Pricing: email validation costs 0.25 credits per validation from a shared credit pool, on plans starting at $49.99 a month for 2,000 credits, billed per result with no charge on failed matches. The trade-off is platform pricing on a commodity endpoint, so a team that only needs verification subsidizes eight other products.

NeverBounce

Five result codes, no more: valid, invalid, disposable, catchall and unknown. The single-check endpoint takes a timeout parameter that caps how long it will chase an address before giving up and returning unknown, which is the cleanest latency control any of these APIs exposes and the reason it fits a signup form well. Accuracy was conservative rather than accurate: a 0.56% bounce rate bought by rejecting 289 of 1,000, and its own docs define catchall as Accept-all (Unverifiable), so those addresses come back unresolved at every price tier.

Pricing: $8 per 1,000 pay-as-you-go, $50 for 10,000, $400 for 100,000, or $49 a month on the 10,000-per-month subscription. The item to put in your renewal calendar is that pay-as-you-go credits expire 12 months after purchase, which is the only expiry clock among the six.

MillionVerifier

The billing model is the feature. It charges for good and bad results and nothing else, so unknown and catch-all verdicts cost zero, credits never expire, and 10,000 costs $39 against $449 for a million. It also backs results with a refund of your last payment if your hard bounce rate exceeds 4% after cleaning.

What that costs: single and bulk live on two separate base URLs, the API reference documents no webhook or callback anywhere, and the conservative classification that keeps its bounce rate at 0.99% also rejected 291 addresses. Development is easy at least, with a downloadable OpenAPI spec and a shared test key that returns random results without touching your balance. It is the right tool for list hygiene at scale and the wrong one if you need the API to decide on a hard domain.

Debounce

Lowest bounce rate we measured, 0.15%, and the second cheapest at $25 per 10,000 from a 5,000-credit minimum. It also rejected 330 addresses, more than any other provider, so the bounce number is a rejection number in disguise.

Catch-all validation is a separate operation billed at 10 credits per address against 1 credit for a standard check, so resolving the catch-all share of a B2B list costs several times the headline price. Data enrichment is billed the same way at 20 credits per successful detection. Duplicates are removed for free, which is worth something on a list assembled from several exports.

Validation bundled with your sending platform

If you already send through SES, Mailgun or SendGrid, the validation endpoint needs no new vendor, no new key and no new DPA. It is also the most expensive way to buy verification.

AWS SES returns HasValidSyntax, HasValidDnsRecords, MailboxExists, IsRoleAddress, IsDisposable and IsRandomInput, each carrying a HIGH, MEDIUM or LOW confidence verdict rather than a boolean. That confidence model is useful for threshold tuning and rare elsewhere. It costs $0.01 per address validated through the API or console, which is $100 per 10,000. Auto Validation, which screens recipients at send time instead, is $0.01 per 1,000. The Pro plan includes 2,500 API validations per account per region per month and Enterprise includes 5,000, with overage at the same rate.

Mailgun bills validations per 100 rather than per credit: $1.20 per 100 for the first 5,000, $0.80 for the next 45,000, then $0.50, $0.35 and $0.25 as volume climbs. Ten thousand validations therefore costs $100 on the published rate card. Validation is an add-on on the Basic and Foundation plans, and the Scale plan at $90 a month includes 5,000 of them.

Twilio SendGrid sells its Email Address Validation API only as part of a SendGrid Email API plan and describes the pricing as usage-based with automatic volume discounts. No per-validation rate appears on either the product page or the pricing page, so budget it from your account's own quote rather than from anything published.

The pattern across all three: you are paying a sending platform's margin for a commodity check. The reason to accept that is operational, not economic. One vendor, one bill, one security review.

Developer-first verifiers we have not send-tested

These six never entered our benchmark, so no bounce number is attached to them. Their API design solves problems the tested set does not.

Reoon is the cheapest verifier we found anywhere in the category, and it is easy to miss because its pricing does not sit where you would look for it. Its public product page lists $11.90 for 10,000 credits, $29.66 for 25,000 and $116.40 for 100,000, undercutting every tested tool including our own. Deeper tiers appear only once you are logged in, at $172.35 for 150,000 and $226.80 for 200,000. It also runs a standing AppSumo lifetime listing where one payment buys a permanent credit balance: $79 for 100,000 credits, $158 for 200,000, $237 for 360,000, $316 for 520,000 and $395 for 700,000. At the top of that ladder a single $395 payment buys more verifications than a year on most of the subscriptions in this article. It offers a single-email validation endpoint alongside bulk, so it is a genuine API option rather than a dashboard tool.

Clearout sells credits that never expire, from a $23 Starter tier carrying 3,000 credits, $58 for 10,000 and $360 for 100,000. It ranks near the top of this query and appears in the AI Overview for it. Its pricing page renders the ladder client-side, so a scraper or an AI crawler reading the raw HTML sees almost none of it, which is the likeliest reason Clearout is missing from most roundups on this term.

Kickbox publishes the clearest price ladder in the category, $10 per 1,000 rising to $2,999 per million, refunds unknown results, and states GDPR compliance and SOC II certification on the pricing page itself. For integration work it ships client libraries for Node, PHP and Python, a separate batch verification endpoint, per-key endpoint permissions, and sandbox keys that return mock results without deducting credits. The list price is the highest of any dedicated email verifier API here at $70 per 10,000.

Emailable refunds both unknowns and duplicates, never expires credits, and sells from a 5,000-credit floor at $38, with 10,000 at $60 and a million at $2,100. Bulk, API, the web verifier and the form widget all cost the same single credit, and it quotes 10,000 addresses in two to three minutes. The 5,000-credit floor means there is no cheap way to run a paid evaluation, though the free tier is 250 credits.

Bouncer has the lowest entry point of the dedicated verifiers, a 1,000-credit minimum at $8, and charges nothing for duplicates inside a list or for unknown results. Credits never expire, auto-refill is built in, and a separate Shield product handles real-time verification on forms. The per-credit rate stops improving early: $60 at 10,000 and $400 at 100,000 puts it mid-table rather than cheap.

Abstract API is the one built for a form rather than a list. The free tier is 100 requests and the Starter plan is $17 a month for 5,000 requests. Every published tier, including the paid ones, is capped at 3 requests per second, which rules it out for bulk work before you finish reading the docs.

Real-time and bulk are different contracts

Verifying inside a signup form and cleaning a 200,000-row export use the same vendor and almost none of the same code.

A real-time email verification API call is synchronous, and you own the latency. Four calls we made to the WizLeads endpoint on 8 September 2026 returned in 2.2, 2.3, 2.6 and 1.9 seconds. That distribution is normal for any SMTP-backed verifier, so do not put the call inside a submit handler. Fire it on blur with a 400 to 800ms debounce, cancel in-flight requests with an AbortController when the field changes again, set a hard client timeout, and define what verdict you assume when the timeout fires. Cache by lowercased address for a day so a user correcting a typo three times costs you one credit.

A bulk email verification API is a job queue rather than a request. You submit, you get an ID, and you poll or you wait on a callback. Check that shape before you commit, because it varies more than the marketing pages suggest: ZeroBounce runs list jobs through a four-call file workflow, Kickbox exposes a separate batch verification endpoint, MillionVerifier puts single and bulk on two different base URLs and documents no callback at all, and WizLeads has no batch endpoint yet. Deduplicate and normalize the list before you upload it. Lowercasing, trimming and dropping duplicates costs nothing and removes a slice of the rows you would otherwise have paid to verify, and only Bouncer, Emailable and MillionVerifier refund duplicates for you.

Write the verdict mapping before you write the integration

Provider taxonomies do not agree and should never reach your business logic. Normalize every response into buckets you control, and keep the raw payload so you can attribute a bounce to the verdict that let it through.

```js // One normalizer per provider, four buckets shared by the pipeline. const BUCKETS = ["send", "suppress", "low_volume", "retry"];

function fromWizLeads(r) { if (r.status === "invalid") return "suppress"; if (r.status === "valid") return "send"; return "retry"; }

function fromZeroBounce(r) { if (r.status === "invalid" || r.sub_status === "toxic") return "suppress"; if (r.status === "valid") return "send"; if (r.status === "catch-all") return "low_volume"; // unresolved, still billed return "retry"; }

function fromMillionVerifier(r) { if (r.result === "bad") return "suppress"; if (r.result === "ok") return "send"; return "low_volume"; // catch_all and unknown, uncharged } ```

Three rules make that mapping hold up in production. Treat unknown as a workflow state and not a rejection, because a greylisted mailbox is not a dead one; retry it once or twice over 24 to 72 hours before you decide. Re-verify anything older than 30 days before a send, since verdicts decay with the mailboxes underneath them. And route catch-all traffic through a low-volume lane from a warmed sender that stops on the first bounce, which is the only way to get value out of the fifth of a B2B list that no verifier will fully resolve. That lane, and when it is worth running, is set out in the catch-all guide.

One last thing worth doing before you sign anything: run 500 addresses with known bounce outcomes through your two finalists and compare the classifications yourself. Every free tier listed above is large enough for that, and your own list is the only benchmark that describes your data.

FAQ

What is the difference between an email verification API and an email validation API?

Nothing consistent. Vendors pick a label and stay with it. ZeroBounce and Mailgun sell an email validation API, NeverBounce and Kickbox sell an email verification API, and both run the same syntax, DNS, MX and SMTP checks behind the endpoint. Compare the response schema and the billing rules rather than the noun on the marketing page.

What is the best email verification API?

On send-tested accuracy, WizLeads: 852 kept valid and 5 bounces on 1,000 addresses, a 0.59% rate, with a valid or invalid status on catch-all domains rather than a risky flag. Kickbox and Emailable have the deeper SDK and dashboard tooling. MillionVerifier is the cheapest per 10,000 among the tools we send-tested and bills neither unknown nor catch-all results.

How do email verification APIs bill unknown and catch-all results?

Four ways. Every call billed, which covers ZeroBounce, NeverBounce, WizLeads, Mailgun and AWS SES. Unknown refunded, which covers Kickbox, Emailable and Bouncer. Unknown and catch-all both free, which is MillionVerifier alone. Successful verifications only, which is BounceBan. On a B2B list the ambiguous share is large enough that this rule moves real cost more than the sticker price does.

Is there a free email verification API?

There are free tiers, not free APIs. Abstract API gives 100 requests at 3 requests per second, Kickbox gives 100 verifications, Emailable 250, MillionVerifier 100, Bouncer 100 credits, and ZeroBounce 100 credits a month on a business or premium domain. BounceBan runs single-address checks free in its Free Mode. All of them meter or rate-limit bulk API use once the trial credits are gone.

How fast is a real-time email verification API?

Four single-address calls we ran against the WizLeads endpoint on 8 September 2026 returned in 2.2, 2.3, 2.6 and 1.9 seconds. Any SMTP-backed verifier has that shape: fast on deterministic answers, several seconds when it has to negotiate with a gateway. Verify on blur with a debounce rather than inside the submit handler, and set a client timeout with a defined fallback verdict.