Datasets API endpoint
Retrieves one public TikTok creator profile by `creator_uid`. Deleted/private accounts remain hidden unless `include_inactive=true`. Contact email stays redacted by default and `include_email=true` is honored only for entitled non-Free API keys.
/datasets/creators/items/{creator_uid}MCP tool: datasets_creators_item
Returns one stored public TikTok creator profile by creator_uid from
datasets_creators_search. Deleted and private accounts return 404 by
default; pass include_inactive=true for historical lookups. Contact email and
email status stay redacted unless include_email=true and the authenticated API
key belongs to an entitled non-Free plan. Hosted MCP results always redact
these fields.
Path parameter:
creator_uid: required; canonical creator key from search, e.g.
tiktok:@bubble.Optional query parameters: include_inactive, include_email.
Requires the x-api-key header. Costs 1 credit.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| creator_uid (path) | string | Yes | Exact creator_uid from a search result, e.g. tiktok:@handle | tiktok:@example-creator | |
| include_inactive | boolean | No | Include deleted/private accounts for historical lookup | ||
| include_email | boolean | No | Return stored contact email only for entitled non-Free API keys | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/creators/items/tiktok%3A%40example-creator?include_inactive=true&include_email=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
Replace the illustrative item key with a key returned by the matching dataset search. The response example shows field shape only, not a stored record.
{
"code": 200,
"msg": "OK",
"data": {
"creator_uid": "<example>",
"platform": "<example>",
"unique_id": "<example>",
"nickname": "<example>",
"niche": "<example>",
"country": "<example>",
"verified": false,
"follower_count": 0,
"total_likes": 0
}
}Request schema
No body schema
Response schema
#/definitions/datasets.creatorDatasetItemResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | ||||
| data | es.CreatorRecord | No | ||||
| data.avatar_url | string | No | URL of the profile picture. | |||
| data.avg_views | integer | No | top-level mirror of PostStats.AvgViews for sort/filter | |||
| data.bio | string | No | Profile biography text. | |||
| data.bio_link | string | No | Link shown in the profile biography. | |||
| data.brand_affiliations | array | No | Brands linked to the creator. | |||
| data.country | string | No | Creator's country or region code in lowercase, for example `us`. | |||
| data.creator_uid | string | No | Unique creator id, made of the platform and the handle, for example `tiktok:@bubble`. | |||
| data.email | string | No | Business contact email found for the creator. | |||
| data.email_status | string | No | Verification status of the contact email. | |||
| data.engagement_rate | number | No | headline = by-view (TikTok standard); see PostStats for both | |||
| data.first_seen | string | No | FirstSeen is the discovery timestamp: set once when the creator is first indexed, and never changed by a later re-crawl. Values recorded before 2026-08-29 are unreliable and should not be used for cohort or tenure analysis. | |||
| data.follower_count | integer | No | Number of followers. | |||
| data.following_count | integer | No | Number of accounts the creator follows. | |||
| data.language | string | No | Language code set on the creator's profile. | |||
| data.last_crawled | string | No | Time the creator's profile was last fetched, in UTC (RFC 3339). | |||
| data.last_post_at | string | No | top-level mirror of PostStats.LastPostAt for recency filter | |||
| data.niche | string | No | Niche is the DISCOVERY SEED TERM that surfaced this creator (the keyword/hashtag/ explore-category the crawler used), NOT a content classification. It is single-valued and first-write-wins, so a creator found via the "korean skincare" keyword sweep is tagged "skincare" whatever they actually post about. Do not present it as a category; use NicheClassified for that. | |||
| data.niche_classified | string | No | NicheClassified is the content niche DERIVED FROM THE BIO by classifyNiche() in the creatorsdb-enrich worker. Independent of Niche by construction: it is computed for every creator with a bio, including those that already carry a seed term, so the two fields never contaminate each other and "which is this?" is answered by the field name rather than an unbackfillable provenance flag. | |||
| data.nickname | string | No | Display name shown on the creator's profile. | |||
| data.platform | string | No | Social platform the creator is on, for example `tiktok`. | |||
| data.post_stats | object | No | Averages and posting habits worked out from a sample of the creator's recent posts. | |||
| data.post_stats.analyzed_at | string | No | Time these post statistics were calculated, in UTC (RFC 3339). | |||
| data.post_stats.avg_comments | integer | No | Average comment count per sampled post. | |||
| data.post_stats.avg_likes | integer | No | Average like count per sampled post. | |||
| data.post_stats.avg_saves | integer | No | Average save (bookmark) count per sampled post. | |||
| data.post_stats.avg_shares | integer | No | Average share count per sampled post. | |||
| data.post_stats.avg_video_duration_sec | number | No | Average video length of sampled posts, in seconds. | |||
| data.post_stats.avg_views | integer | No | Average view count per sampled post. | |||
| data.post_stats.best_post_id | string | No | TikTok identifier of the most viewed sampled post. | |||
| data.post_stats.best_post_views | integer | No | View count of the most viewed sampled post. | |||
| data.post_stats.distinct_sounds | integer | No | DistinctSounds is how many different sounds the sampled posts used. TopSounds keeps only the five most-used, so without this a consumer cannot tell a creator who reuses one sound across the sample from one who used a different sound every time — both surface five rows. | |||
| data.post_stats.engagement_rate_by_follower | number | No | Average over sampled posts of likes, comments and shares divided by the creator's follower count, as a fraction. | |||
| data.post_stats.engagement_rate_by_view | number | No | Likes, comments, shares and saves divided by views across sampled posts, as a fraction (0.05 means 5%). | |||
| data.post_stats.first_post_at | string | No | Time of the oldest sampled post, in UTC (RFC 3339). | |||
| data.post_stats.last_post_at | string | No | Time of the most recent sampled post, in UTC (RFC 3339). | |||
| data.post_stats.median_likes | integer | No | Median like count across sampled posts. | |||
| data.post_stats.median_views | integer | No | Median view count across sampled posts. | |||
| data.post_stats.original_sound_ratio | number | No | Share of sampled posts that use the creator's own original sound, as a fraction from 0 to 1. | |||
| data.post_stats.posts_per_week | number | No | Average number of posts per week between the oldest and newest sampled post. | |||
| data.post_stats.sampled_posts | integer | No | Number of the creator's recent posts included in these figures. | |||
| data.post_stats.top_hashtags | array | No | Most used hashtags across sampled posts, lowercase and without the leading `#`, most used first. | |||
| data.post_stats.top_sounds | array | No | Most used sounds across sampled posts, most used first. | |||
| data.post_stats.top_sounds[].author | string | No | Name of the account or artist credited for the sound. | |||
| data.post_stats.top_sounds[].music_id | string | No | TikTok identifier of the sound. | |||
| data.post_stats.top_sounds[].original | boolean | No | Original marks TikTok-generated original audio. Titles cannot be used for this: TikTok localizes the label (`sonido original`, `оригинальный звук`, …), so a title match silently reclassifies original audio as a named track. | |||
| data.post_stats.top_sounds[].title | string | No | Title of the sound as TikTok shows it. | |||
| data.post_stats.top_sounds[].uses | integer | No | Number of the creator's sampled recent posts that used this sound. | |||
| data.post_stats.views_to_follower_ratio | number | No | Average views per sampled post divided by the creator's follower count. | |||
| data.sec_uid | string | No | Stable account id the platform assigns to the creator. | |||
| data.source | string | No | Label for where the creator entry came from. | |||
| data.status | string | No | "" active | "deleted" | "private" — refresh marks these to skip future crawls | |||
| data.total_likes | integer | No | Total likes received across the creator's videos. | |||
| data.unique_id | string | No | Creator's handle on the platform, without the `@`. | |||
| data.verified | boolean | No | Whether the profile has the platform's verified badge. | |||
| data.video_count | integer | No | Number of videos posted. | |||
| msg | string | No |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/creators/items/tiktok%3A%40example-creator?include_inactive=true&include_email=true" \
-H "x-api-key: $CRAWLORA_API_KEY"