TikTok API endpoint
Lists the videos posted under a TikTok hashtag, identified by the hashtag `id` from the hashtag detail endpoint. `cursor` defaults to 0. The response has `itemList`, `hasMore` and a `cursor`; pass that cursor back to fetch the next page.
/tiktok/hashtagsQuery parameters:
id: required. Hashtag id returned by the hashtag detail endpoint. Example: 3242.cursor: optional. Pagination cursor. Default: 0.Notable response behavior:
cursor value from a previous response to continue pagination.| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| AIGCDescription | 0 | |
| CategoryType | 30 | 101 to 120, median 111 |
| IsHDBitrate | 30 | true in 0 of 30 |
| ShowAIGC | 30 | true in 24 of 30 |
| author | 30 | |
| authorStats | 30 | |
| authorStatsV2 | 30 | |
| backendSourceEventTracking | 0 | |
| challenges | 29 | median 5 entries |
| collected | 30 | true in 0 of 30 |
| contents | 30 | median 1 entry |
| createTime | 30 | 1,637,636,090 to 1,791,807,991, median 1,639,523,603 |
| desc | 30 | median 102 characters |
| digged | 30 | true in 0 of 30 |
| duetDisplay | 30 | 0 |
| enterMdpPV | 16 | 1 to 4,295, median 19 |
| forFriend | 30 | true in 0 of 30 |
| id | 30 | |
| isAd | 30 | true in 2 of 30 |
| isProhibited | 30 | true in 0 of 30 |
| isReviewing | 30 | true in 0 of 30 |
| itemCommentStatus | 30 | 0 |
| item_control | 30 | |
| music | 30 | |
| officalItem | 30 | true in 0 of 30 |
| originalItem | 30 | true in 0 of 30 |
| penaltyContext | 30 | |
| privateItem | 30 | true in 0 of 30 |
| secret | 30 | true in 0 of 30 |
| shareEnabled | 30 | true in 30 of 30 |
| stats | 30 | |
| statsV2 | 30 | |
| stitchDisplay | 30 | 0 |
| textExtra | 29 | median 5 entries |
| textLanguage | 30 | |
| textTranslatable | 30 | true in 25 of 30 |
| video | 30 | |
| diversificationId | 22 | 1,007 to 10,075, median 10,040 |
| duetEnabled | 26 | true in 26 of 26 |
| playlistId | 6 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| id | string | Yes | Hashtag id returned by the hashtag detail endpoint | 3242 | |
| cursor | integer | No | Pagination cursor |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/hashtags?id=3242" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"cursor": "93",
"extra": {
"fatal_item_ids": [],
"logid": "20241211093132324B6C98847222021454",
"now": 1733909492000
},
"hasMore": true,
"itemList": [
{
"AIGCDescription": "",
"BAInfo": "",
"CategoryType": 120,
"adAuthorization": false,
"adLabelVersion": 0,
"aigcLabelType": 0
}
],
"log_pb": {
"impr_id": "20241211093132324B6C98847222021454"
},
"statusCode": 0
}
}Request schema
No body schema
Response schema
#/definitions/tiktok.challengeListResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktok.ChallengeListResp | No | ||||
| data.cursor | string | No | Cursor to pass in the next request to get the next page of videos. | |||
| 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.hasMore | boolean | No | Whether more videos remain after this page. | |||
| data.itemList | array | No | Videos posted under the hashtag, one entry per 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.statusCode | integer | No | TikTok status code for the request. `0` on a successful response. | |||
| data.status_code | integer | No | Second copy of the TikTok status code, sent as `status_code`. `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/hashtags?id=3242" \
-H "x-api-key: $CRAWLORA_API_KEY"