BulkE-mail input

Check if an e-mail address has an Outlook account

Check in bulk whether outlook.com, hotmail.com and live.com addresses have a Microsoft consumer mailbox. Yes, no or unknown; unknowns are free.

Last updated

checks: ["outlook.email"]
An e-mail envelope routed to mail servers found in DNS; two mailboxes are confirmed and one answer is unknown.An e-mail envelope routed to mail servers found in DNS; two mailboxes are confirmed and one answer is unknown.

The Outlook check answers whether an e-mail address has an account on Microsoft's consumer mail service. That covers outlook.com and the older hotmail.com, live.com and msn.com addresses. It runs in bulk jobs and returns registered: true, false or null (unknown) for each address, with the time we checked. Nothing is sent to the address and no mailbox is read.

What does the Outlook check tell you?

It tells you whether Microsoft has a consumer mailbox at the address. Outlook.com is where Microsoft's free web mail lives today. Microsoft launched it in 2012 and moved Hotmail users onto it in 2013, keeping their addresses. As a result, a single list often mixes @outlook.com, @hotmail.com, @hotmail.co.uk, @live.com and @msn.com, all served by the same system.

  • registered: true: an account exists at this address.
  • registered: false: a conclusive "no account".
  • registered: null: no conclusive answer, with status and reason explaining why. You are not charged.

Old Hotmail and Live addresses make this check useful. Some of them are still active after twenty years, and many were abandoned long ago. The check tells the two apart without sending anything. Work and school mailboxes on Microsoft 365 use the organisation's own domain and are managed by that organisation. They are not consumer Outlook.com accounts.

Who uses it, and why?

Outlook-family domains are common in older customer databases, which makes them a typical source of bounces and stale records.

  • Re-activating old customer data. Before a legitimate transactional or service mailing to customers you already have, a batch run shows which hotmail.com and live.com addresses no longer have an account.
  • Deliverability. Large mailbox providers watch bounce rates. Removing addresses that no longer exist protects the reputation that your receipts and password resets depend on.
  • Sign-up checks after the fact. A periodic job over new registrations flags Outlook addresses that never existed. That is typical of throwaway sign-ups. See OTP and sign-up fraud.

For an answer while the user is still on the form, use the real-time mailbox check. For phone numbers linked to a Microsoft account, see the Microsoft account number check.

What do you get back?

Each address is a row with kind: "email" and one entry per requested check in checks.

FieldTypeMeaning
emailstring or nullNormalized address (trimmed, lowercased); null when invalid
email_statusenumvalid, invalid_email, duplicate or suppressed
checks["outlook.email"].registeredboolean or nulltrue account exists, false none, null unknown
…statusenumcompleted, pending, unknown, unsupported_country or failed
…reasonstring or nulle.g. UPSTREAM_TIMEOUT
…confidence, …checked_atenum, timestampHow sure the answer is, and when it was obtained
…cached, …billedbooleanCache hit, and whether it was charged

Downloads add the columns outlook.email.status, outlook.email.registered and outlook.email.billed. Inputs are masked in stored results.

How is it billed?

You pay the bulk price per address with a conclusive answer. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). The free POST /v1/jobs/estimate call counts valid, invalid, duplicate and cached rows and returns the maximum cost before you commit. See pricing for current rates.

Repeat checks of the same address inside the freshness window can come from your account's cache, and cache hits are free. If you cancel a running job, rows that have not started are released and not billed.

What are the limits?

The Outlook check is bulk only. POST /v1/lookup answers 403 service_disabled with "The check 'outlook.email' is available in bulk jobs only (POST /v1/jobs)." A job accepts up to 50,000 numbers and e-mails, as JSON emails or as a CSV upload with an email column.

  • Up to 20 checks per request. Identifiers × applicable checks may not exceed 100,000 per job.
  • Requests that look like sequential number ranges or generated e-mail lists are rejected. Twenty or more addresses in one request on one domain whose local parts differ only by digits or separators are refused with suspected_enumeration. Live keys are also limited to 50 addresses of one such pattern per account per UTC day.
  • Addresses are only trimmed and lowercased, never rewritten.
  • The daily cap counts e-mail addresses like numbers (see GET /v1/limits).

How do I use it responsibly?

Check addresses that belong to your own customers, users or leads. We never open mailboxes and never send e-mail to the address. The answer is yes, no or unknown, and never a name, avatar or profile.

A "yes" does not mean the person agreed to hear from you. Don't use the check to build or "clean" lists for unsolicited e-mail. The acceptable use policy forbids that, along with guessing addresses. Anyone can object through the opt-out form. Suppressed addresses are skipped and free.

Example request

With a test key, test.mobilevalidate.com addresses give fixed answers (see test mode).

curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"emails":["[email protected]","[email protected]","[email protected]"],"checks":["outlook"]}'

Runs as pasted with the public sandbox key, which answers the test values only. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

Response of GET /v1/jobs/{id}/results (excerpt, test mode: the first item of data):

JSON
{
  "kind": "email",
  "input": "re•••@test.mobilevalidate.com",
  "email": "[email protected]",
  "email_status": "valid",
  "e164": null,
  "country": null,
  "checks": {
    "outlook.email": {
      "service": "outlook.email",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:53.015Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

Bulk-only service: create a job via POST /v1/jobs, then read GET /v1/jobs/{id}/results. Every example runs as pasted: it uses the public sandbox key, which answers the test values for free. In the SDKs, omit the key to use MOBILEVALIDATE_API_KEY.

curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"emails":["[email protected]"],"checks":["outlook.email"]}'

Real test-mode result for this check

checks["outlook.email"]
{
  "service": "outlook.email",
  "status": "completed",
  "registered": true,
  "attributes": null,
  "confidence": "high",
  "confidence_score": 0.99,
  "checked_at": "2026-09-25T14:25:29.021Z",
  "cached": false,
  "age_seconds": 0,
  "billed": false,
  "reason": null,
  "poll_after_ms": null
}

What you get

Fields of checks["outlook.email"], generated from the public service catalog.

FieldTypeMeaning
registeredboolean | nulltrue = found, false = not found, null = unknown (not charged).
statusenumcompleted, pending, unknown, unsupported_country or failed.
checked_attimestampWhen the answer was obtained.

Frequently asked questions

Which addresses does the Outlook check cover?

Microsoft's consumer mail domains, such as outlook.com, hotmail.com, live.com and msn.com, including country versions like hotmail.co.uk. Work and school mailboxes that run on Microsoft 365 under a company's own domain are a different product and are not what this check is for.

Does the check send an e-mail or open the mailbox?

No. Nothing is sent to the address and no mailbox is opened or read. You get yes, no or unknown, and never a name, avatar or profile.

Is a Hotmail address still valid today?

It can be. Hotmail addresses were moved into Outlook.com and many still work. The check tells you whether a given hotmail.com address still has an account.

Why can't I run the Outlook check in real time?

The Outlook check is offered in bulk jobs only for now. POST /v1/lookup refuses it with service_disabled. Use POST /v1/jobs, or the real-time mailbox check (email) at sign-up.

Is an Outlook account the same as a Microsoft account?

An Outlook.com address is normally also the sign-in for a Microsoft account, but a Microsoft account can use any e-mail address or a phone number. To check a phone number for a Microsoft account, use the Microsoft account number check.

Add Outlook account check by e-mail to your stack

Request access to MobileValidate. Start in test mode, go live when you are ready.