0 to 100 deliverability
Status is anchored to the score and the score adjusts for every warning: role, accept-all, typo, unreliable provider. Set one threshold, filter cleanly.
Email Verification · 97.9% accuracy
Upload up to 50,000 addresses, pay only for unique probes, filter by a 0 to 100 deliverability score. The engine runs 24 signals per address and returns an auditable result with reasons attached. Zero false positives on our open validation corpus.
What you get
Most verifiers return a status enum and leave you to guess the confidence. ToolTrace returns the status, the reasons, every signal flag, and a 0 to 100 score so you can set thresholds instead of thresholds setting you.
Status is anchored to the score and the score adjusts for every warning: role, accept-all, typo, unreliable provider. Set one threshold, filter cleanly.
The maintained community list plus a hand-picked fallback so a dropped domain upstream does not silently let temp-mail through.
Separate flags, so a buyer who distrusts accept-all domains can filter on the exact signal without reading the reasons list.
The provider's own local-part rules enforce syntactically impossible addresses. Yahoo probe accepts are downgraded to unknown rather than trusted, because Yahoo lies to unwarmed probes.
Server-side dedup on the normalized form of every address. A 20k list with 14k unique addresses costs 14k credits, not 20k.
Same email checked a second time returns the same answer with no probe cost. Lets you re-verify a list before a send without paying twice.
Email verification guide
Most verifiers claim 99% accuracy without saying how they measured it. We publish both the number and the test corpus so a buyer can reproduce it.
A seed corpus of 48 labelled addresses mixes known-deliverable business inboxes, known-dead mailboxes, confirmed disposables, role accounts, and common domain typos. The validation harness runs every address through the public verifier endpoint and compares the predicted status to the label. The corpus and the harness live in the open; a buyer can reproduce the number with one command inside the API image.
On this corpus we currently measure 97.9% accuracy with zero false positives and zero false negatives. The honest ceiling depends on list composition: business-domain-heavy lists reach near 99%, consumer-provider-heavy lists hover around 95% because big providers return misleading SMTP responses to probes from unwarmed IPs. We never advertise 99% unqualified.
Syntax and normalization. Domain resolution and MX records. Null MX detection per RFC 7505. SMTP recipient probe with retry on grey-listing. Catch-all probe using a random local part. Disposable domain membership against the ~9,000-entry maintained list plus a hand-picked fallback. Free-provider membership. Role-account membership against 72 reserved and shared names (RFC 2142 plus the common business set). Typo correction against 30+ common misspellings. Provider-aware rules for Gmail, Outlook, Hotmail, Yahoo, iCloud so provider-local-part-invalid addresses reject before the probe runs.
Every signal surfaces in the response as both a check flag and a reason string. A role_account hit shows up as role_account=true in checks and as "role_account" in reasons; a Yahoo probe downgrade shows up as "probe_unreliable_on_provider".
The score starts from a status-anchored baseline: valid=95, risky=55, unknown=45, invalid=10. It then adjusts for every signal that affects deliverability. A role mailbox subtracts 10. An accept-all domain with a confirmed mailbox subtracts 10 (soft confirmation). An unreliable probe provider subtracts 15. A likely typo subtracts 15. Clamped to 0-100.
A single threshold does the work. 85 for high-confidence outreach, 70 for broader campaigns, 50 for re-engagement sends where silence is more expensive than a bounce. Status and score never contradict: a valid status always carries 50 or more; an invalid status always carries 30 or less.
Paste up to 50,000 addresses or upload a CSV / XLSX / TSV / TXT / JSON file. If the file has multiple columns, pick the email column. Set an optional job name and an optional https webhook URL. Click Start job. The scheduler picks it up within seconds; progress polls every two and a half seconds; the download CSV button appears when the job finishes.
The returned CSV has the same number of rows as the input, in the same order, with status, score, reasons, catch_all, role_account, and disposable columns per address. A duplicate is marked skipped and still carries its result so an index-based join back to your source rows works without a lookup.
Set a webhook URL on job creation and the API returns a webhook secret ONCE in the response. When the job finishes, the API POSTs a JSON payload to the URL with HMAC-SHA256 signature in the X-ToolTrace-Signature header, signed with that secret. Delivery is retried three times on 5xx or timeout with 1s / 5s / 25s backoff; 4xx is treated as a receiver bug and not retried.
The payload carries job_id, status, counts (processed, valid, invalid, risky, unknown), credits_consumed, and completed_at timestamp. A worker that validates the signature and acts on the finished-status flag can trigger a send or a CRM import the moment the verification completes.
ZeroBounce, NeverBounce, and Million Verifier are the market leaders. They have warm sender IPs, historical databases of previously verified addresses, and ESP partnerships that cover Gmail and Outlook mailbox existence reliably. For a buyer whose list is 90% consumer-domain addresses, those services remain the best answer.
ToolTrace is positioned for buyers whose list is B2B heavy (business domains, catch-all MX setups) and whose price sensitivity rules out enterprise verifier plans. On that profile we match or beat the leaders on accuracy, charge only for unique probes, publish the accuracy methodology instead of claiming it, and share one credit pool with the rest of the ToolTrace APIs.
Same engine. The free tool at /tools/email-verifier/ handles one address at a time with a per-IP daily cap. The Bulk verifier in the dashboard handles lists up to 50,000 addresses asynchronously and returns a CSV. Both charge the same per unique address.
A role account (support@, admin@, info@) is a shared mailbox that is almost always deliverable but is almost never the right recipient for personal outreach. We mark it with role_account=true and subtract 10 from the score so a threshold-based filter can exclude it without re-reading the reasons list.
A domain whose receiving server accepts any recipient address, including randomly generated ones. On accept-all domains we cannot prove a specific mailbox exists, so we flag catch_all=true and accept_all=true and subtract 10 points from the score to communicate the soft confirmation.
Gmail enforces strict local-part rules: letters, digits, and dots only, length 6 to 30 after normalization. Addresses with hyphens or outside that length cannot exist at Gmail and we reject them before probing. If you are seeing a legitimate Gmail address rejected, email [email protected] with the exact address and we will debug.
Yes. Use the single-address /v1/verify-email endpoint with a 500ms budget: a bad syntax rejects instantly, DNS and SMTP checks run in parallel, and the response is available before the user leaves the page. The /apis/email-verification-api/ page covers integration.
Try it