RealtimeBulkPhone input

Check if a phone number has a Threads account

Check in real time whether a Threads account is associated with a phone number. Yes, no or unknown with a timestamp; unknowns are never charged.

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

Start free

Last updated

The Threads check indicates whether a Threads account is associated with a phone number. It answers registered: true, false or null (unknown) with the time of the check. It works in real time and in bulk jobs, for numbers from any country. No handle, name, photo or post is ever returned.

What does the Threads check tell you?

It tells you whether the number is linked to a Threads account. Threads is Meta's text-based social app. It launched on 5 July 2023 (Meta announcement), and sign-up went through an existing Instagram account. For most people, the Threads account therefore shares its login details, including any phone number, with their Instagram account.

  • registered: true: a Threads account is associated with the number.
  • registered: false: a conclusive "no".
  • registered: null: no conclusive answer (see status and reason). You are not charged.

Because of this Instagram link, Threads answers are strongly correlated with the Instagram check. They are not identical. Someone can have Instagram without ever opening Threads, and Threads rules on how accounts are created and linked have changed since launch.

Who uses it, and why?

Threads is a younger network than Facebook or Instagram. Teams use the check mainly as an extra signal next to them.

  • Sign-up protection. An account on a new app shows recent activity by the person behind the number, which a number bought yesterday for one sign-up usually won't have. See OTP and sign-up fraud.
  • Consumer lead checks. Brands whose audience is active on Meta apps can add Threads to a multi-check with Instagram and Facebook to see how much history a number has.
  • Data hygiene. Along with other checks, it helps separate live, used numbers from dead entries in older lists you are allowed to process.

Threads also differs from other Meta apps in one technical way: Meta has started connecting it to the fediverse through the ActivityPub protocol. That affects how posts are shared. It does not affect what this check returns, which is only whether an account exists.

What do you get back?

Each number gets one result under checks["threads.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; null when not conclusive
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.

Repeat checks inside the freshness window are served free from your account's cache (cached: true, billed: false). Use max_age: 0 to force a fresh check, which is billed.

What are the limits?

The Threads check runs in real time (POST /v1/lookup, up to 100 identifiers) and in bulk jobs (POST /v1/jobs, up to 50,000 per job). It accepts numbers from every country.

  • A request can hold up to 20 checks. 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).
  • Invalid, duplicate and suppressed numbers are reported per row and never checked.

How do I use it responsibly?

Use the answer only to protect your service or to check data you have a lawful reason to hold. Don't research people, build profiles or run through lists of numbers to see who uses Threads. The acceptable use policy forbids these uses and unsolicited messaging. People can object through the opt-out form.

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":["threads"]}'

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": {
    "threads.registered": {
      "service": "threads.registered",
      "status": "completed",
      "registered": true,
      "attributes": null,
      "confidence": "high",
      "confidence_score": 0.99,
      "checked_at": "2026-09-25T14:25:30.627Z",
      "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: ["threads.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":["threads.registered"]}'

Real test-mode result for this check

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

What you get

Fields of checks["threads.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

How is Threads related to Instagram?

Threads launched in July 2023 as a Meta app where people signed up through their Instagram account. Because of that link, Threads and Instagram answers for a number often match, but they are separate checks and can differ.

Does the check return the Threads profile or posts?

No. It only indicates whether a Threads account is associated with the number. Handles, names, photos and posts are never returned.

Should I request Threads if I already check Instagram?

Only if the Threads answer changes your decision. For most sign-up and lead checks the Instagram answer is enough. Threads adds a second signal on the same account family.

Is Threads available in every country?

Threads launched outside the EU first and reached EU users in December 2023. Our check accepts numbers from any country, but how common Threads accounts are still varies by market.

What happens if the check does not answer in time?

The result is unknown, with registered set to null and a reason such as UPSTREAM_TIMEOUT. Unknown results are not charged.

Is there a free threads 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 threads number check costs $0.0005 per check in real time ($0.50 per 1,000) and $0.0003 in bulk jobs ($0.30 per 1,000), paid from prepaid credit. Unknown and other inconclusive results are always free.

All articles

Add Threads number check to your stack

Create a free MobileValidate account: approved automatically, usually within 10–15 minutes. Threads number check: $0.0005 per check real-time, $0.0003 in bulk ($0.50 / $0.30 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.