# DramaBox Search Scraper - Short Drama Metadata (`spider_studio/dramabox-drama-search`) Actor

Search DramaBox short dramas by multiple keywords and extract titles, IDs, descriptions, covers, episode counts and genre tags. Save each result as a separate row, export CSV, Excel or JSON, and automate drama discovery with Apify API access and scheduled runs.

- **URL**: https://apify.com/spider\_studio/dramabox-drama-search.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 successful search results

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 Search Scraper do?

**DramaBox Search Scraper** searches [DramaBox](https://www.dramabox.com) for short dramas using a list of keywords and extracts **drama IDs, titles, descriptions, cover image URLs, episode counts and genre tags**. Each matching drama is saved as a separate dataset row, ready for CSV or Excel export and JSON processing.

Enter keywords such as `revenge` and `romance`, choose how many pages to collect, and start a run. You can use the Actor in Apify Console or through the Apify API, schedule recurring searches, monitor runs and connect the results to other tools.

### Why scrape DramaBox search results?

Use keyword searches to build a focused short drama dataset without manually copying titles and metadata.

- **Drama discovery:** Find titles matching themes, story terms or names returned by DramaBox search.
- **Catalog research:** Collect identifiers, descriptions, episode counts and tags for filtering and comparison.
- **Recurring research:** Schedule the same keyword list to collect fresh search results over time.
- **Data workflows:** Export individual drama rows to spreadsheets, databases or downstream Actors.

The keyword list supports up to 1,000 entries per run. Repeated keywords are removed before requests begin, and each result retains its source keyword and page number.

### How to scrape DramaBox by keyword

1. Open the **Input** tab and enter one or more search terms in **Keywords**. The prefilled list contains `revenge` and `romance`.
2. Set **Max Pages** to the maximum number of pages to collect for each keyword. Start with the prefilled value of `1`.
3. Click **Start** and follow the run status and logs.
4. Open the **Dataset** to view one row per matching drama. Download the results as CSV, Excel or JSON, or retrieve them through the API.

### DramaBox scraper input

See the Input tab for the full configuration options. The Actor accepts a `keywords` list and an optional `max_pages` value.

| Parameter | Required | Prefill | Description |
| --- | --- | --- | --- |
| `keywords` | Yes | `["revenge", "romance"]` | List of 1–1,000 search terms. Each term must contain 1–100 characters after trimming whitespace. Exact duplicates are removed. |
| `max_pages` | No | `1` | Maximum pages per keyword, from 1 to 1,000. Defaults to 1. |

```json
{
  "keywords": ["revenge", "romance"],
  "max_pages": 1
}
```

For a single search, supply a one-element list such as `{"keywords": ["revenge"]}`. Pagination starts at page 1 and requests 20 results per page using the default DramaBox search ordering. A short or empty page stops pagination before `max_pages` is reached.

### DramaBox search output and exports

**Each matching drama becomes its own dataset record.** Title metadata appears at the top level alongside the search keyword, page number and request status, so you can filter and export the results directly.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel. The following example illustrates two separate result rows; titles and metadata are sample values.

```json
[
  {
    "keyword": "revenge",
    "page": 1,
    "is_more": 1,
    "book_id": "42000004343",
    "book_name": "Example revenge drama",
    "introduction": "An illustrative drama description.",
    "chapter_count": 50,
    "tags": ["Revenge"],
    "success": true,
    "error": null
  },
  {
    "keyword": "romance",
    "page": 1,
    "is_more": 1,
    "book_id": "42000004344",
    "book_name": "Example romance drama",
    "introduction": "Another illustrative drama description.",
    "chapter_count": 60,
    "tags": ["Romance"],
    "success": true,
    "error": null
  }
]
```

### What DramaBox data can you extract?

Fields depend on the metadata returned by DramaBox. Unavailable values can be `null` or empty.

| Field | Meaning |
| --- | --- |
| `book_id` | Drama identifier for joining results or requesting more details |
| `book_name` | Drama title |
| `introduction` | Drama description or synopsis |
| `cover` | Cover image URL |
| `chapter_count` | Number of episodes or chapters reported by the listing |
| `tags` | Genre or theme tags returned by DramaBox |
| `play_count` / `in_library_count` | Listing engagement counts, when available |
| `author` / `protagonist` / `performer_ids` / `rank` | Additional listing metadata, when available |
| `keyword` / `page` / `is_more` | Source search term, page number and upstream pagination flag |
| `success` / `error` | Request outcome and a sanitized error message |

Empty search pages add no dataset rows. A failed page adds one error record, while results already saved and other keywords remain available. The `OUTPUT` summary reports the requested keyword count, saved row count, successful result count, charged result count, failed keyword request count and whether the spending limit was reached. Error records are included in the saved row count and excluded from the successful and charged result counts.

### How much does it cost to scrape DramaBox?

Free-plan users pay **$3 per 1,000 successfully saved drama results** ($0.003 each). All paid-plan users pay **$2 per 1,000** ($0.002 each). The result price includes the run's Apify platform usage costs.

| User plan | Price per 1,000 results | Price per result |
| --- | --- | --- |
| Free | $3.00 | $0.003 |
| All paid plans | $2.00 | $0.002 |

Only successfully saved drama results incur a result fee. Empty searches, failed requests, error rows and the run summary incur no result fee. A run saving 40 results costs $0.12 on Free or $0.08 on a paid plan, plus the default Actor Start fee of $0.00005 per GB of allocated run memory, with a minimum of one event. There is no additional custom startup fee. After-run storage and API access follow Apify's standard terms. See the **Pricing** tab for current prices.

Start with one keyword and `max_pages: 1`, inspect the run usage, then increase the keyword list or page limit. Three distinct keywords with `max_pages: 2` can return up to 120 drama rows if each requested page contains 20 results. Actual output can be smaller when searches have fewer matches or requests fail.

### Use the DramaBox search API and scheduled runs

Open the **API** tab for requests you can copy into your application. Send the same JSON input shown above to start a run, then retrieve the resulting dataset through Apify's API. This gives developers a DramaBox keyword search workflow with structured JSON output.

Save an input configuration as an Apify task to reuse a keyword list, and use schedules for recurring collection. Integrations can pass completed results to other services or trigger a downstream workflow. For unique drama catalogs, deduplicate exported rows by `book_id`; keep `keyword` when you need to track which searches produced each match.

### Related DramaBox Actors

Use these Actors for other parts of your DramaBox workflow:

| Actor | What it does |
| --- | --- |
| [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 Episodes Scraper](https://apify.com/spider_studio/dramabox-drama-chapters) | Collect chapter lists and temporary playback URLs for available free episodes. |
| [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

#### Can I search multiple DramaBox keywords in one run?

Yes. Supply all search terms in `keywords`. Whitespace is trimmed and exact repeated terms are removed. Duplicate drama IDs are removed within each keyword search, including across pages. A drama returned by two different keywords is saved and billed once under each keyword.

#### Can I limit how much a DramaBox search run spends?

Yes. Set a spending limit when starting the run. Collection stops when the remaining budget cannot cover another result. Successfully saved results remain available, and the run summary indicates when the limit was reached.

#### How many DramaBox results can I collect?

The Actor requests 20 results per page for each distinct keyword, up to your `max_pages` limit. A short or empty page ends that keyword's search. Results depend on DramaBox's current search response; keyword searches do not guarantee coverage of the entire catalog.

#### Does this Actor download DramaBox episodes?

This Actor collects search results and listing metadata. Use [DramaBox Drama Details](https://apify.com/spider_studio/dramabox-drama-detail) for a title's metadata and chapter index, [DramaBox Chapters](https://apify.com/spider_studio/dramabox-drama-chapters) for public chapter listings, or [DramaBox Chapter Downloader](https://apify.com/spider_studio/dramabox-chapter-download) for available chapter video files.

#### Is this an official DramaBox API?

This is an independently developed Apify Actor. It uses DramaBox search responses and makes the extracted results available through Apify's API. It is not affiliated with or endorsed by DramaBox.

#### Why are some fields empty or searches unsuccessful?

DramaBox may omit listing fields or return fewer matches than expected. Check `success` and `error` in the dataset and review the run logs for failed requests. Successful rows collected before a failure remain saved.

### Support

Use the Actor's **Issues** tab to report missing fields, changed responses or failed searches. Include the affected keyword and a run link so the issue can be reproduced.

# Actor input Schema

## `keywords` (type: `array`):

Search keywords; exact duplicates are removed.

## `max_pages` (type: `integer`):

Maximum pages per keyword, starting at page 1; short pages stop pagination earlier.

## Actor input object example

```json
{
  "keywords": [
    "revenge",
    "romance"
  ],
  "max_pages": 1
}
```

# 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 = {
    "keywords": [
        "revenge",
        "romance"
    ],
    "max_pages": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("spider_studio/dramabox-drama-search").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 = {
    "keywords": [
        "revenge",
        "romance",
    ],
    "max_pages": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("spider_studio/dramabox-drama-search").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 '{
  "keywords": [
    "revenge",
    "romance"
  ],
  "max_pages": 1
}' |
apify call spider_studio/dramabox-drama-search --silent --output-dataset

```

## MCP server setup

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

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/xryztHOKV8M7BiM7d/builds/FwSrJBPMKtiiGBRRX/openapi.json
