Email Verifier: Bulk, SMTP & Catch-All Checks
Pricing
from $3.50 / 1,000 results
Email Verifier: Bulk, SMTP & Catch-All Checks
Most verifiers report "valid" after a DNS check. That's how clean lists still bounce. We ask the mail server whether the mailbox exists, flag catch-all, disposable and role addresses, and give you one verdict per address with the reason. Honest "unknown" beats a confident guess.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
toolmill
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share

Email Verifier with Reasons: SMTP, Catch-All, No False Valids
Thousands of listings claim SMTP checks. This one shows you the mail server's answer for every address in the checks field, and says "unknown" when there isn't one instead of guessing. One verdict per address, with the reason, so you decide what to do with the risky ones.
Three promises
- We only say deliverable when a mail server confirmed the mailbox and the domain is not catch-all.
- We say unknown when we can't confirm. An honest unknown beats a confident guess that bounces.
- Every result carries the reason and the raw checks, so you can apply your own rules to risky and unknown addresses instead of throwing them away.
Use cases
- Clean a list before cold outreach. Drop undeliverables, decide what to do with catch-all and role addresses, protect your sending domain.
- Verify sign-ups in real time. Call it from your app with one address and act on
statusandreason. - Check a scraped lead list. Chain it after any contact or lead scraper; the output keeps your original address next to the verdict.
- Agents. Pass a list of emails, read back
status,reasonandscore, no parsing. Pairs with the Email Finder.
Verdicts at a glance
| Verdict | Meaning | What to do |
|---|---|---|
| 🟢 deliverable | Mail server confirmed the mailbox; domain is not catch-all | Send |
| 🔴 undeliverable | Bad syntax, no mail server, or mailbox does not exist | Drop |
| 🟡 risky | Mailbox exists but it is a catch-all domain, a role inbox, or a disposable provider | Your call; reason tells you which |
| ⚪ unknown | The server would not say: greylisting, policy block, timeout | Retry later or treat as risky |
How this compares
| DNS-only verifiers | Toolmill Email Verifier | |
|---|---|---|
| Syntax and MX | ✅ | ✅ |
| Disposable and role detection | sometimes | ✅ |
| Asks the mail server if the mailbox exists | ❌ | ✅ |
| Detects catch-all domains | ❌ | ✅ |
| Says "unknown" instead of guessing | ❌ | ✅ |
| Reason and raw checks on every row | ❌ | ✅ |
Typo suggestions (gmial.com → gmail.com) | ❌ | ✅ |
What it checks
| Check | What it means |
|---|---|
| Syntax | Address is well-formed. Gmail dots and +tags are normalized so duplicates collapse. |
| MX | The domain has a mail server (MX record, or A record fallback). |
| Disposable | Domain is a throwaway provider (mailinator, guerrillamail, ...). |
| Role account | info@, support@, sales@ and similar shared inboxes. |
| Free provider | gmail.com, outlook.com, yahoo.com, ... |
| Typo | gmial.com → suggests gmail.com. |
| SMTP mailbox | Connects to the mail server and asks whether the mailbox exists. No email is ever sent. |
| Catch-all | Probes a random address on the domain; if it is accepted, the domain accepts anything and a "deliverable" verdict would be meaningless. |
Input
{"emails": ["jane@example.com", "support@github.com", "someone@gmial.com"],"smtpCheck": true,"catchAllCheck": true,"timeoutMs": 8000,"concurrency": 10}
Output (one item per email)
{"email": "someone@gmial.com","normalized": "someone@gmial.com","status": "unknown","reason": "smtp_unreachable","score": 50,"suggestion": "someone@gmail.com","domain": "gmial.com","mxHost": "mail.gmial.com","checks": { "syntax": true, "mx": true, "disposable": false, "role": false, "free": false, "catchAll": null, "smtp": { "result": "unreachable" } },"durationMs": 779}
score is 0–100: 95 confirmed mailbox, 70 role account, 60 catch-all, 50 syntax + MX only, 10 disposable, 0 undeliverable.
Pairs with
- Email Finder finds the address first; this Actor confirms it.
- Hiring Signals tells you which companies are hiring; the Finder gets you the hiring manager; this Actor keeps your list clean.
- Toolmill Briefs: what each company is building, read from its hiring. Free.
Use it from an AI agent
This Actor works with the Apify MCP server, so agents can call it as a tool: pass a list of addresses, get verdicts back as structured JSON. The reason and score fields are designed to be consumed by code.
Notes
- Per-domain concurrency is capped at 2 so no mail server sees a burst from you.
- Some providers (Yahoo, some corporate gateways) refuse probes from everyone; those come back
unknown / smtp_blocked, not a false "valid". - Nothing is stored beyond the run's dataset.
Pricing
Pay per result: one charge for each address written to the dataset, including ones rejected by syntax or DNS, since every address is processed. Duplicates are verified once. Set a maximum charge on the run if you want a hard cap.
![]()
Toolmill · small, reliable tools for agents and developers.
Every verdict with a reason. Checked by automated runs every day.
More Toolmill tools · Found a problem? Use the Issues tab, every report gets a reply.