# DramaBox Episodes Scraper - Chapter Lists & Video URLs (`spider_studio/dramabox-drama-chapters`) Actor

Scrape DramaBox episode lists and free episode video URLs in bulk. Get directly playable, unencrypted MP4 links when available, with no extra video decryption needed. Paid episodes have no URL. Links expire; rerun to refresh. Export chapter data to JSON, CSV or Excel.

- **URL**: https://apify.com/spider\_studio/dramabox-drama-chapters.md
- **Developed by:** [Tarique](https://apify.com/spider_studio) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 free episode video urls

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does the DramaBox Episodes Scraper do?

**DramaBox Episodes Scraper** collects episode lists, chapter details and **free episode video URLs** from [DramaBox](https://www.dramabox.com). Get **directly playable, unencrypted MP4 links** when available, with no additional video decryption needed for those links. Enter a list of Book IDs to get one structured result per drama, ready for export or use through the Apify API.

Each result includes the drama title, episode count, free episode count and chapter list. **Video URLs are provided only for episodes available for free. Paid or locked episodes have a `null` URL**, while their chapter details remain in the list. Free episodes may also have a null URL when no playback link is available.

**Playback URLs have a limited validity period.** Use them before they expire and run the Actor again to retrieve current links. The Actor does not extend a link's validity or make it permanent.

### Why scrape DramaBox episode lists?

- Build or refresh a short-drama catalog with episode counts and chapter identifiers.
- Compare free episode availability across multiple DramaBox titles.
- Research episode order and track changes to a drama's chapter list.
- Collect free episode playback links for previews and your media research workflow.
- Play available unencrypted MP4 links directly in a compatible video player, without an additional decryption step.
- Schedule recurring collections, monitor runs and connect results to other tools with Apify integrations.

### What DramaBox data can you extract?

| Field | Type | Description |
| --- | --- | --- |
| `book_id` | String | Requested DramaBox Book ID |
| `book_name` | String | Drama title, when available |
| `chapter_count` | Number | Reported total episode count |
| `free_chapter_count` | Number | Number of episodes available for free in the returned list |
| `returned_url_count` | Number | Number of free episode video URLs returned in this drama's result |
| `url_limit_reached` | Boolean | Whether some video URLs were withheld to respect the run's spending limit |
| `chapters` | Array | Chapter IDs, episode order, names and available free episode playback links |
| `chapters[].unlock` | Boolean | Whether the episode is available for free |
| `chapters[].url` | String or null | Temporary free episode playback URL; null for paid, locked or unavailable episodes |
| `chapters[].encrypted` | Boolean or null | False identifies a non-encrypted source; true or null does not confirm direct playback |
| `chapters[].quality` | Number or null | Video resolution when available |
| `success` / `error` | Boolean / String or null | Collection outcome and error details |

### How to scrape DramaBox episodes

1. Open the **Input** tab and replace the prefilled Book ID with the DramaBox titles you want to collect.
2. Enter one Book ID per list item. To collect one drama, keep one item in the list.
3. Click **Start** and wait for the run to finish.
4. Open **Output** to inspect the episode lists and export the dataset.
5. Use the available free episode links before they expire. For direct playback, choose an unencrypted MP4 link and open it in a compatible video player.

### Input

See the Input tab for full configuration options. **Book Ids** is the only input field. It accepts 1–1,000 IDs, each written as a string of 1–20 digits. Duplicate IDs are processed once within the same run.

```json
{
  "book_ids": ["42000004343"]
}
```

You can obtain Book IDs from DramaBox title pages or from the [DramaBox Search Scraper](https://apify.com/spider_studio/dramabox-drama-search). Use the Actor's **API** tab to submit the same input programmatically.

### Output

Each successful dataset row contains one drama and its episode list. **Only free episodes can include video URLs. Each returned video URL is billed separately**, even when multiple URLs are nested in one dataset row. Paid or locked episodes remain in the directory with a null URL. Failed IDs produce an error row while other IDs continue processing. The run summary reports successful drama records, returned video URLs, charged video URLs, failed requests and whether the spending limit was reached.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. JSON preserves the nested chapter list. The following example illustrates the output structure; counts and links vary by drama.

```json
{
  "book_id": "42000004343",
  "book_name": "Example drama",
  "chapter_count": 2,
  "free_chapter_count": 1,
  "returned_url_count": 1,
  "url_limit_reached": false,
  "chapters": [
    {
      "chapter_id": "700278553",
      "chapter_index": 0,
      "chapter_name": "Episode 1",
      "unlock": true,
      "url": "https://video.example/episode-1.mp4",
      "encrypted": false,
      "quality": 720
    },
    {
      "chapter_id": "700278554",
      "chapter_index": 1,
      "chapter_name": "Episode 2",
      "unlock": false,
      "url": null,
      "encrypted": null,
      "quality": null
    }
  ],
  "success": true,
  "error": null
}
```

### How much does the DramaBox Episodes Scraper cost?

You pay **once per successfully collected free episode video URL**. A drama with **10 returned video URLs triggers 10 charge events**, even though its episode list is saved in a single dataset row. The charge event is `free-episode-video-url`.

| Apify plan | Price per returned video URL | Price per 1,000 video URLs |
| --- | --- | --- |
| Free | $0.003 | $3.00 |
| Paid | $0.002 | $2.00 |

Failed requests, empty episode lists, chapters without a URL and paid or locked episodes have no video URL charge. A collected directory with zero video URLs has no video URL charge. Duplicate Book IDs are processed once within a run, so their URLs are not billed again. Platform usage is included in the event prices.

Apify also applies its [default Actor Start fee](https://docs.apify.com/actors/publishing/monetize/pay-per-event#use-apify-actor-start): **$0.00005** for a run with up to 1 GB of memory, with one additional start event per extra GB. The start fee applies even if no drama is collected successfully.

For example, one drama with 10 returned video URLs costs **$0.03005 on the Free plan** or **$0.02005 on a paid plan**, using up to 1 GB of memory. Set a maximum charge for a run to control your budget. If the remaining budget covers only some of a drama's URLs, only those URLs are returned and charged; other chapters retain their details with a null URL and `url_limit_reached` is true. Collection then stops. Each new run is billed independently.

### Related DramaBox Actors

Use these Actors for other parts of your DramaBox workflow:

| Actor | What it does |
| --- | --- |
| [DramaBox Search Scraper](https://apify.com/spider_studio/dramabox-drama-search) | Find dramas by keyword and collect IDs, titles and listing metadata. |
| [DramaBox Rankings Scraper](https://apify.com/spider_studio/dramabox-drama-rank) | Discover titles from the Most Watched, Most Searched and New Dramas rankings. |
| [DramaBox Actor Profile Scraper](https://apify.com/spider_studio/dramabox-performer-detail) | Collect performer profiles, biographies and drama credits. |
| [DramaBox Drama Details Scraper](https://apify.com/spider_studio/dramabox-drama-detail) | Retrieve drama metadata, cast information and episode indexes by Book ID. |
| [DramaBox Video Downloader](https://apify.com/spider_studio/dramabox-chapter-download) | Download available free episode videos and save MP4 files with download links. |

### Frequently asked questions

#### Does this Actor return URLs for paid DramaBox episodes?

**Only free episodes receive playback URLs, when available.** Paid or locked episodes have a null URL, while their chapter details remain in the returned list. Only returned video URLs are billed; chapters with a null URL have no video URL charge.

#### Do DramaBox video links need decryption before direct playback?

**Available unencrypted MP4 links need no additional video decryption.** Open the complete URL in a compatible video player while the link is valid. Look for `encrypted: false` to identify an unencrypted source. The Actor retrieves available links; it does not decrypt encrypted video files. Links marked true or unknown are not confirmed as directly playable.

#### Does it download videos or unlock paid episodes?

This Actor returns chapter information and available playback links. It does not download video files or unlock paid episodes.

#### How long are DramaBox video URLs valid?

**Every playback URL has a limited validity period set by the video provider.** There is no fixed lifetime guaranteed for all titles or links. Use the URL promptly and keep the complete address, including its query parameters. Removing part of the URL can prevent playback even before it expires. Run the Actor again to retrieve current links when old URLs stop working.

#### Are failed Book IDs charged?

Failed IDs, empty episode lists and results with no video URLs have no video URL charge. The Actor Start fee still applies. Check the error row for details, confirm the Book ID and retry if needed.

#### Where can I report a problem?

Use the **Issues** tab for unavailable titles, unexpected results or feature requests. Include the affected Book ID and run link so the issue can be investigated.

# Actor input Schema

## `book_ids` (type: `array`):

DramaBox book IDs to collect. Enter one ID per item; duplicate IDs are processed once.

## Actor input object example

```json
{
  "book_ids": [
    "42000004343"
  ]
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "book_ids": [
        "42000004343"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider_studio/dramabox-drama-chapters").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "book_ids": ["42000004343"] }

# Run the Actor and wait for it to finish
run = client.actor("spider_studio/dramabox-drama-chapters").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "book_ids": [
    "42000004343"
  ]
}' |
apify call spider_studio/dramabox-drama-chapters --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,spider_studio/dramabox-drama-chapters"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BIZdYSrbXzWiivgTn/builds/9rJegzS1zcllKagKN/openapi.json
