RealtimeBulkPhone input

Check if a phone number is linked to an Apple Account (Apple ID)

Check in real time whether an Apple Account (Apple ID) is associated with a phone number. Yes, no or unknown per number; unknowns are free.

Last updated

checks: ["apple.registered"]
A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.

The Apple Account check indicates whether an Apple Account, formerly called Apple ID, 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, addresses or devices.

What does the Apple Account check tell you?

It tells you whether a phone number is linked to an Apple Account, the account people use for the App Store, iCloud and other Apple services. Apple began calling Apple ID "Apple Account" in 2024. A phone number can be linked in two main ways. It can serve as a trusted phone number for two-factor authentication, which Apple uses to send sign-in codes. In some regions, it can also be the account's primary identifier instead of an e-mail address.

  • registered: true: an Apple Account is associated with the number.
  • registered: false: a conclusive "no".
  • registered: null: no conclusive answer. Not charged.

The check covers the account, not iMessage. To find out whether a number is registered for iMessage, use the iMessage check. It runs in bulk jobs only.

Who uses it, and why?

Apple Accounts protect payment details and device access, so a phone number tied to one has usually been used for real sign-ins and verification codes.

  • Account security. When a customer adds or changes a phone number on their account with you, a number linked to an Apple Account is less likely to be a disposable number. It is one input to a review, not proof. See account security.
  • Sign-up protection. In a live sign-up, the real-time answer can sit next to a carrier lookup to separate everyday mobile numbers from numbers set up for a single use.
  • Channel planning for expected messages. Combined with iMessage and RCS, it helps you estimate how many of your consented customers are on Apple devices.

What do you get back?

Each number gets one result under checks["apple.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, and 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 inside the freshness window 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 (suspected_enumeration).
  • A daily cap per account applies (GET /v1/limits).
  • Invalid, duplicate and suppressed numbers are reported per row and never checked.

How do I use it responsibly?

Use the answer to protect accounts and sign-ups, and only for numbers you have a lawful basis to process. Don't use it to profile people, to judge them by the devices they use, or to decide on eligibility for credit, jobs, housing or insurance. The acceptable use policy forbids these uses and 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":["apple"]}'

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": {
    "apple.registered": {
      "service": "apple.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:31.114Z",
      "cached": false,
      "age_seconds": 0,
      "billed": false,
      "reason": null,
      "poll_after_ms": null
    }
  },
  "test": true
}

Try it now

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":["apple.registered"]}'

Real test-mode result for this check

checks["apple.registered"]
{
  "service": "apple.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["apple.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

Is this the same as the iMessage check?

No. This check answers whether an Apple Account is associated with the number. The iMessage check answers whether the number is registered for iMessage. They often agree, but not always, and iMessage runs in bulk jobs only.

Apple ID or Apple Account — which is it?

Both names mean the same account. Apple began calling Apple ID the Apple Account in 2024. The service code stays apple.registered.

Does a linked Apple Account mean the person uses an iPhone?

Not necessarily. Apple Accounts are also used on Mac, iPad, Windows and the web, for example for Apple Music or iCloud. It suggests the number belongs to someone who uses Apple services.

Can I check an e-mail address for an Apple Account?

Yes, with the separate apple.email service (alias apple.email). It also runs in real time.

Does the check return the Apple Account's name or devices?

No. It only indicates whether an account is associated with the number. No name, e-mail address, device list or location is returned.

All articles

Add Apple number check to your stack

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