---
title: "TikTok Profile Region API"
method: GET
path: "/v1/tiktok/profile-region"
tags: ["TikTok"]
---

# TikTok Profile Region API

`GET /v1/tiktok/profile-region`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/tiktok/profile-region`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Find out where a TikTok creator is likely based and what language they use — country, language, stable ids, and core profile stats.

Give the TikTok Profile Region API a profile URL, @handle, or username and it returns creator geography and language as clean JSON — the dedicated geo surface. channel-details (1 credit) reads the same profile page and emits region only when TikTok itself publishes it (rare) — it never guesses. This endpoint adds the work that justifies 2 credits: when the page has no country we run an AI estimate from bio / display name / username / language (regionSource=inferred + regionConfidence; a username that merely equals a country name — @syria, @france — is not treated as evidence). When TikTok blocks the profile fetch the call is 503 at 0 credits; a handle TikTok does not have is 404. The response tells you whether the country came from TikTok or from that estimate. You also get stable id + secUid, account createTime / createTimeUnix, ttSeller + isOrganization (boolean), interface language, and core profile stats — followers, following, total likes, and videos (integer count) — plus display name, verified and private flags, and the avatar. Stats on this surface may be TTL-stale; use channel-details when you need a fresh identity card. Upstream TikTok blobs are not returned by default — pass raw=true only when you need the opt-in escape hatch. Flat 2 credits per live call. Pass cache=true for the 7d shared cache (0 credits on hit), or cacheMaxAge=1d|3d|7d|14d|30d; default is always fresh.

Docs: https://captapi.com/apis/tiktok-profile-region

## Query parameters

- `url` string, required
- `raw` boolean
- `cache` boolean
- `cacheMaxAge` '1d' | '3d' | '7d' | '14d' | '30d'

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Platform identifier for this response (matches the endpoint's platform).
    - `username` string: Account username / handle.
    - `displayName` string: Display name of the account. Canonical across profile endpoints (prefer over name).
    - `url` string: Canonical URL of the item.
    - `id` string: Stable platform ID for the item.
    - `secUid` string: TikTok secure user ID — required for many platform-internal list endpoints.
    - `createTime` string: When the account was created (ISO 8601).
    - `createTimeUnix` integer: Create time unix. Example: 1470866554.
    - `ttSeller` boolean: Has a TikTok Shop storefront (user.ttSeller). Act on this for /tiktok-shop/* joins. Not the same as isCommerceUser.
    - `isOrganization` integer: Whether TikTok marks the account as an organization (boolean — never 0/1).
    - `region` string: Creator's country as an ISO code (e.g. IT, US). Same profile-page field channel-details copies when TikTok exposes it (rare). Here a missing value is filled by AI inference (regionSource=inferred) or, if the page has neither region nor language, a caption-language sample from recent videos. Check regionSource / regionConfidence. Distinct from video-details.locationCreated (video locale).
    - `language` string: Detected or requested language code.
    - `followers` integer: Follower count.
    - `following` integer: Number of accounts followed.
    - `likes` integer: Total likes across the creator's videos (TikTok heartCount).
    - `videos` integer: Total public video count on the profile (integer). Not a typed media asset list.
    - `verified` boolean: Whether TikTok shows a verified badge on this profile.
    - `private` boolean: Whether the account is private.
    - `profileImage` string: Profile image URL. Deprecated alias of avatar on Instagram/Twitter/Threads/TikTok profile endpoints (one release).
    - `raw` object: Raw upstream payload for advanced use (fields may change). Prefer the normalized top-level fields when available.
      - `user` object
        - `id` string: Stable platform ID for the item.
        - `shortId` string
        - `uniqueId` string
        - `nickname` string
        - `avatarLarger` string
        - `avatarMedium` string
        - `avatarThumb` string
        - `signature` string
        - `createTime` integer: When the account was created (ISO 8601).
        - `verified` boolean: Whether TikTok shows a verified badge on this profile.
        - `secUid` string: TikTok secure user ID — required for many platform-internal list endpoints.
        - `ftc` boolean
        - `relation` integer
        - `openFavorite` boolean
        - `commentSetting` integer
        - `commerceUserInfo` object
          - `commerceUser` boolean
        - `duetSetting` integer
        - `stitchSetting` integer
        - `privateAccount` boolean
        - `secret` boolean
        - `isADVirtual` boolean
        - `roomId` string
        - `uniqueIdModifyTime` integer
        - `ttSeller` boolean: Has a TikTok Shop storefront (user.ttSeller). Act on this for /tiktok-shop/* joins. Not the same as isCommerceUser.
        - `downloadSetting` integer
        - `profileTab` object
          - `showMusicTab` boolean
          - `showQuestionTab` boolean
          - `showPlayListTab` boolean
        - `followingVisibility` integer
        - `recommendReason` string
        - `nowInvitationCardUrl` string
        - `nickNameModifyTime` integer
        - `isEmbedBanned` boolean
        - `canExpPlaylist` boolean
        - `profileEmbedPermission` integer
        - `language` string: Detected or requested language code.
        - `eventList` unknown[]
          - unknown
        - `suggestAccountBind` boolean
        - `isOrganization` integer: Whether TikTok marks the account as an organization (boolean — never 0/1).
        - `UserStoryStatus` integer
        - `shortDramaCreator` object
      - `statsV2` object
        - `followerCount` integer
        - `followingCount` integer
        - `heart` integer
        - `heartCount` integer
        - `videoCount` integer
        - `diggCount` integer
        - `friendCount` integer
    - `regionConfidence` string: For an inferred region, confidence of the guess: "high", "medium", or "low". Null when the region came from TikTok.
    - `regionSource` string: Where region came from: "tiktok" (authoritative, reported by TikTok) or "inferred" (best-effort estimate from public signals).

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

[API](https://skmtc.dev/captapi/apis/captapi-api.md) · [All operations](https://skmtc.dev/captapi/apis/captapi-api/llms.txt) · [OpenAPI document](https://skmtc.dev/captapi/apis/captapi-api/revisions/c9b9ac5ff1bd?raw)
