How to benchmark email verification on your own dataset
Any verifier can claim top rank on a private sample it selected itself. This page documents ValidReach’s exact pipeline stages, billing rules, and a copy-paste benchmark harness so you can test accuracy, latency, and cost on your own historical bounce and reply logs.
What each verification stage checks and costs
Understanding where time and credits are spent helps you design a fair benchmark.
| Stage | Signal Verified | Execution Layer | Credit Policy |
|---|---|---|---|
| 1. Syntax & RFC 5322 | Local-part quoting, domain labels, length limits | Cloudflare Worker (in-memory) | Free on /email-validator; 1 credit on API |
| 2. Disposable & Role Taxonomy | Throwaway mailbox providers, shared role aliases | Cloudflare Worker (in-memory) | 0 credits on /api/v1/verify/disposable |
| 3. DNS & MX Resolution | Null MX (RFC 7505), MX host priority, A/AAAA fallback | Cloudflare DoH | Included in verification |
| 4. SMTP & Catch-All Probe | Mailbox existence, catch-all domain behaviour, greylisting | Upstream SMTP pipeline | 1 credit if definitive; 0 credits if unknown |
Run a reproducible benchmark in 10 minutes
Use a stratified sample from your own ESP logs so your test reflects your real B2B or B2C domain mix.
- Step 1
Assemble a stratified ground-truth seed list
Combine known deliverable addresses (from recent confirmed replies), known hard bounces (550 5.1.1 logs), disposable domains, role accounts, and catch-all domains.
- Step 2
Run the batch through the verification API or CLI
Measure wall-clock latency (p50, p95, p99), status distribution, and actual credits billed per 1,000 rows.
- Step 3
Score false positives and false negatives separately
Track how many known hard bounces were marked valid (false positives that hurt sender reputation) versus how many known deliverable addresses were marked invalid (false negatives).
- Step 4
Calculate effective cost per 1,000 resolved addresses
Exclude unknown results (which ValidReach does not bill) and free disposable lookups to compare real-world unit economics.
# Measure single-verify latency and inspect the status + credits_used envelope
curl -sS -w "\nHTTP %{http_code} | total_time=%{time_total}s\n" \
-X POST https://validreach.dev/api/v1/verify/single \
-H "Authorization: Bearer $VALIDREACH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email":"postmaster@example.com"}'Benchmarking questions
- Why does ValidReach not publish a ranked competitor scoreboard?
- Self-published vendor scoreboards almost always test a private sample chosen by the vendor and quote point-in-time competitor prices that go stale. Instead, we publish our exact pipeline stages, billing rules, and a reproducible benchmark script so you can measure ValidReach on your own traffic.
- Which verification checks run locally vs. over the network?
- RFC 5322 syntax parsing, disposable-domain matching, free-mail detection, and role-account classification run in sub-millisecond memory inside the Cloudflare Worker. DNS/MX resolution and SMTP/catch-all probing run over the network and determine overall response latency.
- Are unknown or timeout results billed during a benchmark?
- No. Definitive outcomes (valid, invalid, catchall, disposable, role) consume 1 credit on /api/v1/verify/single, whereas unknown results consume 0 credits. Standalone disposable checks on /api/v1/verify/disposable are always free.
Test ValidReach on your own seed list
Sign up for 100 free credits and run the benchmark against your real bounce and reply logs.