MailTester Ninja Email Verifier
Pricing
Pay per usage
MailTester Ninja Email Verifier
Verify email lists in bulk with each recipient’s mail server, without sending any message. Flags invalid, disposable and catch-all addresses. Runs on your MailTester Ninja key, free token included.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
MailTester Ninja
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Features
Share
Verify a list of email addresses in real time before you send. For each address, the Actor asks the recipient's mail server whether the mailbox exists, without sending any message, and tells you whether it is valid, invalid or risky (for example a catch-all domain that accepts every address). It runs on your own MailTester Ninja key, at the speed your key allows, and returns one row per address that you can export to CSV, Excel or JSON, or send to your CRM.
What can it do?
- Check lists of up to 100,000 addresses per run, pasted one per line.
- Detect invalid mailboxes, domains with no mail server, disposable addresses and catch-all domains.
- Keep your results in the order of your list, with the domain and the mail server used for each check.
- Remove duplicates and ignore lines without an address, so you only pay for real checks.
- Stay within the rate of your key automatically, and resume after a temporary limit on its own.
Why verify before you send?
Invalid addresses bounce, and too many bounces hurt your sender reputation and your deliverability. Verifying a list before a campaign, before cold outreach or before importing leads into a CRM keeps your bounce rate low. Customers report a bounce rate below 1% after verifying their lists with MailTester Ninja.
MailTester Ninja checks each address live with its mail server, so the answer reflects the mailbox as it is today, not a database built months ago. No copy of the addresses you verify is kept.
How much does it cost?
You pay two things, both small:
- Apify platform usage for running the Actor. A run uses 256 MB of memory and mostly waits for mail servers, so even large lists cost very little. The Apify free plan is enough to try it.
- Your MailTester Ninja key, which sets how many addresses you can check a day:
- a free API token (
mtf_..., 50 checks a day for 7 days, no card) from mailtester.ninja/free-email-verification-api; - a subscription key (
sub_...), with plans from $6.99 a week for 100,000 checks a day, on mailtester.ninja/verify-emails-unlimited.
- a free API token (
Without a key, the Actor only checks the three sample addresses of the input, so you can see what the output looks like.
How to use it
- Paste your addresses in Email addresses, one per line. Lines such as
Jane Doe <jane@example.com>or comma-separated lists work too. - Paste your MailTester Ninja key in MailTester Ninja key, without the braces. Apify stores it encrypted.
- Click Start. Results appear as they come in; the status line shows the progress.
- Download the results in the format you need, or use the Apify API, a schedule or an integration to send them elsewhere.
Input example
{"emails": ["info@apple.com","hello@stripe.com","no.such.user.2026@gmail.com"],"apiKey": "sub_your_key"}
Output example
[{"position": 1,"email": "info@apple.com","result": "valid","code": "ok","message": "Accepted","domain": "apple.com","mx": "mx-in.g.apple.com","checkedAt": "2026-11-03T21:52:10.000Z"},{"position": 2,"email": "hello@stripe.com","result": "risky","code": "mb","message": "Catch-All","domain": "stripe.com","mx": "aspmx.l.google.com","checkedAt": "2026-11-03T21:52:12.000Z"},{"position": 3,"email": "no.such.user.2026@gmail.com","result": "invalid","code": "ko","message": "Rejected","domain": "gmail.com","mx": "gmail-smtp-in.l.google.com","checkedAt": "2026-11-03T21:52:13.000Z"}]
A summary of the run (counts per result and per verdict, duration) is saved in the key-value store under OUTPUT.
What do the results mean?
| result | code | Typical messages | What to do |
|---|---|---|---|
valid | ok | Accepted | Send. |
invalid | ko | Rejected, No MX, Disposable, Limited, Invalid syntax | Remove from your list. |
risky | mb | Catch-All, MX Error, Timeout, SPAM Block, Greylisted, Abuse | Uncertain. A catch-all domain accepts every address, so the mailbox cannot be confirmed. Decide by risk, or check again later for temporary answers. |
not_checked | -- | Daily limit reached, key required | No verdict. Never remove an address for this reason: check it again with a key or the next day. |
Speed and limits
Each key allows its daily limit divided by 8,640 checks per 10 seconds, for all your tools together. The Actor reads the limit of your key and paces itself accordingly: about one check per second with a $6.99 plan, more with higher plans or a higher quantity at checkout. A free API token allows one check every 30 seconds. A check usually takes one to a few seconds, and up to 45 seconds for slow mail servers. If the daily limit of the key is reached during a run, the remaining addresses are returned as not_checked.
Integrations
Run the Actor from the Apify API, on a schedule, or from Make, Zapier, n8n and other tools through Apify integrations. AI agents can call it through the Apify MCP server. MailTester Ninja also has its own REST API, official SDKs and integrations, and an email finder that guesses a work address from a name and a company domain.
FAQ
Does the Actor send emails to the addresses? No. The check stops before any message is sent.
Are my addresses stored? MailTester Ninja keeps no copy of the addresses you verify. The results are stored in your own Apify storage, under your control. See the privacy policy.
Why is the key free refused? That key is limited per IP address, and Apify shares its IP addresses between users. Use a free API token instead.
Why are some addresses risky? Some domains accept every address (catch-all), so no tool can tell whether a given mailbox exists there. Others answer with a temporary refusal: check them again later.
Support
Questions, feedback or a feature request: write to contact@mailtester.ninja or use the contact page. You can also open an issue on this Actor.