Catch the fake before it becomes a row.
One POST sits inline in your signup flow and turns away fakes, typos and disposables before they ever touch your database. Not a green light — an answer, with a confidence score you can branch on.
100 free verifications · no card · 0.3s median
curl -X POST https://platform.emaillistchecker.io/api/v1/verify \
-H "Authorization: Bearer elc_live_•••••" \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]" }'
# 200 OK
{
"email": "[email protected]",
"verdict": "valid",
"confidence": 0.98,
"checks": {
"syntax": "pass",
"mx": "pass",
"smtp": "pass",
"catch_all": false,
"disposable": false,
"role": false,
"spam_trap": false
},
"credits_charged": 1,
"latency_ms": 287
}A real SMTP check, in a third of a second.
We don't guess from a static list. Every call runs syntax, MX and a live mailbox probe, then returns a verdict and a confidence score you can branch on — fast enough to sit inline in a signup form.
- Verdict + confidence in the response — branch on valid, risky or invalid.
- Catch-all graded, never just flagged — you decide the risk threshold.
- Pay for answers. An unknown verdict costs you nothing.
$ elc verify --email [email protected] → resolving MX… stripe.com ✓ → SMTP handshake… 250 OK → catch-all probe… not accept-all → disposable / role… clean VALID confidence 0.98 mailbox confirmed $ elc verify --email [email protected] CATCH-ALL confidence 0.55 accept-all domain $ elc verify --email [email protected] INVALID confidence 0.04 domain typo → gmail.com?
A small, honest surface area.
REST over HTTPS, JSON in and out, predictable status codes. Single calls, batch jobs, the finder and inbox placement — that's the whole API.
Base URL https://platform.emaillistchecker.io/api/v1
Typed clients. Signed callbacks.
Install an official SDK and you're verifying in three lines — retries, pagination and idempotency handled for you. For big lists, submit a batch and we'll POST signed results to your webhook the moment they land.
- Five official SDKs — Node, Python, PHP, Ruby and Go.
- Signed webhooks for batch completion — verify the signature and trust the payload.
- Idempotency keys make every retry safe — no double charges.
// Node — npm i @emaillistchecker/sdk
import { ELC } from "@emaillistchecker/sdk";
const elc = new ELC(process.env.ELC_API_KEY);
const { verdict, confidence } = await elc.verify(
"[email protected]"
);
if (verdict === "invalid") {
throw new Error("Please use a real email address.");
}Boring in all the right ways.
The unglamorous things that make an API a pleasure to integrate — and keep it that way in production.
A verdict, not a guess.
Official SDKs
Node, Python, PHP, Ruby and Go — typed clients with retries and pagination built in.
Webhooks
Fire a batch and forget it — we POST signed results to your endpoint the moment they're ready.
Bearer auth
Scoped, rotatable keys. Separate live and test keys; revoke any one in a click.
Idempotency keys
Safely retry any request — duplicates collapse to a single charge.
The same tools your agents can call.
Model Context Protocol lets Claude Desktop and your own AI agents use EmailListChecker as a secure tool — scoped by API key, metered by credits, with the same confirm-first guardrails as the REST API. The email verifier you can actually talk to, in your own stack.
- Drop-in config — npx @emaillistchecker/mcp
- Tools mirror the API: verify, finder, credits
- Scoped by key, metered by credit — nothing hidden.
// claude_desktop_config.json
{
"mcpServers": {
"emaillistchecker": {
"command": "npx",
"args": ["-y", "@emaillistchecker/mcp"],
"env": { "ELC_API_KEY": "elc_live_•••••" }
}
}
}
// Your agent can now call:
// verify · verify_batch · finder · creditsGenerous ceilings, graceful 429s.
Every plan ships a real rate limit — and when you hit it you get a 429 with a Retry-Afterheader, never a silent drop. Need more headroom? It's a conversation, not a contract renegotiation.
Stop fakes at the front door.
The highest-leverage place to verify is the signup form. A single POST /v1/verify in your handler keeps junk out of your database forever — no batch job, no cleanup later.
- Block at submit. Reject invalid and disposable addresses inline, with a friendly message — before the row is ever written.
- Catch costly typos. gmial.com and yaho.comget flagged so a real customer doesn't vanish into a typo.
- Protect your sender score. Clean from the start and your deliverability never erodes from dead addresses piling up.
app.post("/signup", async (req, res) => {
const { verdict } = await elc.verify(req.body.email);
if (verdict === "invalid") {
return res.status(422).json({
error: "Please use a real email address."
});
}
// verdict is valid or risky — create the user
await createUser(req.body);
});For the integration.
Ship your first verified signup today.
Grab a key, drop in one request, and keep fakes out for good. 100 free verifications, no credit card — and credits never expire.