DramaBox API endpoint
Returns one page of a DramaBox app theater channel: the channel, its titled shelves (each with styles and 10 to 20 titles), poster banners and search hot words. Each title carries its id, title, description, cover, website link, episode count, tags with tag ids, protagonist, play count, library flag and listing times. Channel values are the lowercase names from dramabox-channels. An empty feed is a valid answer. Only public catalog metadata and poster images are read; no playable video is returned.
/dramabox/theaterThis endpoint reads DramaBox's Android app API rather than its website pages, device-free. Only public catalog metadata and poster images are read; no playable video is returned.
Query parameters:
channel (required): popular (Popular, 155), new (New, 41), rankings (Rankings, 89),
categories (Categories, 141), anime (Anime, 290), live-action (Live-Action, 314),
vip (VIP, 291) or original (Original+, 13). The ids come from dramabox-channels.page: page number, 1 to 1000. Defaults to 1.limit: titles per paged block, 1 to 20. Defaults to 10.Notable response behavior:
sections keeps the app's own order: the channel's curated columns first (each with the app's
style hint such as ALGORITHM_STYLE, BIG_PIC_LATERAL, RESERVE_BOOK or VERTICAL), then the
recommendation block (recommendList, titled with recommendListTitle), then the new-titles
block (New). Empty blocks are omitted. A column without a server-supplied title is also
omitted, so title is always meaningful when present.has_more reflects the recommendation block's paging (pages > current), matching the app.banners only contains plain jpg/jpeg/png/webp poster images; any other banner slot value is
dropped. title_id is the title id the banner links to.hot_words is present only when the answer carries the app's search hot words (usually the
home-style answer); a channel feed normally has none.sections list rather than an error.Example response (shelves and titles shortened):
{
"code": 200,
"msg": "OK",
"data": {
"channel": { "id": 13, "name": "Original+" },
"page": 1,
"limit": 10,
"has_more": false,
"sections": [
{
"title": "Exclusive Originals",
"style": "BIG_PIC_LATERAL",
"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, the husband of her closest friend Mia.",
"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"],
"tag_refs": [
{ "id": 1379, "name": "Forbidden Love" },
{ "id": 1395, "name": "Hidden Identity" },
{ "id": 1362, "name": "Billionaire" }
],
"in_library": false,
"shelf_time": "2026-09-27 16:42:18",
"shelf_time_ms": 1790042404000
}
]
},
{
"title": "You Might Like",
"titles": [
{
"id": "42000031217",
"title": "My Lucky Star Made Me a Billionaire",
"description": "Grace gives birth on the same day as her best friend—and discovers both babies have been switched.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031217/42000031217.jpg?t=1792568760555",
"url": "https://www.dramabox.com/drama/42000031217",
"episodes": 44,
"tags": ["Revenge", "Genius Babies", "Comeback Story"],
"in_library": false,
"shelf_time": "2026-10-25 10:00:01",
"shelf_time_ms": 1792893601000
}
]
},
{
"title": "New",
"titles": [
{
"id": "42000031535",
"title": "Seducing My Quarterback Stepbrother",
"description": "Adrian Sterling has never hated anyone more than Justin Brooks, the rival quarterback.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031535/42000031535.jpg?t=1792664899715",
"url": "https://www.dramabox.com/drama/42000031535",
"episodes": 51,
"tags": ["BL", "Forbidden Love", "Athlete"],
"in_library": false,
"shelf_time": "2026-10-26 10:00:02",
"shelf_time_ms": 1792980002000
}
]
}
],
"banners": [
{
"title": "I Never Unwanted You",
"image_url": "https://nres.dramaboxdb.com/res/columnItem-G4XlANKzn0.jpg",
"title_id": "42000031356"
},
{
"title": "A Gift of Love, A Lifetime Together",
"image_url": "https://nres.dramaboxdb.com/res/columnItem-raQR6QyJZU.jpg",
"title_id": "42000027558"
}
]
}
}
| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| title | 3 | “You Might Like” and 1 other value |
| style | 2 | “ALGORITHM_STYLE” and 1 other value |
| titles | 3 | median 9 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| channel | string | Yes | Theater channel: popular, new, rankings, categories, anime, live-action, vip or original Allowed values: popular, new, rankings, categories, anime, live-action, vip, original. | popular | |
| page | integer | No | 1 | Page number, 1 to 1000; defaults to 1 | 1 |
| limit | integer | No | 10 | Titles per paged block, 1 to 20; defaults to 10 | 10 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/dramabox/theater?channel=popular&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"channel": {
"id": 13,
"name": "Original+"
},
"page": 1,
"limit": 10,
"has_more": false,
"sections": [
{
"title": "Exclusive Originals",
"style": "BIG_PIC_LATERAL",
"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, the husband of her closest friend Mia.",
"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"
],
"tag_refs": [
{
"id": 1379,
"name": "Forbidden Love"
},
{
"id": 1395,
"name": "Hidden Identity"
},
{
"id": 1362,
"name": "Billionaire"
}
],
"in_library": false,
"shelf_time": "2026-09-27 16:42:18",
"shelf_time_ms": 1790042404000
}
]
},
{
"title": "You Might Like",
"titles": [
{
"id": "42000031217",
"title": "My Lucky Star Made Me a Billionaire",
"description": "Grace gives birth on the same day as her best friend—and discovers both babies have been switched.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031217/42000031217.jpg?t=1792568760555",
"url": "https://www.dramabox.com/drama/42000031217",
"episodes": 44,
"tags": [
"Revenge",
"Genius Babies",
"Comeback Story"
],
"in_library": false,
"shelf_time": "2026-10-25 10:00:01",
"shelf_time_ms": 1792893601000
}
]
},
{
"title": "New",
"titles": [
{
"id": "42000031535",
"title": "Seducing My Quarterback Stepbrother",
"description": "Adrian Sterling has never hated anyone more than Justin Brooks, the rival quarterback.",
"cover_url": "https://hwztchapter.dramaboxdb.com/data/cppartner/4x2/42x0/420x0/42000031535/42000031535.jpg?t=1792664899715",
"url": "https://www.dramabox.com/drama/42000031535",
"episodes": 51,
"tags": [
"BL",
"Forbidden Love",
"Athlete"
],
"in_library": false,
"shelf_time": "2026-10-26 10:00:02",
"shelf_time_ms": 1792980002000
}
]
}
],
"banners": [
{
"title": "I Never Unwanted You",
"image_url": "https://nres.dramaboxdb.com/res/columnItem-G4XlANKzn0.jpg",
"title_id": "42000031356"
},
{
"title": "A Gift of Love, A Lifetime Together",
"image_url": "https://nres.dramaboxdb.com/res/columnItem-raQR6QyJZU.jpg",
"title_id": "42000027558"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/dramabox.theaterResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | dramabox.TheaterResponse | No | ||||
| data.banners | array | No | ||||
| data.banners[].image_url | string | No | ||||
| data.banners[].title | string | No | ||||
| data.banners[].title_id | string | No | ||||
| data.channel | dramabox.Channel | No | ||||
| data.channel.id | integer | No | ||||
| data.channel.name | string | No | ||||
| data.has_more | boolean | No | HasMore reports whether the recommendation block has another page. | |||
| data.hot_words | array | No | ||||
| data.limit | integer | No | ||||
| data.page | integer | No | ||||
| data.sections | array | No | ||||
| data.sections[].style | string | No | ||||
| data.sections[].title | string | No | ||||
| data.sections[].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/theater?channel=popular&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"