Email Verification and Finder API

Verify any address or find a work email with one HTTP request: clear JSON verdicts, a free token to start, nothing stored.

We understand the importance of integrating email verification seamlessly into your existing systems. That’s why we offer a REST API with two endpoints: the Verifier API checks in real time whether an email address exists, and the Finder API finds a person’s work email from their name and company domain.

Upgrading to the unlimited version of MailTester.ninja gives you high speed access to both APIs, with one daily allowance of verifications shared by the two.

MailTester Ninja REST API

Use it with your stack

Copy and paste examples for every language and tool, on GitHub. Each one is the same call, wrapped for your stack.

Browse them all: github.com/mailtester-ninja/mailtester-api-examples

Official SDKs: npm install @mailtester-ninja/client (JavaScript, TypeScript) and pip install mailtester-ninja (Python).

Step-by-step guides for each tool: Integrations.

OpenAPI 3.1 specification: mailtester.ninja/openapi.json, ready to import into Postman, Swagger, Power Automate or an AI agent.

Postman: fork our public workspace, MailTester Ninja on the Postman API Network, with a getting-started collection and the full API reference.

MCP server for AI agents: https://mcp.mailtester.ninja/mcp, with verify_email and find_email for Claude, Cursor, VS Code and any MCP client (setup guide).

Verifier API

Checks in real time whether an email address exists and can receive mail, by asking the recipient's mail server. No message is sent.

Endpoint

https://happy.mailtester.ninja/ninja

URL parameters

  • email (required): the email address you are verifying.
  • key (required): your subscription key, without "{" and "}".

No key yet? Use key=free to try it right now (10 checks a day), or get a free API token in one click (50 checks a day). Free calls are limited to one request every 30 seconds.

https://happy.mailtester.ninja/ninja?email=john.doe@email.com&key=yourkey

Response

{
"code": "ok",
"message": "Accepted",
"domain": "email.com",
"mx": "mx.sender-email.com",
"connections": 1,
"limit": 100000,
"rate": 1,
"email": "john.doe@email.com",
"user": "John Doe"
}
  • code: ok: valid, ko: invalid, mb: unverifiable, --: no verdict (key error or free limit)
  • message: Accepted | Limited | Rejected | Catch-All | No MX | MX Error | Disposable | Timeout | Greylisted | SPAM Block
  • domain: email address domain
  • mx: mail server
  • connections: simultaneous connections using your key
  • limit: verifications a day allowed by your key
  • rate: verifications made with your key in the last 10 seconds
  • email: email address checked
  • user: email user

Try the Verifier API for free

No signup, no card. Call it right now, or get a free token for more checks.

Right now, no token

10 checks a day with key=free.

curl "https://happy.mailtester.ninja/ninja?email=john.doe@example.com&key=free"

Free API token

50 checks a day, valid 7 days and renewable. One click, then use it as your key.

Get my free token

Free calls go at one request every 30 seconds. Paid plans remove the wait: see plans.

Finder API

Finds the work email address of a person from their first name, last name and company domain. MailTester Ninja tests the most common address formats one by one, from the most frequent to the least, and returns the first address the mail server accepts: first.last, flast, first, firstlast, first_last and f.last.

The search stops as soon as an address is accepted, or when the answer applies to the whole domain: a catch-all domain (the most common format is then given as guess), a domain without a mail server, a disposable domain, or a mail server that blocks verification. Personal email providers such as gmail.com are not searched: an accepted address there could belong to anyone with the same name. The Finder API needs a paid key.

Endpoint

https://happy.mailtester.ninja/find

URL parameters

  • first (required): first name, for example Jean-Pierre.
  • last (required): last name, for example De La Tour.
  • domain (required): company domain, for example spacex.com. A website address or an email address at that domain works too.
  • key (required): your subscription key, without "{" and "}".
  • timeout (optional): longest time the search may take, in seconds, from 10 to 40 (40 by default). Useful on platforms that stop a step early, such as Zapier (30 seconds). When the time runs out, the answer is mb / Timeout with the formats already tested.

