TikTok

TikTok Audience Demographics API

Audience country + language mix for a TikTok creator — engagement sample, not a follower census.

Give a profile URL, @handle, or username and get a ranked audience-country breakdown as clean JSON. TikTok does not publish follower geography — we sample people engaging with recent videos. The two signals come from two populations, disclosed in the response: audienceLanguages[] are tallied from top-level commenters (basis.language="commenters"), while audienceLocations[] come from repliers under the most-replied parent comments (basis.region="repliers") — the only public surface that reliably exposes user.region. Each country row carries country name, countryCode, count, and numeric percentage (+ percentageText). Response includes sampleSize, totalCountries, regionSampleParents + regionSampleVideos (how many distinct parent threads / videos the region sample is spread over), and a clustering-aware confidence: the size-based label (low <400, medium 400–999, high ≥1000) is CAPPED when the region sample is concentrated in few threads (<8 parents or <4 videos → low; <20 parents or <8 videos → at most medium), because 400 repliers from 6 threads are not 400 independent observations. Optional other{} only when countriesLimit truncates. timings{path,postsVia,postsMs,postsDeadlineMs,commentsMs,commentsVia,totalMs,videoConcurrency,commentsAttempts,commentsErrors,commentsAttemptsPerVideo} — postsVia names the leg that served the video list (native), commentsVia the comments surface (web+replies), commentsErrors counts blocked comment requests absorbed before clean pages, and commentsAttemptsPerVideo is the per-video attempts distribution (sorted desc). If the posts leg hits its deadline on a real profile you get a degraded 200 (degraded:true, degradedReason:"posts-timeout", 0 credits) — 404 NOT_FOUND is reserved for profiles positively confirmed absent, never for a slow fetch. Choose videos=12|30|60 (credits 3/5/8) for sample depth. Percentages across audienceLocations (+ other) sum to ~100%. This reflects who engages, not a full follower census.

Docs: https://captapi.com/apis/tiktok-audience-demographics

get/v1/tiktok/audience-demographics

Request

  • Base URL: https://api.captapi.com
  • URL: https://api.captapi.com/v1/tiktok/audience-demographics
  • Auth: one of:
    • HTTP bearer
    • API key in header X-API-Key

Query parameters

urlstring required

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.

videosinteger

How many recent videos to sample comments from: 12 (default, 3 credits), 30 (5 credits), or 60 (8 credits).

countriesLimitinteger

Max countries in audienceLocations; remainder folds into other{count,percentage}. Omit for the full list (other is omitted when unused).

cacheboolean

Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.

Response

Success. The data object for this endpoint.

successunknown required

Changes

No recorded changes to this operation across all 3 revisions of this API.