TikTok API endpoint
Returns TikTok's detail record for one video by video id. `itemInfo.itemStruct` holds the video's description, the author's profile and the author's statistics (such as followers, following and hearts) along with the rest of TikTok's video object; `shareMeta` holds the share title and description.
/tiktok/post/{id}Path parameters:
id: required. TikTok video id. Example: 7444278905264983342.| Field | In the sample | Value in the sample |
|---|---|---|
| extra.fatal_item_ids | Empty | |
| extra.logid | Has a value | |
| extra.now | Has a value | 1,791,911,830,000 |
| itemInfo | Empty | |
| log_pb.impr_id | Has a value | |
| shareMeta.desc | Empty | |
| shareMeta.title | Empty | |
| status_code | Has a value | |
| status_msg | Empty |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| id (path) | string | Yes | TikTok video id | 7444278905264983342 |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/post/7444278905264983342" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"extra": {
"fatal_item_ids": [],
"logid": "2024121113545594318E4BDA28F907033A",
"now": 1733925295000
},
"itemInfo": {
"itemStruct": {
"AIGCDescription": "",
"CategoryType": 118,
"author": {
"avatarLarger": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/fb1ed871dc01261013179da3fafcc1cd~c5_1080x1080.jpeg?lk3s=a5d48078&non...",
"avatarMedium": "https://p16-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/fb1ed871dc01261013179da3fafcc1cd~c5_720x720.jpeg?lk3s=a5d48078&nonce...",
"avatarThumb": "https://p19-pu-sign-useast8.tiktokcdn-us.com/tos-useast5-avt-0068-tx/fb1ed871dc01261013179da3fafcc1cd~c5_100x100.jpeg?lk3s=a5d48078&nonce...",
"commentSetting": 0,
"downloadSetting": 0,
"duetSetting": 0
},
"authorStats": {
"diggCount": 352,
"followerCount": 458800,
"followingCount": 1,
"friendCount": 0,
"heart": 800300,
"heartCount": 800300
},
"backendSourceEventTracking": "",
"collected": false
}
},
"log_pb": {
"impr_id": "2024121113545594318E4BDA28F907033A"
},
"shareMeta": {
"desc": "Spoiler: you don’t actually swallow eight spiders a year. 🕷️",
"title": "chatgpt on TikTok"
},
"status_code": 0,
"status_msg": ""
}
}Request schema
No body schema
Response schema
#/definitions/tiktok.postResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktok.VideoDetailResp | No | ||||
| data.extra | object | No | Response metadata from TikTok, such as the request log id and server time. | |||
| data.extra.fatal_item_ids | array | No | ||||
| data.extra.logid | string | No | ||||
| data.extra.now | integer | No | ||||
| data.itemInfo | unknown | No | Details of the video, as TikTok returns them. | |||
| data.log_pb | object | No | Request tracking information from TikTok, holding the `impr_id` impression id. | |||
| data.log_pb.impr_id | string | No | ||||
| data.shareMeta | object | No | Title and description TikTok uses when the video is shared. | |||
| data.shareMeta.desc | string | No | ||||
| data.shareMeta.title | string | No | ||||
| data.status_code | integer | No | TikTok status code for the request. `0` on a successful response. | |||
| data.status_msg | string | No | Status message that goes with the status code. | |||
| 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 |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tiktok/post/7444278905264983342" \
-H "x-api-key: $CRAWLORA_API_KEY"