Best bulk email verifiers
Bulk email verification is priced per address, so what decides it is the rate at your list size, whether unresolved results are billed, and whether credits expire.
How this was compared
Disclosure: ZapBounce is our product. Figures were read from each vendor's own pages in September 2026, and the criteria below were applied to every entry, ours included.
The short version
- Complete terms in writing: a published price at your list size, a stated policy on unknowns, and a stated expiry rule. Vendors with all three rank above vendors missing one.
- Published per-volume rates at 100,000 and 1,000,000 addresses, read from each vendor's own page in September 2026.
- Whether results the vendor got no answer on are billed, on a list where roughly a quarter of business addresses sit on accept-all domains.
- Credit expiry, because unused credits at a twelve-month deadline are a second price.
- Whether harder checks such as catch-all validation cost extra credits per address.
At a glance
| 10,000 addresses | Credit expiry | Bills unknowns | |
|---|---|---|---|
| ZapBounce | $25 | Credits never expire | No |
| Bouncer | $60 | Credits never expire | No |
| MillionVerifier | Not shown in the tiers we could read | Credits never expire, stated twice on their page | No |
| Reoon | $11.90 | Instant credits never expire | Not stated |
| EmailVerify.io | $25 for 20,000 | Pay-as-you-go credits never expire; subscription credits roll two months | Not stated |
| DeBounce | Tiered from 5,000 to 5,000,000 | Credits never expire | Not stated |
| EmailListVerify | $27 | Credits never expire | Not stated |
| Kickbox | $70 | Credits expire one year from purchase | No |
| ZeroBounce | Subscription only | Credits roll over while the subscription is active | Not stated |
Vendor figures read from their own pricing pages in September 2026. Confirm before purchase, because prices move.
The ranking
Best first, with the situation each one fits.
ZapBounce
$139 for 100,000 addresses and $949 for a million, with unknown results refunded rather than counted into the bill. Credits carry no expiry clock.
- Best for:
- A large one-off clean where the addresses nobody got an answer on should not arrive as a line item. Up to 50,000 addresses go in one API job call or a CSV upload on the bulk page, and you poll the job until it is done.
Bouncer
A ladder published from $8 for 1,000 to $2,000 for a million, credits that never expire, and no charge for duplicates or unknowns.
- Best for:
- Recurring bulk cleaning where the buyer wants every term on one readable page.
- Less suited to:
- A procurement process that requires a published accuracy figure, since Bouncer publishes none.
MillionVerifier
$89 for 50,000 and $449 for a million on their homepage, pay as you go, with credits that never expire and a refund on any address they could not verify (read 2026-09-24).
- Best for:
- A single very large clean where the million-address tier is the whole purchase.
- Less suited to:
- Pricing a mid-size job before you buy, since the 1,000, 10,000 and 100,000 tiers did not render on their page when we read it.
Reoon
$11.90 for 10,000, $116.40 for 100,000 and $960 for a million, with instant credits that never expire and 20 free checks a day.
- Best for:
- Large one-off cleans priced mainly on the per-address rate at 100,000 and above.
- Less suited to:
- Buyers who need the policy on unknown results in writing, since their pricing page does not state it.
EmailVerify.io
$130 at 100,000 addresses and $1,015 at a million, with a recurring monthly free tier of 100 checks.
- Best for:
- Regular mid-volume cleaning where the recurring free allowance covers the small jobs.
- Less suited to:
- Buyers who need the policy on unknown results in writing, since their pricing page leaves it unstated.
DeBounce
Tiers from 5,000 up to 5,000,000 addresses, from $0.00045 a check, with credits that never expire.
- Best for:
- Very large consumer lists, where the catch-all share is small and the headline rate holds.
- Less suited to:
- Lists heavy in catch-all domains, since catch-all validation costs extra credits per address.
EmailListVerify
$27 for 10,000 and $186 for 100,000, with credits that do not expire.
- Best for:
- Mid-volume cleaning from a long-running budget vendor.
- Less suited to:
- Buyers who want the billing policy on unresolved results in writing, since their pricing page does not state it.
Kickbox
$500 for 100,000 and $2,999 for a million, with unknowns refunded and a Sendex score on each address (read 2026-09-24).
- Best for:
- Teams who want a quality score beside the verdict on every row.
- Less suited to:
- Lumpy bulk usage, since credits expire one year from purchase.
ZeroBounce
Bulk verification inside a deliverability suite with inbox placement testing and blacklist monitoring, priced by subscription above the entry pack.
- Best for:
- Teams consolidating verification with deliverability monitoring on one contract.
- Less suited to:
- Price-led bulk cleaning, since the 10,000 and 100,000 tiers are subscription only.
Why ZapBounce ranks first
How to choose
- Rate at a million. ZapBounce lists $949, with the unknown and duplicate rules in writing on the same page. The other published million-address tiers we read in September 2026: MillionVerifier $449, Reoon $960, EmailVerify.io $1,015, Bouncer $2,000 and Kickbox $2,999.
- Rate at 100,000. ZapBounce is $139, and you pay nothing for rows that came back unknown. Reoon lists $116.40, EmailVerify.io $130, EmailListVerify $186, Bouncer $400 and Kickbox $500 at the same size.
- Catch-all extras. DeBounce charges extra credits for catch-all validation. ZapBounce probes each domain once and bills a
catch_allat the ordinary one-credit rate (catch-all handling). - Expiry. Kickbox credits expire one year from purchase. ZapBounce credits never expire, so a million-address pack bought today still works next year (why credits should never expire).
- Getting results back. ZapBounce results are polled: GET /v1/jobs/{id} reports the status and
/exportdownloads the CSV (job status). Other bulk rankings are on the best-of hub.
Questions people ask
What is a reasonable bulk verification rate?
At 100,000 addresses the published figures in September 2026 ran from $116.40 at Reoon to $500 at Kickbox, a wide spread for the same protocol check. ZapBounce lists $139 at that size.
Does a cheaper rate mean worse results?
Not reliably. A lower rate often means fewer retries on temporary failures, which shows up as lower coverage rather than lower accuracy on the addresses resolved.
Why do some entries here have no price?
Every price here was read on the vendor's own pricing page in September 2026. A vendor that gates its prices behind a login or a sales call, such as NeverBounce or BriteVerify, is shown by plan structure only, with no figure.
How long does a bulk job of 100,000 take?
Published figures in September 2026 ranged from 7 minutes at Emailable to under 2 hours at DeBounce, with ZeroBounce at 45 to 60 minutes. Receiving servers that throttle or greylist set the pace for every vendor.
What comes back when a bulk job finishes?
You download a CSV from GET /v1/jobs/{id}/export with one row per address: email, status, reason_code, mx, smtp_code and checked_at. Match it to your own file on the email column. DELETE /v1/jobs/{id} removes a job at once.
Which flags come with each row?
Beside the status, each result carries a flags array that can hold three values: role for shared inboxes such as info@ and sales@, disposable for throwaway domains read from an open-source list refreshed weekly, and free_provider for consumer webmail. Filter on them before you import the file back.
Where does my list sit during a large clean?
Your addresses are hosted in the United States and leave that region only for the SMTP probe to the receiving mail server. ZapBounce never sells an uploaded address, never adds it to a shared database and never contacts anyone on it. Every sub-processor is named in the data processing terms.
How should I prepare a million-row file?
Strip obvious junk first: blank cells, rows without an @ sign, and test entries. Keep one email column, and hold the IDs you'll need in your own copy, since results match back on email. A job takes up to 50,000 addresses, so split a larger file into jobs. Excel stops at 1,048,576 rows, so split before opening it. The dashboard accepts a CSV, and the API takes the addresses as an array.
Can I push a bulk job through the API instead of the dashboard?
Yes. Send the addresses to POST /v1/jobs (up to 50,000 per job, with an Idempotency-Key header if you retry), poll GET /v1/jobs/{id} until it completes, then page through /emails or download /export. A nightly warehouse export can run unattended.
Run the same sample through two of them
100 free checks a month, no card. Compare how many addresses each one declined to judge, which matters more than either accuracy claim.