Migrate from Bouncer
Bouncer is an EU-based email verification service focused on bulk list validation for email marketers. If you're a developer needing real-time verification in a signup flow, Mailbeam is a better fit.
Key differences
| Feature | Bouncer | Mailbeam |
|---|---|---|
| EU hosted | Yes | Yes (Frankfurt) |
| Real-time API | Limited | Native (< 100ms) |
| Primary audience | Marketers | Developers |
| AI scoring | No | Yes (0–100 + reason) |
| SDKs | No | 6 official SDKs |
| Batch verification | Yes | Yes |
| DPA included | Extra | Automatic (Scale+) |
Endpoint mapping
| Bouncer | Mailbeam |
|---|---|
POST /v1/emails/verify | POST /v1/verify |
POST /v1/emails/bulk/verify | POST /v1/verify/batch |
GET /v1/credits | GET /v1/account/usage |
Code migration
Bouncer (old):
const response = await fetch("https://api.usebouncer.com/v1/email/verify", {
method: "POST",
headers: {
"x-api-key": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
});
const { status, reason } = await response.json();
// Bouncer statuses: "deliverable", "undeliverable", "risky", "unknown"
if (status !== "deliverable") {
return res.status(422).json({ error: "Email not accepted" });
}Mailbeam (new):
import Mailbeam from "@mailbeam/sdk";
const mb = new Mailbeam({ apiKey: process.env.MAILBEAM_KEY });
const { valid, score, reason } = await mb.verify(email);
if (!valid || score < 60) {
return res.status(422).json({ error: "Email not accepted", reason });
}Status mapping
Bouncer status | Mailbeam equivalent |
|---|---|
"deliverable" | valid: true, score >= 70 |
"risky" | catchAll: true or score 40–70 |
"undeliverable" | valid: false |
"unknown" | score < 40 or timeout |