RealtimeBulkPhone input

Check if a phone number has a Microsoft account

Check in real time whether a personal Microsoft account is associated with a phone number. Yes, no or unknown per number; unknowns are free.

$0.001 per check real-time, $0.0005 in bulk ($1.00 / $0.50 per 1,000). Unknowns are free. Try 20 numbers for real, free, after sign-up.

Start free

Last updated

The Microsoft account check indicates whether a personal Microsoft account is associated with a phone number. It runs in real time and in bulk jobs, for numbers from any country, and answers registered: true, false or null (unknown) with the time of the check. It never returns names, gamertags or e-mail addresses.

What does the Microsoft account check tell you?

It tells you whether a phone number is linked to a Microsoft account. That is the personal account used for Windows sign-in, Outlook.com, OneDrive, Xbox and other Microsoft consumer services. Microsoft accepts a phone number as the sign-in name, and numbers are also added as security contacts to receive verification codes.

  • registered: true: a Microsoft account is associated with the number.
  • registered: false: a conclusive "no".
  • registered: null: no conclusive answer. Not charged.

Microsoft runs two separate account systems. Personal Microsoft accounts are created by individuals. Work or school accounts are created and managed by organizations. This check is about the personal kind, so it tells you nothing about someone's employer or their company's systems.

Who uses it, and why?

A single Microsoft account often covers a person's PC, e-mail, cloud storage and games console. Numbers linked to one have usually been used for sign-ins and verification codes for years.

  • Account security. When a customer changes the recovery number on their account with you, a number linked to a Microsoft account is less likely to be temporary. See account security.
  • Sign-up protection. The real-time answer fits into a live sign-up next to a carrier lookup, with Apple Account as a second large-platform signal.
  • Data hygiene. It helps you judge whether old numbers in consented customer records are still in use.

For e-mail addresses, use the Outlook e-mail check. It runs in bulk jobs only.

What do you get back?

Each number gets one result under checks["microsoft.registered"], with no extra attributes.

FieldTypeMeaning
registeredboolean or nulltrue account associated, false none, null unknown
statusenumcompleted, pending, unknown, unsupported_country or failed
confidence / confidence_scoreenum / 0–1How sure the answer is
checked_attimestampWhen the answer was obtained
cached / age_secondsboolean / integerServed from your account's cache, and its age
billedbooleanWhether this check was charged
reasonstring or nullWhy an answer is not conclusive

How is it billed?

You pay per number checked, only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). Real-time and bulk checks are priced separately. See pricing. Cache hits are free, and max_age: 0 forces a fresh, billed check.

What are the limits?

  • Real time (POST /v1/lookup, up to 100 identifiers) and bulk jobs (POST /v1/jobs, up to 50,000 per job), for numbers from every country.
  • Up to 20 checks per request. Numbers × checks is capped at 2,000 per lookup and 100,000 per job.
  • Requests that look like sequential number ranges or generated e-mail lists are rejected.
  • A daily cap per account applies (GET /v1/limits).

How do I use it responsibly?

Use the answer to protect accounts and sign-ups, only for numbers you have a lawful basis to process. Don't build profiles or run through number lists to see who has an account. The acceptable use policy forbids both, as well as unsolicited messaging. People can object at /opt-out.

Example request

With a test key, +447700900001 answers "registered". See test mode.

curl https://api.mobilevalidate.com/v1/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["microsoft"]}'

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 (excerpt, test mode: the first item of results):

JSON
{
  "kind": "phone",
  "input": "+447700900001",
  "e164": "+447700900001",
  "country": "GB",
  "number_status": "valid",
  "checks": {
    "microsoft.registered": {
      "service": "microsoft.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:31.192Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

Run it here with a test value: the console calls the live API from your browser with the public sandbox key and shows the real JSON and a plain-English verdict.

POST /v1/lookup

Public sandbox key · test values only · never billed

The sandbox answers the test values below. To check your own numbers for real, create a free account: your first 20 phone numbers and 10 e-mail addresses are free.

Test numbers
Test e-mails
Checks · phone · 1 selected

Pick a test value or press Run

Press Run or pick a test value above: the console sends a real request to the API with the public sandbox key and shows the answer here.

Check your own numbers: 20 phone numbers and 10 e-mail addresses are checked for real, free, after sign-up. Start free

checks: ["microsoft.registered"] · Realtime lookup via POST /v1/lookup. 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/lookup \
  -H "Authorization: Bearer mv_test_publicSandboxn9ZgneuhR1B9CRfKG3fulym" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["+447700900001"],"checks":["microsoft.registered"]}'

Real test-mode result for this check

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

What you get

Fields of checks["microsoft.registered"], 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

Does the check cover work or school accounts?

The check is about personal Microsoft accounts, the kind used for Outlook.com, Xbox, OneDrive and signing in to Windows. Work or school accounts are managed by each organization in a separate system, so don't read the answer as a statement about them.

Can a Microsoft account use a phone number as its username?

Yes. Microsoft lets people sign in with a phone number as well as with an e-mail address. A number can also be added as a security contact for verification codes.

Is there an Outlook e-mail check too?

Yes. The outlook.email service checks whether an Outlook address exists. It runs in bulk jobs only, while this phone check also works in real time.

Does the result include the account's name or Xbox gamertag?

No. It only indicates whether a Microsoft account is associated with the number. No name, gamertag, e-mail address or device information is returned.

Is there a free microsoft number check?

Yes, to try it on your own data: create a free account and check up to 20 phone numbers for real on the dashboard's Try it page, at no cost. Test mode with documented test values is free and unlimited. After that, a microsoft number check costs $0.001 per check in real time ($1.00 per 1,000) and $0.0005 in bulk jobs ($0.50 per 1,000), paid from prepaid credit. Unknown and other inconclusive results are always free.

All articles

Add Microsoft number check to your stack

Create a free MobileValidate account: approved automatically, usually within 10–15 minutes. Microsoft number check: $0.001 per check real-time, $0.0005 in bulk ($1.00 / $0.50 per 1,000).

Free to start: check 20 phone numbers and 10 e-mail addresses for real on your account, plus an unlimited test mode. You pay only for conclusive answers, from $20.