# Check if a phone number has a TikTok account

> Check in bulk whether a TikTok account is associated with phone numbers you already hold. Yes, no or unknown per number; unknowns are free.

Canonical: https://mobilevalidate.com/services/tiktok-number-check · Last updated: 2026-09-25

![A phone number checked against a grid of generic account tiles, each marked registered, not registered or unknown.](https://mobilevalidate.com/images/account-presence-check.svg)

*Account checks say whether an account exists. They never say whose it is.*


The TikTok check indicates whether a TikTok account is associated with a phone number. It runs in bulk jobs only and answers `registered: true`, `false` or `null` (unknown) for each number, with the time of the check. No username, name, photo or video is ever returned.

## What does the TikTok check tell you?

It tells you whether the number is linked to a TikTok account. TikTok offers sign-up with a phone number and a one-time code, with an e-mail address, or through other sign-in providers. A number is therefore attached to many accounts, but not all.

- `registered: true`: a TikTok account is associated with the number.
- `registered: false`: a conclusive "no", which includes people who signed up another way.
- `registered: null`: no conclusive answer. You are not charged.

## Who uses it, and why?

Consumer businesses whose customers skew young use the TikTok check alongside [Instagram](/services/instagram-number-check) and [Snapchat](/services/snapchat-number-check) to judge whether numbers in a list they hold are real and used.

- **Lead-list hygiene.** Checking consented leads in bulk before a campaign shows which numbers have any footprint on large consumer apps. See [lead verification](/use-cases/lead-verification).
- **Sign-up review queues.** Batches of new sign-ups can be checked overnight to flag numbers with no platform history for review.

Because it runs as a batch, this check is not built for decisions that must happen during a live sign-up. For those, use real-time services such as [Instagram](/services/instagram-number-check) or [Facebook](/services/facebook-number-check).

## What do you get back?

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

| Field | Type | Meaning |
|---|---|---|
| `registered` | boolean or null | `true` account associated, `false` none, `null` unknown |
| `status` | enum | `completed`, `pending`, `unknown`, `unsupported_country` or `failed` |
| `confidence` / `confidence_score` | enum / 0–1 | How sure the answer is |
| `checked_at` | timestamp | When the answer was obtained |
| `cached` / `billed` | boolean | Served from cache; charged or not |
| `reason` | string or null | Why an answer is not conclusive |

Job downloads (CSV or NDJSON) add `tiktok.registered.status`, `tiktok.registered.registered` and `tiktok.registered.billed` columns.

## How is it billed?

You pay the bulk price per number, and only for conclusive answers. You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate). `POST /v1/jobs/estimate` is free and shows the maximum cost before you start. See [pricing](/pricing).

## What are the limits?

- Bulk only: `POST /v1/jobs`, up to 50,000 numbers and e-mails per job, and at most 100,000 numbers × checks.
- Numbers from any country. National formats need `default_country`.
- Requests that look like sequential number ranges or generated e-mail lists are rejected.
- A daily cap per account applies (`GET /v1/limits`). Job data is kept for 30 days by default.

## How do I use it responsibly?

Only check lists you have a lawful basis to process, such as your own customers or consented leads. Never use the answers to contact people who did not ask to hear from you, or to work out who uses TikTok. The [acceptable use policy](/legal/acceptable-use) forbids both. People can object at [/opt-out](/opt-out).

## Example request

Create a job with test numbers, then read its results. Test keys are free. See [test mode](/docs/test-mode) and [bulk jobs](/docs/bulk-jobs).

```bash
curl https://api.mobilevalidate.com/v1/jobs \
  -H "Authorization: Bearer $MOBILEVALIDATE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: tiktok-demo-001" \
  -d '{"numbers": ["+447700900001", "+447700900002", "+447700900003"], "checks": ["tiktok"]}'
# then: GET /v1/jobs/{id}?wait=30 and GET /v1/jobs/{id}/results
```

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

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

## Frequently asked questions

### Can I check TikTok in real time?

Not at the moment. The TikTok check runs in bulk jobs only (POST /v1/jobs). A request to POST /v1/lookup returns 403 service_disabled with a message pointing to bulk jobs.

### How long does a TikTok bulk job take?

It depends on the job's size and current load. GET /v1/jobs/{id} shows progress and an estimate, and you can long-poll it with wait=30 or receive a job.completed webhook.

### Does the check return the TikTok username or videos?

No. It only indicates whether a TikTok account is associated with the number. Usernames, names, photos and content are never returned.

### Why would a real TikTok user come back as not registered?

TikTok also accepts sign-up with e-mail or through other sign-in providers, so not every account has a phone number attached.

## Service code and modes

- Code: `tiktok.registered` (input: phone number)
- Modes: bulk only · worldwide

## Price (live)

- Realtime: not available (bulk only)
- Bulk (POST /v1/jobs): $0.0015 per check ($1.50 per 1,000)
- You're not charged for inconclusive results (unknown, unsupported country, timeout, invalid, duplicate).

## Response fields (from the public catalog)

| Field | Type | Meaning |
|---|---|---|
| registered | boolean or null | true = found, false = not found, null = unknown (not charged) |
| status | enum | completed, pending, unknown, unsupported_country, failed |
| checked_at | timestamp | When the answer was obtained |

_Platform and brand names are used only to describe which service a check refers to. MobileValidate is not affiliated with, endorsed by or sponsored by any of these companies; all trademarks belong to their owners._
