TikTok Channel Details API
Resolve a TikTok @handle to id + secUid — createTime, ttSeller, bioLink, decoded privacy flags.
GET request to /v1/tiktok/channel-details that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the TikTok Channel Details API?
Pass a profile URL or @handle and get a curated identity card for CRM joins and chaining — not a geography endpoint. Single key set: platform, id, handle, url, displayName, bio, avatar, followers + followersIsApproximate, following, likes + likesIsApproximate, postCount + postCountIsApproximate, verified, private, secUid, likesGiven (videos this account has liked — not likes received; null when TikTok hides it), category, createTime (ISO; the unix twin is raw.createTimeUnix), bioLink{link,risk: low|medium|high}, ttSeller (user.ttSeller — has a TikTok Shop storefront; act on this for Shop joins), isCommerceUser (commerceUserInfo.commerceUser — TikTok's commerce-user flag, not a shop; can disagree with ttSeller), isOrganization, friendCount, language, region only when TikTok exposes it on the profile page, decoded privacy (commentsAllowedFrom / duetsAllowedFrom / stitchesAllowedFrom / downloadsAllowed), contact{emails,links} (bio-only links — bioLink.link is not duplicated), and source / stages / timings (same envelope as user-showcase and video-details; this path is web-only so mobileStatus is skipped). Upstream TikTok privacy ints, createTimeUnix, and other internals are behind raw=true. For creator country with regionSource / regionConfidence use /tiktok/profile-region (2 credits). Pass cacheMaxAge=1d|3d|7d|14d|30d. Flat 1 credit.
What you get
- id + secUid for CRM joins and follower/video chaining
- createTime (account age); createTimeUnix under raw=true
- ttSeller (Shop storefront) vs isCommerceUser (commerce-user flag) — different raw bits
- followersIsApproximate / likesIsApproximate / postCountIsApproximate
- Decoded privacy flags; raw=true for upstream enums
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/tiktok/channel-details?url=https%3A%2F%2Fwww.tiktok.com%2F%40natgeo" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"platform": "tiktok",
"url": "https://www.tiktok.com/@natgeo",
"id": "6780344874811442181",
"displayName": "National Geographic",
"bio": "Step into wonder and find your inner explorer with National Geographic 🌎",
"followers": 9590041,
"following": 61,
"likes": 53508645,
"postCount": 1454,
"verified": true,
"private": false,
"avatar": "https://p16-common-sign.tiktokcdn-us.com/tos-useast8-avt-0068-tx2/324924e171e481040a1ea202962f6e07~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=2d807a74&x-expires=1786435200&x-signature=VLjDqS0313BGst8y0tyrQFabZB4%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast8",
"category": "Media & Entertainment",
"secUid": "MS4wLjABAAAAEf96k3JW8-3eOhgzgQswlFF6ZDnn1dzqWWorJjwDsiNZymqTtvOcFhp_RiYYST6s",
"createTime": "2020-01-10T16:08:37.000Z",
"createTimeUnix": 1578672517,
"friendCount": 58,
"diggCount": null,
"bioLink": {
"link": "spr.ly/natgeotiktok",
"risk": 3
},
"isCommerceUser": true,
"ttSeller": false,
"isOrganization": true,
"language": "en",
"commentsAllowedFrom": "everyone",
"duetsAllowedFrom": "off",
"stitchesAllowedFrom": "off",
"downloadsAllowed": false,
"contact": {
"links": [
"spr.ly/natgeotiktok"
]
},
"fetchedAt": "2026-08-09T08:56:19.857Z",
"handle": "natgeo"
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success and a data object with the following fields:
Top-level fields
platformPlatform identifier for this response (matches the endpoint's platform).urlCanonical URL of the item.idStable platform ID for the item.displayNameDisplay name of the account. Canonical across profile endpoints (prefer over name).bioProfile bio. Canonical across profile endpoints (prefer over description on YouTube).followersFollower count.followingNumber of accounts followed.likesTotal likes across the creator's videos (TikTok heartCount). Not likesGiven.postCountTotal posts/statuses/videos for the account. Canonical across profile endpoints (prefer over posts / videoCount / tweetCount).verifiedWhether TikTok shows a verified badge on this profile.privateWhether the account is private.avatarAvatar / profile picture URL. Canonical across profile endpoints.categoryGeneric category label for the item or community.secUidTikTok secure user ID — required for many platform-internal list endpoints.createTimeWhen the account was created (ISO 8601).createTimeUnixUnix twin of createTime — only under raw=true. The curated card is ISO createTime only.friendCountMutual-follow (friends) count when exposed.diggCountDigg count.isCommerceUserTikTok's commerce-user flag (commerceUserInfo.commerceUser). Not a shop. Independent of ttSeller.ttSellerHas a TikTok Shop storefront (user.ttSeller). Act on this for /tiktok-shop/* joins.isOrganizationWhether the account is an organization account.languageDetected or requested language code.commentsAllowedFromWho can comment: "everyone", "friends", or "off".duetsAllowedFromWho can duet: "everyone", "friends", or "off".stitchesAllowedFromWho can stitch: "everyone", "friends", or "off".downloadsAllowedWhether others may download this creator's videos.fetchedAtWhen this snapshot was fetched (ISO 8601 UTC).handleTikTok @handle (canonical). No username twin on this endpoint.
Bio link
The bioLink object contains:
linkLink. Example: "spr.ly/natgeotiktok".riskRisk. Example: 3.
Contact
The contact object contains:
linksLinks listed on the page.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | TikTok profile URL, @handle, or username, e.g. https://tiktok.com/@username. Not a YouTube channel URL. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| raw | boolean | No | Set true to include TikTok's upstream user/statsV2 blob under raw, plus createTimeUnix (unix twin of createTime). Default false — curated fields only. |
| cache | boolean | No | Set true to serve from the response cache (default TTL). Default false — always fetch fresh. Prefer cacheMaxAge when you need 1d–30d freshness control. |
| cacheMaxAge | string | No | Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.
tiktok_channel_details via @captapi/mcp. Set it up →How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/tiktok/channel-detailsand parse the JSON response.
Use cases
Profile Enrichment
Add live stats, bio, and account flags to a contact you already have.
Creator Verification
Confirm a known handle, audience size, and business/verified status before outreach.
Competitive Analysis
Track follower growth and posting cadence for accounts you already follow.
Partnership Qualification
Vet known partnership and sponsorship targets with fresh profile data.
Frequently asked questions
What does the TikTok Channel Details API do?+
The TikTok Channel Details API lets you fetch profile or page details and audience stats from a public TikTok profile or page using one GET request to /v1/tiktok/channel-details. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the TikTok Channel Details API cost?+
Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a TikTok API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Does channel-details return id and secUid?+
Yes. Resolving @handle → id + secUid is the main job of this endpoint. Prefer those for CRM joins and for chaining into user-followers, channel-posts, and other secUid-gated TikTok calls. Handles change; id/secUid do not.
ttSeller vs isCommerceUser — which should I use?+
Two different raw bits. ttSeller is user.ttSeller — has a TikTok Shop storefront; chain into /tiktok-shop/* when true. isCommerceUser is commerceUserInfo.commerceUser — TikTok's commerce-user flag (often with a category). It is not a shop. They can disagree in both directions. Act on ttSeller for Shop joins.
Where did createTimeUnix go?+
Under raw=true as raw.createTimeUnix (and raw.user.createTime is the same unix). The curated card keeps ISO createTime only — one instant, one format.
Why is region often null here when profile-region returns a country?+
channel-details only returns region when TikTok exposes it on the profile page (rare). It does not run geo inference. Use /tiktok/profile-region for creator country with regionSource / regionConfidence.
What is channel-details for vs profile-region?+
channel-details (1 credit) is the identity/CRM resolve card — id, secUid, createTime, Shop flags, decoded privacy, bioLink. profile-region (2 credits) is the geography surface — region + regionSource + regionConfidence (+ language and core stats). Price tracks the inference work, not key count.
Are followers / likes / postCount exact?+
Often not on large accounts. followersIsApproximate / likesIsApproximate / postCountIsApproximate use the same display-rounding ladder as video-details (v ≥ 10 000 and a clean hundred, or a clean 100k above 1M). 162 700 000 followers is true. Values under 10 000 are exact.
Why is likesGiven null when likes is 1615?+
They are different counters. likes is heartCount — hearts received on the creator's videos. likesGiven is diggCount — videos this account has liked. TikTok hides likes-given on most accounts and ships 0; we return null, not a chartable zero. diggCount is gone from this surface.
Is the TikTok Channel Details API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More TikTok APIs
Ready to use the TikTok Channel Details API?
Sign up, grab your key, and make your first call in 60 seconds.