Stop bounces before they happen. Verify emails before you send.
Catch typos, dead domains, disposable inboxes and role accounts in about 200ms per address — real-time at signup or in bulk batches of 100. One endpoint, JSON in, JSON out, 100 free checks to start.
No credit card. No sales call. Live key in under a minute.
- ~200ms
- Median response time
- 97-99%
- Hard bounces caught on real lists
- 100
- Free checks on signup
curl -X POST https://fishymails.com/api/public/v1/verify \
-H "Authorization: Bearer fm_live_xxx" \
-H "Content-Type: application/json" \
-d '{"kind":"email","value":"jane@acme.io"}'
{
"kind": "email",
"value": "jane@acme.io",
"status": "valid",
"score": 95,
"checks": {
"has_mx": true,
"disposable": false,
"role_account": false,
"free_provider": false
},
"latency_ms": 184
}Try it free, no signup
Check a single address on the homepage, or upload a CSV for a free list audit.
The three things bad data is costing you right now
Hard bounces wreck your sender reputation
A 5% bounce rate is enough for mailbox providers to start throttling. Once the inbox placement drops, even your good emails stop landing.
Spam traps and role inboxes get you blocklisted
One recycled trap or a batch of info@ addresses can put your sending domain on a blocklist for weeks.
You pay your ESP to email people who don't exist
Most lists carry 15-30% junk. You pay per contact, run campaigns against ghosts, and report inflated funnel numbers.
Stop bad data before it costs you money
Start with 100 free checks to start. No credit card required.
Live in three steps
- 1
Get your API key
Create a free account, copy your key from the dashboard. No credit card, no sales call.
- 2
Send a request
POST the address to /api/public/v1/verify, or send up to 100 at once to /verify/bulk.
- 3
Get results instantly
Status, 0-100 score and per-check detail come back in a single JSON body — block, flag, or allow on your side.
// Bulk: up to 100 addresses in one call
await fetch("https://fishymails.com/api/public/v1/verify/bulk", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FISHYMAILS_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
emails: ["jane@acme.io", "info@acme.io", "bob@mailinator.com"],
}),
});
{
"count": 3,
"credits_remaining": 97,
"results": [
{ "value": "jane@acme.io", "status": "valid", "score": 95 },
{ "value": "info@acme.io", "status": "risky", "score": 75 },
{ "value": "bob@mailinator.com", "status": "invalid", "score": 30 }
]
}Try the API in under 5 minutes
Create your free account, copy your key and send your first request.
Built for production, priced for prototypes
Real-time and bulk
Sub-second single checks for signup forms, plus batches of 100 processed in parallel for list cleaning.
Disposable and role detection
Continuously updated throwaway-domain lists and role-inbox patterns, returned as explicit booleans.
Built for uptime
Stateless edge deployment with no cold starts. Median response around 200ms, worldwide.
One endpoint to integrate
Plain HTTP with a bearer token. No SDK lock-in, works from any language or no-code tool.
Scores, not verdicts
Every result carries a 0-100 score and the raw checks, so you set the threshold your funnel can live with.
Transparent pricing
One credit per check. 100 free to start, then $29 for 1,000. No seat fees or hidden overage.
Built for production, free to try
Every feature is available on the free plan. Upgrade only when you grow.
Where teams put this to work
The same endpoint, four very different jobs — and the outcome each one moves.
Email marketing & campaign hygiene
Clean the list before it hits your ESP so your sends land in the inbox instead of the spam folder.
- Lower bounce rate
- Better sender reputation
- Higher open rates
- Smaller ESP bill
Signup & account creation
Verify at the form, in real time, so fake and throwaway addresses never make it into your user table.
- Block disposable inboxes
- Fewer fake accounts
- Cleaner activation metrics
- Less support spam
Lead generation & CRM quality
Score inbound and purchased leads on arrival so reps spend their day on contacts that actually reply.
- Qualify leads instantly
- Save rep hours
- Accurate CRM data
- Prioritise reachable prospects
Database maintenance
Re-verify dormant contacts on a schedule — roughly a third of addresses go stale every year.
- Remove dead contacts
- Cut storage and seat costs
- Trustworthy reporting
- Fewer complaints
See what clean data does for your funnel
Create a free account and run your first checks in the next two minutes.
Industries that rely on it
E-commerce
Order confirmations and campaigns that reach real buyers.
SaaS platforms
Clean signups and reliable onboarding email.
Agencies
Deliverability guarantees across every client list.
Fintech
Contactability checks as part of onboarding.
Technical specifications
- Median response
- ~200ms
- Checks performed
- Syntax, MX/DNS, disposable, role, free provider
- Bulk batch size
- Up to 100 per call
- Auth
- Bearer API key
- Output
- Status + 0-100 score + raw checks
- Coverage
- Any domain, worldwide
Pricing
Simple credits. No surprises.
Pick a plan. Monthly or annual (2 months free). 1 credit = 1 verification. 100 free checks to start, no credit card required.
Annual subscription
Growth
10,000 credits refilled every month · cancel anytime · billed yearly
Top-Up · 250 credits
One-time purchase · no subscription · credits never expire
Questions developers actually ask
Clean your next campaign before you press send.
Set up in 5 minutes. Your first 100 checks are free.
Verifying signups and campaign lists for teams like: