TikTok API endpoint
Returns one page of the app's regional sound chart: `chart_info` (chart id and update time), `cover_image_url` and a ranked `music_list` whose rows are a `music_info` sound object plus a `trend` entry; page with the returned `cursor` while `has_more` is true. `chart_region` selects the regional chart and accepts only `AE`, `BR`, `CA`, `DE`, `EG`, `FR`, `JP`, `KR`, `LB`, `MX`, `NG`, `SA`, `TR`, `US` and `ZA` (any other value returns an invalid-parameters error; omitting it returns the default chart, which equals `US`). `AE`, `EG`, `LB` and `SA` share one chart, as do `NG` and `ZA`. This is distinct from `music/pick`, which returns the creation panel's pick list with banners.
/tiktok/mobile/music/chartThis is distinct from music/pick: that route returns the creation panel's pick list (with mc_list,
banner_list and extra_music_list), while this one returns the regional chart identity and per-row trend.
Query parameters:
chart_region: optional. Region of the chart; one of AE, BR, CA, DE, EG, FR, JP, KR, LB, MX,
NG, SA, TR, US, ZA (case-insensitive). Any other value is rejected with an invalid-parameters error.
Omitted returns the default chart, which is the US chart. AE, EG, LB and SA share one chart, and so do NG and
ZA.cursor: optional. Paging token from the previous response. Default: 0.count: optional. Rows per page, bounded at 50. Default: 10.Measured 2026-10-24:
count=5&cursor=0 -> 49,627 B, 5 rows, chart_info.id 7245341979050396417, cursor 5, has_more 1;
cursor=5 returns the next 5 rows and advances the cursor to 10.chart_region=AE&count=1 -> chart_info.id 7288947262288530178, a chart distinct from the default.GB) is answered with a single shared fallback chart, so it is
rejected here instead of returning a chart for the wrong region.Example request:
GET /api/v1/tiktok/mobile/music/chart?chart_region=US&count=10
Example response (truncated):
{
"code": 200,
"msg": "OK",
"data": {
"chart_info": {"id": 7245341979050396417, "update_time": 1792641600},
"cover_image_url": "https://...",
"music_list": [
{"music_info": {"id": 7613798254214187009, "title": "...", "author": "..."}, "trend": 3}
],
"cursor": 5,
"has_more": true,
"status_code": 0
}
}
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| chart_region | string | No | Region of the chart: AE, BR, CA, DE, EG, FR, JP, KR, LB, MX, NG, SA, TR, US or ZA; omit for the default chart (same as US) Allowed values: AE, BR, CA, DE, EG, FR, JP, KR, LB, MX, NG, SA, TR, US, ZA. | US | |
| cursor | integer | No | Paging token from the previous response | ||
| count | integer | No | Rows per page (max 50) |
curl -X GET "https://api.crawlora.net/api/v1/tiktok/mobile/music/chart?chart_region=AE&count=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"chart_info": {
"id": 7245341979050397000,
"update_time": 1792641600
},
"cover_image_url": "https://...",
"music_list": [
{
"music_info": {
"id": 7613798254214187000,
"title": "...",
"author": "..."
},
"trend": 3
}
],
"cursor": 5,
"has_more": true,
"status_code": 0
}
}Request schema
No body schema
Response schema
#/definitions/tiktokmobile.musicChartResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tiktokmobile.MusicChartResponse | No | ||||
| data.chart_info | unknown | No | ||||
| data.cover_image_url | string | No | ||||
| data.cursor | integer | No | ||||
| data.extra | unknown | No | ||||
| data.has_more | boolean | No | ||||
| data.log_pb | unknown | No | ||||
| data.msg | string | No | ||||
| data.music_list | array | No | ||||
| data.status_code | integer | No | ||||
| data.status_msg | string | 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/music/chart?chart_region=AE&count=10" \
-H "x-api-key: $CRAWLORA_API_KEY"