DramaBox API endpoint
Returns one page of 20 DramaBox short dramas from the app's category feed, optionally filtered by values from dramabox-categories: language, production type, dub mode, either genre row and sort order. Filters are ANDed; an omitted filter means all. Each title carries its id, title, description, cover, website link, episode count, tags with tag ids, protagonist, play count, library flag and listing times. Only public catalog metadata is read; no playable video is returned.
/dramabox/category-booksThis endpoint reads DramaBox's Android app API rather than its website pages, device-free. Only public catalog metadata is read; no playable video is returned.
Query parameters (all optional):
language: one of 美国 (Local), 中国 (Chinese), 韩国 (Korean), 日本 (Japanese),
西语国家 (Spanish), 泰国,菲律宾,印度尼西亚,德国,葡语国家,阿拉伯国家 (Others).production: 3 (AI Drama), 1 (Live-Action) or 2 (Anime).dub: 1 (Dubbed) or 0 (Subtitles Only).genre: 1357 (Romance), 1361 (Strong Heroine) or 1323 (Powerful Male Lead).genre_2: 1363,1659 (Werewolf), 1338,1395 (Hidden Identity), 1325,1364 (Mafia), 1359 (BL),
10070,10080 (Dragon), 1655,1438 (Young Adult), 1320,1354 (Sci-Fi), 1324,1362 (Billionaire),
1662,1379 (Forbidden Love), 1394,1337 (Revenge), 1392 (Second Chance), 1343,1403
(Mistaken Identity), 1658,1654 (All-Too-Late), 1423,1393 (Love After Marriage), 1348,1408
(Family Bonds), 1380,1413 (Love Triangle), 1680,1401 (Winning Her Back), 1350,1411
(Family Intrigue).sort: 1 (Trending), 2 (Latest) or 3 (Unwatched).page: page number, 1 to 1000. Defaults to 1.limit: titles per page, 1 to 50. Defaults to 20.Values containing commas are a single value with several tag ids; pass them verbatim (URL-encoded) rather than splitting them.
Notable response behavior:
has_more is the app feed's own "more pages" flag, not a page-count estimate.titles list is a valid page: a filter value combination with no matches is a normal
200, and so is a page past the end.tag_refs pairs each tag name with its id; pass the id to dramabox-tag.play_count is only present when the app reports a plain number; the app's display strings such
as 41.8M are not converted into a fabricated count.Example response (lists shortened):
{
"code": 200,
"msg": "OK",
"data": {
"page": 1,
"limit": 20,
"has_more": true,
"titles": [
{
"id": "42000031027",
"title": "Backseat Swap: Trapped with His best Friend",
"description": "Every bump in the road pulls Annie closer to Elias—her husband Cain's best friend—and further from the marriage she is trying to save.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031027/42000031027.jpg?t=1792641695686",
"url": "https://www.dramabox.com/drama/42000031027",
"episodes": 50,
"tags": [
"Steamy",
"Forbidden Love",
"Love Triangle"
],
"tag_refs": [
{ "id": 10047, "name": "Steamy" },
{ "id": 1379, "name": "Forbidden Love" },
{ "id": 1380, "name": "Love Triangle" }
],
"in_library": false,
"shelf_time": "2026-10-20 11:00:00",
"shelf_time_ms": 1792465200000
}
]
}
}
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| title | 20 | “Deadliest Prison: The Female Warden Is My Plaything” and 19 other values |
| description | 20 | median 389 characters |
| cover_url | 20 | hwztchapter.dramaboxdb.com |
| url | 20 | dramabox.com |
| episodes | 20 | 30 to 60, median 50 |
| tags | 20 | median 6 entries |
| tag_refs | 20 | median 6 entries |
| in_library | 20 | true in 0 of 20 |
| shelf_time | 20 | 2026-07-22 to 2026-10-20 |
| shelf_time_ms | 20 | 2026-07-22 to 2026-10-20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| language | string | No | Language/origin value from dramabox-categories' language group, e.g. 美国 (Local) or 中国 (Chinese) | 美国 | |
| production | string | No | Production-type value from dramabox-categories' production group: 3 (AI Drama), 1 (Live-Action), 2 (Anime) Allowed values: 3, 1, 2. | 1 | |
| dub | string | No | Dub-mode value from dramabox-categories' dub group: 1 (Dubbed), 0 (Subtitles Only) Allowed values: 1, 0. | 1 | |
| genre | string | No | Genre value from dramabox-categories' genre_1 group, e.g. 1357 (Romance) or 1361 (Strong Heroine) | 1357 | |
| genre_2 | string | No | Genre value from dramabox-categories' genre_2 group, e.g. 1392 (Second Chance) or 1359 (BL); multi-tag values such as 1324,1362 are one value | 1392 | |
| sort | string | No | Sort value from dramabox-categories' sort group: 1 (Trending), 2 (Latest), 3 (Unwatched) Allowed values: 1, 2, 3. | 1 | |
| page | integer | No | 1 | Page number, 1 to 1000; defaults to 1 | 1 |
| limit | integer | No | 20 | Titles per page, 1 to 50; defaults to 20 | 20 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dramabox/category-books?language=en&production=3&dub=1&sort=1&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"page": 1,
"limit": 20,
"has_more": true,
"titles": [
{
"id": "42000031027",
"title": "Backseat Swap: Trapped with His best Friend",
"description": "Every bump in the road pulls Annie closer to Elias—her husband Cain's best friend—and further from the marriage she is trying to save.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031027/42000031027.jpg?t=1792641695686",
"url": "https://www.dramabox.com/drama/42000031027",
"episodes": 50,
"tags": [
"Steamy",
"Forbidden Love",
"Love Triangle"
],
"tag_refs": [
{
"id": 10047,
"name": "Steamy"
},
{
"id": 1379,
"name": "Forbidden Love"
},
{
"id": 1380,
"name": "Love Triangle"
}
],
"in_library": false,
"shelf_time": "2026-10-20 11:00:00",
"shelf_time_ms": 1792465200000
}
]
}
}Request schema
No body schema
Response schema
#/definitions/dramabox.categoryBooksResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | dramabox.CategoryBooksResponse | No | ||||
| data.has_more | boolean | No | ||||
| data.limit | integer | No | ||||
| data.page | integer | No | ||||
| data.titles | array | No | AppTitle record, 15 fields: cover_url, description, episodes, id, in_library, play_count, protagonist, shelf_time, shelf_time_ms, tag_refs, tags, title and 1 more. Described under DramaBox Tag API. | |||
| 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/category-books?language=en&production=3&dub=1&sort=1&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"