TikTok API endpoint
Lists the public playlists ("mixes") of one creator unmodified in `mix_list`: each row carries the playlist `mix_id` (the same id the web playlist URL uses), `name`, `mix_type`, `creator_name`, `statistic.total` and `last_add_video_timestamp`. Feed `mix_id` to the playlist detail endpoint. Requires one identity selector (`user_id` or `sec_user_id`).
/tiktok/mobile/playlist/listQuery parameters:
user_id: optional. The creator's numeric uid. Send this or sec_user_id; exactly one identity selector is
needed and the upstream accepts either alone.sec_user_id: optional. The creator's sec_user_id (the MS4wLjABAAAA... form).cursor: optional. Paging token from the previous response. Default: 0.Measured 2026-10-24 (aggr16-normal.tiktokv.us edge /
api16-normal-useast5.tiktokv.us origin), uid 107955 / sec_uid MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM:
5 playlists, 2.8 KB, has_more: false, cursor: 5; first rows Songs Of The Summer 2026
(mix_id 7681171537575824159, statistic.total 3), Behind The Breakthrough (7659874208872221471, 6) and
In The Mix (7516638364301265695, 24).
Example request:
GET /api/v1/tiktok/mobile/playlist/list?sec_user_id=MS4wLjABAAAAv7iSuuXDJGDvJkmH_vz1qkDZYo1apxgzaxdBSeIuPiM
Example response (truncated):
{
"code": 200,
"msg": "OK",
"data": {
"mix_list": [
{
"mix_id": "7681171537575824159",
"name": "Songs Of The Summer 2026",
"mix_type": 1,
"creator_name": "tiktok",
"statistic": {"total": 3},
"last_add_video_timestamp": 1788476740
}
],
"cursor": 5,
"has_more": false,
"total": 0,
"status_code": 0
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| user_id | string | No | Creator's numeric user id (one of user_id / sec_user_id is required) | 107955 | |
| sec_user_id | string | No | Creator's sec_user_id (one of user_id / sec_user_id is required) | ||
| cursor | integer | No | Paging token from the previous response |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/playlist/list" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"mix_list": [
{
"mix_id": "7681171537575824159",
"name": "Songs Of The Summer 2026",
"mix_type": 1,
"creator_name": "tiktok",
"statistic": {
"total": 3
},
"last_add_video_timestamp": 1788476740
}
],
"cursor": 5,
"has_more": false,
"total": 0,
"status_code": 0
}
}Request schema
No body schema
Response schema
#/definitions/tiktokmobile.playlistListResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktokmobile.PlaylistListResponse | No | ||||
| data.cursor | integer | No | ||||
| data.extra | unknown | No | ||||
| data.has_more | boolean | No | ||||
| data.log_pb | unknown | No | ||||
| data.mix_list | array | No | ||||
| data.mix_list[].author | unknown | No | ||||
| data.mix_list[].creator_name | string | No | ||||
| data.mix_list[].last_add_video_timestamp | integer | No | ||||
| data.mix_list[].mix_id | string | No | ||||
| data.mix_list[].mix_type | integer | No | ||||
| data.mix_list[].name | string | No | ||||
| data.mix_list[].share_info | unknown | No | ||||
| data.mix_list[].statistic | unknown | No | ||||
| data.mix_list[].status | unknown | No | ||||
| data.status_code | integer | No | ||||
| data.status_msg | string | No | ||||
| data.total | integer | No | ||||
| 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/mobile/playlist/list" \
-H "x-api-key: $CRAWLORA_API_KEY"