# TikTok Short Drama Series & Episode Scraper (`rainminer/tiktok-short-drama-scraper`) Actor

Scrape TikTok Short Dramas: series titles, synopses, episode lists, views, likes, covers, and creators. Paste a public episode URL or tiktok.com/shortdrama, cap results with maxItems, and export JSON or CSV. No TikTok login. Metadata only — video files are not downloaded.

- **URL**: https://apify.com/rainminer/tiktok-short-drama-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 short drama episodes

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Short Drama Series & Episode Scraper

The **TikTok Short Drama Scraper** extracts public **series and episode data** from [TikTok Short Dramas](https://www.tiktok.com/shortdrama) — TikTok’s serialized mini-drama catalog. Paste an episode URL or the catalog page and export structured rows: titles, synopses, episode numbers, views, likes, covers, and creator metadata. **No TikTok login required.**

[![TikTok Short Drama catalog](https://upload.wikimedia.org/wikipedia/en/thumb/a/a9/TikTok_logo.svg/320px-TikTok_logo.svg.png)](https://www.tiktok.com/shortdrama)

Short Dramas play like TikToks but belong to a **series**. This Actor is built for that surface. It does not scrape the For You feed, hashtags, or classic `/@user/video/` posts — use a general [TikTok Scraper](https://apify.com/clockworks/tiktok-scraper) for those.

***

### What does TikTok Short Drama Scraper do?

- Reads **public** Short Drama episode pages and the **catalog** at [tiktok.com/shortdrama](https://www.tiktok.com/shortdrama)
- Returns **one dataset row per episode**, with familiar TikTok video fields plus `shortDramaSeriesInfo`
- Caps results with **maxItems per start URL** (a series URL caps that series; the catalog caps episodes across listed series)
- Optionally follows **related dramas** from a series, still limited by `maxItems`
- **Metadata only** in this version — episode files are not downloaded yet (see [Roadmap](#roadmap))
- Exports JSON, CSV, Excel, or HTML and runs on a schedule via the Apify API

You can scrape TikTok Short Drama data without coding: paste URLs in Console, click Start, and download the dataset.

***

### What data can you extract from TikTok Short Dramas?

| Field | Description |
| ----- | ----------- |
| `id` | Episode video id |
| `text` | Episode / series title shown as the caption |
| `webVideoUrl` | Public Short Drama episode URL |
| `playCount` / `diggCount` / `shareCount` / `commentCount` / `collectCount` | Engagement |
| `authorMeta` | Creator handle, nickname, avatar, fans |
| `videoMeta` | Duration and cover URLs |
| `shortDramaSeriesInfo` | Series id, title, synopsis, episode number, episode count, genres, preview/free flags, watches |
| `imageUrl` | Primary cover for Console thumbnails |
| `createTimeISO` | Episode publish time |

Covers, stats, and series fields are included. Episode MP4s are not downloaded in this version — see [Roadmap](#roadmap).

***

### Why scrape TikTok Short Dramas?

TikTok rolled Short Dramas out as a first-party catalog of vertical series. Typical TikTok scrapers stop at `/@user/video/` URLs and leave series metadata empty. This Actor fills that gap for:

1. **Catalog monitoring** — track new and hot series on the public Short Drama shelf
2. **Competitive intelligence** — compare episode counts, watches, and genres across studios
3. **Creator analytics** — follow Short Drama accounts and their serialized catalogs
4. **Content research** — tropes, titles, and synopses for vertical-drama trends
5. **Dataset joins** — keep Clockworks-like field names so you can merge with other TikTok video exports
6. **Media libraries** — cover images and episode lists without opening the app
7. **Lead lists** — public creator handles and profile URLs on series pages
8. **Automation** — schedule runs and push rows to sheets, warehouses, or webhooks
9. **Localization checks** — run the catalog with a different `region` to see which series surface in US vs UK vs other stores
10. **Release tracking** — re-run a series URL to see if `episodeCount` grew since yesterday

***

### How to scrape TikTok Short Dramas

1. Open the Actor in [Apify Console](https://console.apify.com/)
2. Paste a **Short Drama episode URL** (for example `https://www.tiktok.com/shortdrama/episode/7677865695564436501/1`) or `https://www.tiktok.com/shortdrama`
3. Set **Maximum items** (episodes per start URL; keep it small for a test run)
4. Click **Start**
5. Download the dataset as JSON, CSV, Excel, or via the Apify API

For all input options, see the **Input** tab in Console.

***

### Input

| Field | Type | Description |
| ----- | ---- | ----------- |
| `startUrls` | array | Episode URLs and/or the catalog URL |
| `postURLs` | string list | Optional alias of `startUrls` (plain URL strings) |
| `maxItems` | integer | Max episodes per start URL (default `5`) |
| `scrapeRelatedDramas` | boolean | Also enqueue related series (still limited by `maxItems`) |
| `region` | string | Catalog region (ISO country code, default `US`) |
| `proxyConfiguration` | object | Optional. Enable a proxy if your network is blocked |

Example:

```json
{
  "startUrls": [
    { "url": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1" }
  ],
  "maxItems": 5
}
```

***

### Output example

```json
{
  "id": "7677867720364264718",
  "text": "Mighty Tyrant, Tender Love",
  "textLanguage": "en",
  "webVideoUrl": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1",
  "playCount": 233200,
  "diggCount": 10100,
  "authorMeta": {
    "name": "mialopez2249",
    "nickName": "Prime.Episodes",
    "profileUrl": "https://www.tiktok.com/@mialopez2249",
    "fans": 1300000
  },
  "videoMeta": {
    "duration": 77,
    "coverUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/cover.jpeg"
  },
  "shortDramaSeriesInfo": {
    "seriesId": "7677865695564436501",
    "seriesTitle": "Mighty Tyrant, Tender Love",
    "episodeNumber": 1,
    "episodeCount": 30,
    "genres": ["Forced Love"],
    "isPreview": true
  },
  "imageUrl": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/cover.jpeg"
}
```

You can download the dataset extracted by TikTok Short Drama Scraper in JSON, HTML, CSV, or Excel.

***

### Roadmap

This release is **metadata only**: series info, episode lists, engagement, covers, and creator fields. `videoMeta.downloadAddr` is not populated, and the Actor does not save MP4s.

A **paid video-download add-on** is planned next — the same pattern as Clockworks’ `shouldDownloadVideos` (opt-in, extra PPE, files in a key-value store). No TikTok login or session cookies will be required from you. Until that ships, use the dataset for catalogs, analytics, and joins; do not expect episode video files.

***

### How much does it cost to scrape TikTok Short Dramas?

This Actor uses **pay-per-event** pricing. You pay a tiny start fee plus 1.99 USD per 1,000 episode rows on the free Apify plan (about 0.002 USD per episode). Paid Store plans are cheaper — see the **pricing** tab.

A test run of a few episodes costs well under a cent. Larger catalog crawls scale with `maxItems`. Platform compute is included in the event price on the default no-proxy path. Enable a residential proxy only if you see empty results — that can add extra platform usage.

***

### Is it legal to scrape TikTok Short Dramas?

Our scrapers are ethical and do not extract private user data such as emails, gender, or precise location. They only extract what is shared publicly on Short Drama pages. Results can still contain personal data (for example a creator display name). Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you are unsure, consult your lawyers. You can also read our blog post on the legality of web scraping.

***

### FAQ

#### Can I scrape a full series?

Yes. Start from any episode URL in that series and raise `maxItems` to the episode count (or higher). The Actor walks the public episode list.

#### Does this replace a general TikTok video scraper?

No. It only covers `tiktok.com/shortdrama`. Hashtags, profiles, search, and `/video/` URLs belong on a general TikTok scraper.

#### Why is the video download URL empty?

This version is metadata only. A paid download add-on is on the [roadmap](#roadmap). Covers, stats, and series fields are available now. The Actor does not accept login cookies.

#### Do I need a proxy?

Not by default. If runs return empty pages or HTTP errors from your region, turn on Apify Proxy (residential often works best for TikTok).

#### Related Actors

- [TikTok Promo Code Finder](https://apify.com/rainminer/tiktok-promo-code-finder)
- [TikTok Video Text Extractor](https://apify.com/rainminer/tiktok-video-text-extractor)

Open the **Issues** tab if something breaks — Short Drama is a new TikTok surface and layouts can change.

***

### Image Credit

Image credit: [TikTok](https://www.tiktok.com/)

# Actor input Schema

## `startUrls` (type: `array`):

TikTok Short Drama URLs. Use an episode page (https://www.tiktok.com/shortdrama/episode/{seriesId}/{episode}) to scrape that series, or https://www.tiktok.com/shortdrama for the public catalog.

## `postURLs` (type: `array`):

Optional Clockworks-style alias of startUrls: plain Short Drama episode URL strings.

## `maxItems` (type: `integer`):

Maximum number of episodes to return per start URL. For a series URL this caps episodes in that series; for the catalog it caps episodes collected across listed series.

## `scrapeRelatedDramas` (type: `boolean`):

When scraping a series, also enqueue related Short Dramas from TikTok's recommendations. Still limited by maxItems for that start URL.

## `region` (type: `string`):

Two-letter region used for the Short Drama catalog feed (ISO 3166-1 alpha-2). Defaults to US.

## `proxyConfiguration` (type: `object`):

Optional proxy. The public Short Drama catalog works without a proxy from many networks; enable Apify Proxy (residential recommended) if you see empty results or blocks.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1"
    }
  ],
  "maxItems": 5,
  "scrapeRelatedDramas": false,
  "region": "US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1"
        }
    ],
    "region": "US",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/tiktok-short-drama-scraper").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 = {
    "startUrls": [{ "url": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1" }],
    "region": "US",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/tiktok-short-drama-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.tiktok.com/shortdrama/episode/7677865695564436501/1"
    }
  ],
  "region": "US",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/tiktok-short-drama-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/tiktok-short-drama-scraper"
        }
    }
}

```

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/RTeE8b9A5ni6jE7pQ/builds/spoRRaZBhQx5lJi0e/openapi.json
