If you run a SaaS signup form, you've probably seen it: test123@tempmail.com gets through, your welcome email bounces, and your MAU chart lies to you.
Client-side regex isn't enough. You need server-side checks for format, MX records, and disposable domains — without signing a $49/month contract for 500 validations.
What we built
Mailstrand is a small REST API for real-time signup validation:
format_ok, mx_found, disposable, role_account
did_you_mean for typos (user@gmial.com → gmail.com)
score 0–100
Bulk endpoint — up to 50 emails per call
Honest scope: format + MX + disposable + typo detection. No SMTP mailbox probe — that's enterprise list-cleaning territory.
5-minute integration
curl -X POST https://mailstrand-production.up.railway.app/api/v1/validate \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_KEY" \
-d '{"email":"user@gmial.com"}'
Example response fields:
{
"valid": true,
"format_ok": true,
"mx_found": true,
"disposable": false,
"did_you_mean": "user@gmail.com",
"score": 92
}
Node / Express pattern
async function validateSignupEmail(email) {
const res = await fetch("https://mailstrand-production.up.railway.app/api/v1/validate", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-api-key": process.env.MAILSTRAND_API_KEY,
},
body: JSON.stringify({ email }),
});
const data = await res.json();
if (!data.valid || data.disposable) {
throw new Error("Invalid or disposable email");
}
return data.did_you_mean || email;
}
Run validation on the server before creating the user — never trust the browser alone.
Pricing (why we built it)
Tool ~10k validations
ZeroBounce
~$60
NeverBounce
~$49
Mailstrand
~$40 (pay-as-you-go, credits never expire)
10 free credits at signup, no card. Compare table.
Also on RapidAPI if you prefer that billing flow.
When NOT to use this
Cold email list scrubbing
Spam trap detection
SMTP mailbox verification
For those, use ZeroBounce, Kickbox, or similar.
For "should this email hit our users table?" — lightweight API wins on speed and cost.
Docs
Full OpenAPI + bulk endpoint: https://mailstrand-production.up.railway.app/docs
Full disclosure: I'm on the Mailstrand team. Would love feedback on what's missing for your stack — what's your current signup validation approach?
Top comments (0)