Endpoint Playground
Returns one page of an MV channel feed, the app's music-video ("MV") tab. The upstream is `/aweme/v1/mv/aweme/`; `mv_id` is a small numeric CHANNEL index, NOT a video id — measured ids 0-10 each returned a 15-video page of full aweme objects (1.05-1.24 MB), while 100 returned a valid empty page and a real aweme id returned an empty list. The server's page size is 15 and `count` was measured IGNORED (`count=5` and `count=10` both returned 15 items), so `count` is not exposed; page with `cursor`. The returned `cursor` is a reusable next-page token (measured page 1 `cursor: 18, has_more: 1`; `cursor=18` returned a fresh page with `cursor: 38, has_more: 1`). The envelope's `top_awemes` (pinned entries), `original_aweme_id`, `page_extra` and `extra`/`log_pb` are kept as measured. Measured 2026-10-22, A missing or non-numeric `mv_id` is a 400; an unknown numeric channel is a valid empty page.
curl 'https://api.crawlora.net/api/v1/tiktok/mobile/mv/videos?mv_id=1' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| mv_id | string | Yes | 1 | MV channel index (small integer; measured 0-10 populated, 100 empty) |
| cursor | integer | No | Next-page token from the previous response (0 = first page) |
{
"code": 200,
"msg": "OK",
"data": {
"mv_id": "1",
"aweme_list": [
{
"aweme_id": "7523859329968016647",
"desc": "",
"author": {
"unique_id": "..."
},
"statistics": {
"digg_count": 0,
"comment_count": 0,
"play_count": 0
},
"music": {
"title": "original sound - ..."
},
"video": {
"play_addr": {
"url_list": [
"..."
]
}
}
}
],
"item_count": 15,
"cursor": 18,
"has_more": true,
"top_awemes": [
{
"aweme_id": "7505576833954385158"
}
],
"page_extra": {
"pagination_list": null,
"downrank_list": null
},
"host": "aggr16-normal.tiktokv.us",
"fetched_at": "2026-10-22T05:52:11Z"
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.