DramaBox API endpoint
Returns one DramaBox ranking list from the DramaBox Android app API: the available tabs (Most Trending, Top Searched, New Releases) and 20 ranked titles, each with its id, title, description, cover, website link, episode count, tags, protagonist, rank position, hot metric, library flag and listing times. Pass a tab's type as rank_type to read that tab. Only public catalog metadata is read; no playable video is returned.
/dramabox/rankReturns one DramaBox ranking list: the ranking tabs and 20 ranked short dramas.
This endpoint reads DramaBox's Android app API rather than its website pages. It needs no device, emulator or app at request time: the service reproduces the app's request signature and state header from public app material (the app's static signing key is a committed public constant, like the ReelShort signing keys) and keeps the anonymous guest session the app uses for catalogue calls internally. Only public catalog metadata is read, and no playable video is ever returned.
Query parameters:
rank_type: optional ranking tab: 1 (Most Trending), 2 (Top Searched) or 3 (New Releases).
Omit it for the default tab, which is what the app shows first. Any other value is rejected with
400; the valid tabs are also listed in every response's tabs.Notable response behavior:
tabs lists the ranking tabs with the type to pass back as rank_type and the app's display
name.titles holds the ranking list, fixed at 20 titles upstream. position is the title's ordinal in
the ranking (1-based, taken from the app's own rankVo.sort), and rank carries that object's
hot_code and type.episodes is the total chapter count, not a number of free episodes.shelf_time is the app's listing time as printed; shelf_time_ms is the same instant in Unix
milliseconds.in_library is always false for this shared guest session, because nobody's library is being
read.Example response (long values and lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"rank_type": 1,
"tabs": [
{
"type": 1,
"name": "Most Trending"
},
{
"type": 2,
"name": "Top Searched"
},
{
"type": 3,
"name": "New Releases"
}
],
"titles": [
{
"id": "42000028173",
"title": "Love Is A Dangerous Game",
"description": "Olivia is dragged by her husband Ryan to a couples-swapping getaway—only to be paired with Jake…",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000028173/42000028173.jpg?t=1790565765766",
"url": "https://www.dramabox.com/drama/42000028173",
"episodes": 43,
"tags": [
"Forbidden Love",
"Hidden Identity",
"Billionaire"
],
"protagonist": "Damien, Olivia",
"position": 1,
"in_library": false,
"data_from": "大数据",
"shelf_time": "2026-09-27 16:42:18",
"shelf_time_ms": 1790042404000,
"rank": {
"type": 1,
"hot_code": "1.6M",
"sort": 1
}
},
{
"id": "42000021382",
"title": "Deny Me, Dragon King",
"description": "Human Lyra stumbles on Dragon King Kael and shares a passionate night…",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000021382/42000021382.jpg?t=1790565000000",
"url": "https://www.dramabox.com/drama/42000021382",
"episodes": 50,
"tags": [
"Single Mom",
"Secret Baby"
],
"protagonist": "Kael, Lyra",
"position": 2,
"in_library": false,
"data_from": "编辑精选",
"shelf_time": "2026-09-27 16:42:19",
"shelf_time_ms": 1790042405000,
"rank": {
"type": 1,
"hot_code": "1M",
"sort": 2
}
}
]
}
}
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| title | 20 | “Falling for the Prince at Dark Arts Academy” and 19 other values |
| description | 20 | median 392 characters |
| cover_url | 20 | hwztchapter.dramaboxdb.com |
| url | 20 | dramabox.com |
| episodes | 20 | 30 to 58, median 50 |
| tags | 20 | median 6 entries |
| protagonist | 20 | “Damien Dalca, Margo Santiago” and 19 other values |
| position | 20 | 1 to 20, median 10 |
| in_library | 20 | true in 0 of 20 |
| data_from | 20 | 大数据 in all 20 |
| shelf_time | 20 | 2026-06-25 to 2026-10-20 |
| shelf_time_ms | 20 | 2026-06-25 to 2026-10-20 |
| rank | 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| rank_type | integer | No | Ranking tab: 1 (Most Trending), 2 (Top Searched), 3 (New Releases); omit for the default tab Allowed values: 1, 2, 3. | 2 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dramabox/rank?rank_type=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"rank_type": 1,
"tabs": [
{
"type": 1,
"name": "Most Trending"
},
{
"type": 2,
"name": "Top Searched"
},
{
"type": 3,
"name": "New Releases"
}
],
"titles": [
{
"id": "42000028173",
"title": "Love Is A Dangerous Game",
"description": "Olivia is dragged by her husband Ryan to a couples-swapping getaway—only to be paired with Jake…",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000028173/42000028173.jpg?t=1790565765766",
"url": "https://www.dramabox.com/drama/42000028173",
"episodes": 43,
"tags": [
"Forbidden Love",
"Hidden Identity",
"Billionaire"
],
"protagonist": "Damien, Olivia",
"position": 1,
"in_library": false,
"data_from": "大数据",
"shelf_time": "2026-09-27 16:42:18",
"shelf_time_ms": 1790042404000,
"rank": {
"type": 1,
"hot_code": "1.6M",
"sort": 1
}
},
{
"id": "42000021382",
"title": "Deny Me, Dragon King",
"description": "Human Lyra stumbles on Dragon King Kael and shares a passionate night…",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000021382/42000021382.jpg?t=1790565000000",
"url": "https://www.dramabox.com/drama/42000021382",
"episodes": 50,
"tags": [
"Single Mom",
"Secret Baby"
],
"protagonist": "Kael, Lyra",
"position": 2,
"in_library": false,
"data_from": "编辑精选",
"shelf_time": "2026-09-27 16:42:19",
"shelf_time_ms": 1790042405000,
"rank": {
"type": 1,
"hot_code": "1M",
"sort": 2
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/dramabox.rankResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | dramabox.RankResponse | No | ||||
| data.rank_type | integer | No | RankType echoes the requested tab; 0 means the default tab was used. | |||
| data.tabs | array | No | Tabs are the ranking tabs the app API offers; pass a tab's type as rank_type to read that list. | |||
| data.tabs[].name | string | No | ||||
| data.tabs[].type | integer | No | Type is the value to pass as rank_type. | |||
| data.titles | array | No | Titles holds the ranking list (fixed at 20 titles upstream). | |||
| data.titles[].cover_url | string | No | ||||
| data.titles[].data_from | string | No | DataFrom is the app's recommendation-source label. | |||
| data.titles[].description | string | No | ||||
| data.titles[].episodes | integer | No | ||||
| data.titles[].id | string | No | ||||
| data.titles[].in_library | boolean | No | InLibrary reports whether the title is in the caller's library, which for a guest session is always false. | |||
| data.titles[].position | integer | No | Position is the title's ordinal in the ranking (1-based). | |||
| data.titles[].protagonist | string | No | Protagonist lists the cast names as the app prints them. | |||
| data.titles[].rank | dramabox.RankMeta | No | ||||
| data.titles[].rank.hot_code | string | No | ||||
| data.titles[].rank.sort | integer | No | ||||
| data.titles[].rank.type | integer | No | ||||
| data.titles[].shelf_time | string | No | ShelfTime is the app's listing time as printed ("2026-09-27 16:42:18"). | |||
| data.titles[].shelf_time_ms | integer | No | ShelfTimeMS is the same listing time as Unix milliseconds. | |||
| data.titles[].tags | array | No | ||||
| data.titles[].title | string | No | ||||
| data.titles[].url | string | No | URL is the public DramaBox website page for the title. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/dramabox/rank?rank_type=1" \
-H "x-api-key: $CRAWLORA_API_KEY"