TikTok API endpoint
Returns TikTok Creative Center's current Top Content set: four top-performing branded videos, each with the video object (anonymous MP4 and cover URLs), engagement metrics, the author profile and follower count, and (by default) the video's top comments plus keyword mention counts derived from them. The set is a daily snapshot and there is no pagination or historical query; the four titles rotate when the snapshot changes. Set include_comments=false for a smaller response with only video, author, and metrics.
/tiktok/creative-center/top-contentQuery parameters:
include_comments: optional. Include each object's top comments and comment-keyword counts. Default: true. Set to false for a smaller response with only video, author, and metrics.Notable response behavior:
last_update_time is the UTC-midnight timestamp of
the snapshot the titles come from.name is the exact video title and doubles as the SEO page's URL key. The
four titles rotate with the daily snapshot, so a title is not a stable
identifier across days; call this endpoint again to discover the current set
rather than caching a title for long.item.video_url and the cover URLs are signed, time-limited TikTok CDN URLs
and are anonymously fetchable while valid, but they rotate per response.metrics are the object's period metrics (video_views, engagement_rate,
six_seconds_vtr); the SEO dataset does not expose lifetime counters.comments are the video's top comments (up to roughly 50) with their like
counts; comment_keywords gives each keyword mentioned in those comments
and the number of mentions./creative/top-content/{title}), which embeds the complete payload; the
JSON detail API is only a fallback when that page cannot be read. A
transient upstream HTTP 403 from the fallback is retried with backoff./api/v1/tiktok/creative-center/videos endpoint returns the
separate trending-videos ranking; use this endpoint for the curated Top
Content set and its comments.| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| include_comments | boolean | No | Include each object's top comments and comment-keyword counts |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/creative-center/top-content?include_comments=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"last_update_time": 1792195200,
"objects": [
{
"name": "Top Content Object 0",
"item": {
"item_id": "7687468918260223250",
"title": "Top Content Object 0",
"video_url": "https://example.tiktokcdn.com/video.mp4",
"cover_url": "https://example.tiktokcdn.com/cover.jpg",
"cover_urls": [
{
"format": "avif",
"url": "https://example.tiktokcdn.com/cover.avif"
},
{
"format": "jpeg",
"url": "https://example.tiktokcdn.com/cover.jpeg"
}
],
"create_time": 1789894800,
"content_type": 1,
"creator_id": "6687136935464616962",
"author_id": "7527168084127531016"
},
"metrics": {
"video_views": 14626546,
"engagement_rate": 0.0127,
"six_seconds_vtr": 0.1219
},
"author": {
"handle": "author_0",
"nickname": "Author 0",
"avatar_url": "https://example.tiktokcdn.com/avatar.jpg",
"bio": "author bio 0",
"follower_count": 760545,
"store_region": "JP",
"creator_type": 2
},
"comments": [
{
"comment_id": "7687541015293215508",
"text": "comment text 0",
"like_count": 16239,
"create_time": 1789895137,
"user_id": "7280034698049848328",
"user_name": "commenter_0",
"user_avatar_url": "https://example.tiktokcdn.com/cavatar.jpg"
}
],
"comment_keywords": [
{
"keyword": "keyword_0",
"mention_count": 24
}
],
"last_update_time": 1792233027
}
]
}
}Request schema
No body schema
Response schema
#/definitions/creativecenter.topContentResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | creativecenter.TopContentResp | No | ||||
| data.last_update_time | integer | No | UTC-midnight timestamp of the daily snapshot the names come from. | |||
| data.objects | array | No | ||||
| data.objects[].author | creativecenter.TopContentAuthor | No | ||||
| data.objects[].author.avatar_url | string | No | ||||
| data.objects[].author.bio | string | No | ||||
| data.objects[].author.creator_type | integer | No | ||||
| data.objects[].author.follower_count | integer | No | ||||
| data.objects[].author.handle | string | No | ||||
| data.objects[].author.nickname | string | No | ||||
| data.objects[].author.store_region | string | No | ||||
| data.objects[].comment_keywords | array | No | ||||
| data.objects[].comment_keywords[].keyword | string | No | ||||
| data.objects[].comment_keywords[].mention_count | integer | No | ||||
| data.objects[].comments | array | No | ||||
| data.objects[].comments[].comment_id | string | No | ||||
| data.objects[].comments[].create_time | integer | No | ||||
| data.objects[].comments[].like_count | integer | No | ||||
| data.objects[].comments[].text | string | No | ||||
| data.objects[].comments[].user_avatar_url | string | No | ||||
| data.objects[].comments[].user_id | string | No | ||||
| data.objects[].comments[].user_name | string | No | ||||
| data.objects[].item | creativecenter.TopContentItem | No | ||||
| data.objects[].item.author_id | string | No | ||||
| data.objects[].item.content_type | integer | No | ||||
| data.objects[].item.cover_url | string | No | ||||
| data.objects[].item.cover_urls | array | No | ||||
| data.objects[].item.cover_urls[].format | string | No | Image format, for example `jpeg` or `avif`. | |||
| data.objects[].item.cover_urls[].url | string | No | Absolute image URL. | |||
| data.objects[].item.create_time | integer | No | ||||
| data.objects[].item.creator_id | string | No | ||||
| data.objects[].item.item_id | string | No | ||||
| data.objects[].item.title | string | No | ||||
| data.objects[].item.video_url | string | No | ||||
| data.objects[].last_update_time | integer | No | ||||
| data.objects[].metrics | creativecenter.TopContentMetrics | No | ||||
| data.objects[].metrics.engagement_rate | number | No | ||||
| data.objects[].metrics.six_seconds_vtr | number | No | ||||
| data.objects[].metrics.video_views | integer | No | ||||
| data.objects[].name | string | No | Exact video title. This is the SEO page's URL key and rotates with the daily snapshot; it is not a stable identifier across days. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Invalid input | #/definitions/app.Response |
| 429 | Rate limit exceeded | #/definitions/app.Response |
| 500 | Internal server error | #/definitions/app.Response |
| 503 | Upstream failure | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tiktok/creative-center/top-content?include_comments=true" \
-H "x-api-key: $CRAWLORA_API_KEY"