On this page

Email & domains

Email address checker

API · Pro

Coverage: Works with addresses from any country, including domains with accents or in other alphabets. Disposable domains come from an open list of thousands of throwaway email services; free email domains cover the big international and national providers.

Open tool
On this page

Purpose

Check an email address without writing to it: whether it’s well written, whether its domain exists and receives email, and whether it’s a disposable, role or free-mail address, with a suggestion if the domain looks mistyped.

Requirements

Anyone can read these guides, no account needed. Some tools require Pro, as indicated in each guide.

Before you write to an address or trust one, check it here. We look at how it’s written and at its domain: whether it exists, whether it receives email and what kind of address it is. We can’t tell whether the mailbox itself exists, because we never contact its mail server, and we don’t store the address.

How to use it

  1. Type or paste the email address you want to check.

  2. Press “Check the address”. We check how it’s written and look up its domain in public DNS.

  3. Read the result and the signals. If we suggest another domain (for example gmail.com instead of gmial.com), confirm the address with whoever gave it to you.

Synthetic example

Note

Invented example, not a real lookup. Do not call or open its links.

Synthetic example
[email protected]

Interpret the result

This isn’t a valid email address: It doesn’t have the shape of an address: the @ or the domain is missing, or it has characters an address can’t use.

The domain of this address doesn’t exist: Nobody can receive email at it. If someone gave you this address, they may have mistyped it.

The domain doesn’t receive email: It exists, but it has no mail servers or it states that it accepts no email. A message to this address won’t arrive.

The domain receives email: The address is well written and its domain has mail servers. We can’t confirm that this particular mailbox exists, only that the domain can receive email.

The address isn’t written the way an email address has to be.

The domain doesn’t exist in DNS.

The domain states that it receives no email (“null MX”).

The domain has no mail servers.

The domain has no MX records, so email goes to its own address. It works, but it’s unusual.

It’s a disposable email service: these addresses last minutes or hours and are often used to sign up without giving a real address.

It’s a role address (info@, support@, noreply@…) that belongs to a team or a service, not to one person.

It’s a free email service (Gmail, Outlook, Yahoo…). Anyone can open an account, so a bank or a company won’t usually write to you from one.

The domain looks a lot like a well-known provider’s, so the address may have been mistyped.

Limitations

Warning

We don’t check whether this exact mailbox exists: that would mean contacting its mail server, which we never do. The address isn’t stored.

The address is sent to NoCall’s server only to look up its domain in public DNS, and it isn’t stored. We never contact its mail server.

Troubleshooting

That doesn’t look like an email address. Check that it has an @ and a domain.

DNS didn’t answer in time. Try again in a few seconds.

You’ve run a lot of checks in a row. Wait a minute and try again.

Use with the API

Warning

Needs an API key and credits. Each completed call costs 1 credit, even when there is no data. An active Pro account includes 20 credits per UTC calendar month, shared by every API route and spent first; unused monthly credits do not roll over. Credits bought on your account page work without Pro and never expire.

Note

Errors are never charged: 401 invalid_api_key (missing or invalid key), 403 pro_required (no Pro credits and no purchased credits), 422 invalid input, 429 quota_exceeded (no credits left), rate_limit_exceeded or ai_busy (the AI of sms-check is at capacity), 503 tool_warming (the data is still being prepared) or tool or provider unavailable. After a 429 or 503, retry once the seconds in the Retry-After header have passed.

What can be known about an email address without contacting its mail server: syntax, whether the domain exists and receives email, its provider, and whether it is a disposable, role or free email address, with a suggestion for a mistyped provider domain. The mailbox itself is not checked, and the address is never stored or returned.

Send the JSON body to the tool's own route, or to POST /v2/tools with the tool field added. Both routes return the same result.

Endpoint
POST https://api.nocall.io/v2/email-verify
POST https://api.nocall.io/v2/tools  {"tool":"email-verify","email":"[email protected]"}

Parameters

NameTypeRequiredDescription
emailstring (3–320)YesThe address to check, up to 320 characters. Only its domain is looked up; the address is never stored or returned.
bash
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/email-verify' \
  --header "Authorization: Bearer $NOCALL_API_KEY" \
  --header 'Content-Type: application/json' \
  --header "Idempotency-Key: $REQUEST_ID" \
  --data '{"email":"[email protected]"}'

Example response (200)

This is the documented example from the API reference. Lookups use a fictional number, and aggregates and AI answers show the shape of the result, not live data.

JSON
{
  "data": {
    "tool": "email-verify",
    "result": {
      "domain": "outlok.com",
      "domainAscii": "outlok.com",
      "status": "domain_not_found",
      "syntaxValid": true,
      "acceptsMail": false,
      "mx": {
        "count": 0,
        "provider": null,
        "implicit": false,
        "nullMx": false
      },
      "disposable": false,
      "role": false,
      "freeMail": false,
      "suggestion": "outlook.com",
      "signals": [
        "domain_not_found",
        "typo_domain"
      ],
      "attention": true
    }
  },
  "meta": {
    "requestId": "req_example",
    "unitsCharged": 1,
    "usage": {
      "periodStart": "2026-10-01",
      "unitLimit": 20,
      "unitsUsed": 3,
      "unitsRemaining": 17
    }
  }
}

Result fields (data.result)

FieldTypeDescription
domainstring | nullThe address’s domain in Unicode; null when the address does not parse.
domainAsciistring | nullThe same domain in ASCII (punycode), or null.
status"invalid" | "domain_not_found" | "no_mail" | "accepts_mail"invalid, domain_not_found, no_mail or accepts_mail. accepts_mail means the domain receives email, not that this mailbox exists.
syntaxValidbooleanWhether the address is written the way an address has to be.
acceptsMailbooleanWhether the domain receives email.
mxobjectThe domain’s MX: count, provider, implicit (no MX, email goes to its address) and nullMx.
disposablebooleanWhether the domain (or a parent) is on the open list of disposable email services.
rolebooleanWhether it is a role mailbox (info@, support@, noreply@…), not a person’s.
freeMailbooleanWhether the domain is a free personal email provider (gmail.com, outlook.com…).
suggestionstring | nullThe provider domain the address was probably meant for (gmial.com → gmail.com), or null.
signalsarray<string (enum, 9)>syntax_error, domain_not_found, null_mx, no_mx, implicit_mx, disposable_domain, role_address, free_mail or typo_domain.
attentionbooleanWhether the result deserves a look: the domain receives no email, or the address is disposable or probably mistyped.

Frequently asked questions

Can you tell whether the mailbox exists?

No, and no service can do it reliably: the only way is to ask the domain’s mail server, many servers say yes to every address, and repeated probes end up blocked. We check everything that can be known without contacting it.

What is a disposable address?

An inbox that works for minutes or hours, used to sign up somewhere without giving a real address. If a customer or a contact gives you one, you won’t be able to reach them later.

What is a role address?

One that belongs to a function rather than a person: info@, support@, sales@, noreply@. Many people may read it, or nobody at all in the case of noreply@.

Is the address I check stored?

No. It’s used once to look up its domain in DNS and isn’t stored anywhere. We only note that a check was made and its kind of result (for example, “the domain receives email”), without the address.