Mercury

v0.2 · { valid, invalid, risky, unknown }

Email verification that
tells the truth.

One REST API. Six signals. Zero binary answers. Stop sending welcome emails to dead addresses and burning your sender reputation on role-based catch-alls.

  • No credit card · 1,000 lookups / day, forever
  • Sub-200 ms p50 · KV cache + parallel MX + DoH
  • OpenAPI 3.0 · every endpoint typed, every response schema'd

Drop into any stack

REST + JSON OpenAPI 3.0 Node SDK Python SDK Go SDK Webhooks

Six signals. One verdict.

The cheapest signal that disconfirms short-circuits the rest. We never lie about confidence.

Format

RFC 5322 syntax, label length, IDN. Catches typos at the door.

Disposable

70k+ throwaway domains, updated daily from Spamhaus + community lists.

Role

Detects abuse@, support@, no-reply@ — addresses that always accept but never convert.

MX

DoH lookups against multiple resolvers. Implicit-A fallback per RFC 5321.

Catch-all

Detects domains that accept any recipient, so verdict alone isn't enough.

SMTP + Reputation

RCPT TO probes through a separate SMTP prober. Spamhaus DBL for reputation signals.

Starts free. Grows when you do.

1,000 lookups / day, forever. No credit card. Upgrade only when you need SMTP probes, reputation, or bulk.

See all plans
curl "https://mercury-api.deepeshkalurs.workers.dev/v1/[email protected]" \
  -H "Authorization: Bearer mr_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# {
#   "email": "[email protected]",
#   "verdict": "valid",
#   "risk_score": 7,
#   "checks": { ... },
#   "cached": false,
#   "verified_at": "2026-08-03T10:21:00Z"
# }

Quickstart

Two lines. One answer.

Every endpoint is documented at /docs with an OpenAPI spec, copy-pasteable curl, and a typed SDK for Node, Python and Go.

Open the quickstart →

Stop guessing. Start verifying.

Create a free team