Email Check API

How to block disposable email signups

Disposable addresses (mailinator, guerrillamail, 10minutemail and hundreds more) inflate your user count, burn your transactional email reputation, and let people farm free trials. Blocking them takes three steps.

1. Check at signup, server side

const r = await fetch("https://pw-d20261007a2.plainwork-apps.workers.dev/check?email=" + encodeURIComponent(email));
const v = await r.json();
if (!v.valid_syntax || v.disposable || !v.deliverable_domain) {
  return res.status(400).json({ error: "Please use a real email address" });
}
if (v.did_you_mean) {
  return res.status(400).json({ error: "Did you mean " + v.did_you_mean + "?" });
}

2. Do not hard-block role accounts

Addresses like info@ or admin@ are legitimate for small businesses. Use the role_account flag to route them to manual review rather than reject them.

3. Decide on free providers by product

If you sell to businesses, free_provider: true may lower lead quality, but do not reject it, just score it.

Limits

Domain-level checks cannot see inside a mailbox. Pair them with a confirmation email for anything important. The free tier gives 20 checks per day per IP; the $5/month plan removes that cap and adds bulk checks for cleaning an existing list.