Names are written the way mail servers expect them: lowercase, accents removed (ä, ö and ü become ae, oe and ue), hyphens kept, spaces and apostrophes removed. Jean-Pierre De La Tour gives jean-pierre.delatour, then jdelatour, and so on.

https://happy.mailtester.ninja/find?first=John&last=Doe&domain=email.com&key=yourkey

Response

{
"code": "ok",
"message": "Accepted",
"found": true,
"email": "john.doe@email.com",
"format": "first.last",
"confidence": "high",
"guess": null,
"first": "John",
"last": "Doe",
"domain": "email.com",
"mx": "mx.sender-email.com",
"permutations": 1,
"tested": [
{"email": "john.doe@email.com", "code": "ok", "message": "Accepted"}
],
"connections": 1,
"limit": 100000,
"rate": 1,
"duration": 1.84,
"reason": null
}
  • code: ok: found, ko: not found, mb: uncertain (catch-all domain, mail server could not be checked), --: no answer (key error or rate limit)
  • message: Accepted | Rejected | Catch-All | Limited | No MX | MX Error | Disposable | Timeout | Greylisted | SPAM Block | Webmail | Too Many Requests
  • found: true when an address was accepted
  • email: the address found, otherwise null
  • format: the form of the address returned: first.last, flast, first, firstlast, first_last or f.last
  • confidence: for an address found, how sure it is to belong to this person: high (first and last name in the address), medium (an initial, which a namesake may share), low (first name only)
  • guess: on a catch-all domain, the most common format (not verified); for a full mailbox, that address; otherwise null
  • permutations: address formats tested, each one counted as a verification, even when nothing is found
  • tested: every address tested, in order, with its code and message
  • connections: simultaneous connections using your key
  • limit: verifications a day allowed by your key
  • rate: verifications made with your key in the last 10 seconds, permutations included
  • duration: seconds taken by the search
  • reason: why nothing was found, in plain English

Try the Finder API

The Finder API needs a paid key. Each format it tests counts as one verification, from the same daily allowance as the Verifier API.

With your key

Replace YOUR_KEY with your subscription key.

curl "https://happy.mailtester.ninja/find?first=Jane&last=Doe&domain=example.com&key=YOUR_KEY"

No key yet?

Try our email finder on the website, then pick a plan to use the API.

See plans

Rate limits and pricing

One price covers both APIs. Your plan gives a number of verifications a day, which sets the rate of your key over any 10 seconds: verifications a day divided by 8,640.

  • Starter and Pro plans: 100,000 verifications a day, about 11 every 10 seconds (one every 0.86 seconds).
  • Ultimate plan: 200,000 verifications a day, about 23 every 10 seconds (one every 0.43 seconds).
  • Pick a quantity at purchase to raise both: Pro Plan x 2 = 200,000 a day, Ultimate Plan x 5 = 1,000,000 a day.

A Verifier API call counts as one verification. A Finder API search counts one verification for each address format it tests, even when nothing is found: a search that needs 6 formats uses 6 verifications, spread over the time of the search. The /find call itself is not counted. The search paces its formats within the rate of your key, so searches and verifications running together never go over what your plan allows. To protect the mail servers we query, one key can run up to 60 searches an hour on the same domain.

Over the rate of your key, both APIs answer with HTTP status 429 and a Retry-After header: wait 10 seconds and try again. The free tier (key=free or a free token) covers the Verifier API only and is limited to one request every 30 seconds. Over that pace or past the daily limit, the API answers with HTTP status 429, code -- and a message saying how long to wait: that answer is not a verdict.

Our API is designed to be simple and intuitive, so you can verify and find email addresses without any complex coding or setup. With it, you can streamline your email verification process, improve your communication strategy and reduce bounce rates, all while keeping your data private.

So, whether you're looking to integrate email verification into your CRM, email marketing tool, or any other solution, our API makes it easy to get started. Sign up today and start using our advanced email verification tools to take your communication strategy to the next level.