DEV Community

Axel Freeman
Axel Freeman

Posted on Originally published at tapacapi.com

The verification bill counts checks. Your bounce rate counts something else

Every verification tool prices the same unit: the check. You submit an address, a probe goes out, an answer comes back, a credit is spent. It is a clean unit for a price list and the wrong unit for a budget, because a check that returns unknown costs exactly as much as a check that returns a confirmed mailbox.

Three models, three ways to bill for the same uncertainty

Model What you are billed for Where it leaks
Credits per check Each address submitted, whatever the answer Unknowns, duplicates and typos all consume credits
Seat licence + credits Named users per month plus a balance Quiet months pay for idle seats, busy months top up
Bundled with a database Annual subscription, verification included The included verification ages with the rows it came with

Published entry prices show the shape of each one. Apollo lists Basic at $49 per user per month on annual billing (apollo.io/pricing). Hunter offers 50 free credits and starts from $34/month, with a Growth tier at $149/month (hunter.io/pricing). Lusha lists Starter at $49.90/month (lusha.com/pricing). ZoomInfo does not publish prices at all.

None of those numbers is the cost of a usable contact. They are the entry point of a model.

The four lines that never reach the invoice

The unknown rows. An accept-all mail server answers the same way for a real person and for a string you invented. The probe was run, the credit was spent, and the reply carries no information about that mailbox. A list can be 100% "verified" and still hold an unmeasured unknown share.

The decay clock. 40% of email addresses are dead within two years (NeverBounce), and 23% of business contacts change jobs every year (ZoomInfo, 2025). Verification is a timestamp, not a property. Every re-check is a recurring cost line that almost nobody forecasts when signing the contract.

The bounces you send anyway. Sending into rows that were never truly verified costs deliverability, and deliverability is the asset with the longest replacement time. Static databases sit at 10-35% bounce rates; a list verified at the moment of use sits at 2-5%.

The seat you do not need. Per-seat pricing charges for access rather than throughput. A two-person team pays the same seat count as a ten-person team on most tools.

The number to actually compute

Take the monthly bill, add top-ups, add re-checks, divide by the addresses you would genuinely send to.

If the vendor cannot tell you how many checked addresses came back valid versus unknown, the denominator is unknown and the cost per usable contact is not calculable from their own invoice. That silence is a pricing decision, not an oversight.

Doing the check inside the search

The alternative to paying twice for the same row — once to find it, once to verify it, and again quarterly — is to resolve it at the moment of use:

curl -s -X POST https://tapacapi.com/v1/contacts/search \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"industry":"logistics","job_titles":["head of operations"],"company_size":"51-200","location":"poland","source":"website","limit":40}'
Enter fullscreen mode Exit fullscreen mode

Each result carries the person, the company, the title, the source the address was found in, and the verification state of that mailbox — from an SMTP probe inside the same request. Accept-all domains come back unknown, never valid. A single address can also be checked with POST /v1/contacts/verify.

Pricing is pay-per-use at $0.10-0.50 per verified contact with 100 free searches: no seat licence, no annual commitment, no separate enrichment line. From an agent it is one tool call — npx -y @tapacapi/mcp, or the hosted endpoint at https://tapacapi.com/mcp, exposing tapac_find_contacts and tapac_status. Without a key the server returns onboarding instead of an error.

What this does not fix

  • A catch-all domain stays unknowable; unknown is the accurate answer, not a defect to route around.
  • SMTP probing is rate-limited per domain, so volume needs pacing — the server handles that, not the caller.
  • A verified mailbox is not an interested person. Verification decides how much of your sending reaches a real inbox, nothing more.

Measure the unknown share on your own market first. The free tier exists for that, and it is the only honest way to find out what a usable contact costs you.


TAPAC is an MCP server and REST API that finds B2B contacts by industry, title, company size, location and source, and verifies each mailbox over SMTP at the moment of use. Sources for the decay figures: AGENTS.md.

Top comments (0)