TikTok Profile API
Full public profile for a handle: display name, bio, avatar, follower and like counts.
$0.40/1k req, pay per request, no subscription.
{"handle": "cristiano","displayName": "Cristiano Ronaldo","bio": "SIUUU 🇵🇹","verified": true,"followers": 64200000,"following": 12,"likes": 412000000,"videos": 38,... 6 more fields}
Pricing and providers
TikTok Profile API pricing: one API, 7 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
Try it
Get TikTok profile in one request
This sample shows 11 of 17 fields. See every field
{
"found": true,
"data": {
"handle": "cristiano",
"displayName": "Cristiano Ronaldo",
"bio": "SIUUU 🇵🇹",
"verified": true,
"followers": 64200000,
"following": 12,
"likes": 412000000,
"videos": 38,
"avatarUrl": "https://p16.tiktokcdn.com/cristiano.jpg"
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- handlestring
cristiano
TikTok username without the leading @ (e.g. "stoolpresidente").
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `createdUtc`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on an account that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
Response
JSON, one example value per field.
- avatarUrlstring
https://p16.tiktokcdn.com/cristiano.jpg
Populated whenever the provider has data for the entity.
- biostring
SIUUU 🇵🇹
Populated whenever the provider has data for the entity.
- createdUtcnumbercan require
UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.
- displayNamestring
Cristiano Ronaldo
Populated whenever the provider has data for the entity.
- externalUrlstring
The single link the account publishes in its bio, normalized to an absolute URL. Absent when the account publishes no link. Populated whenever the provider has data for the entity.
- followersinteger
64200000
- followinginteger
12
- handlestring
cristiano
Populated whenever the provider has data for the entity.
- likesinteger
412000000
- privateboolean
Whether the account is private.
- secUidstring
TikTok's sec_uid: the opaque account identifier TikTok's own web and app endpoints key on, and the id most third-party TikTok tools ask for.
- userIdstring
TikTok's numeric internal user id for the account. Unlike the handle it never changes, so store it as the account's key. Populated whenever the provider has data for the entity.
- verifiedboolean
true
- videosinteger
38
- foundboolean
true
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
Selling this API? See the full schema your endpoint must return.
FAQ
About the TikTok Profile API
The AnyAPI TikTok Profile API returns TikTok profile data as normalized JSON from one POST call to /v1/run/tiktok.profile. Full public profile for a handle: display name, bio, avatar, follower and like counts. AnyAPI routes each request across 7 sources and falls back automatically when one fails. It costs from $0.40 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of TikTok profile calls through AnyAPI succeeded, with a median response time of 1.0 seconds across 134,532 measured calls.