# ReelShort Scraper - Full Episode M3U8 Streams & Drama Info (`agentflow/reelshort-scraper`) Actor

Paste a ReelShort link, book id or title and get every episode's direct HLS (m3u8) stream plus title, cover, synopsis, tags and cast. Pay per episode, failures are free.

- **URL**: https://apify.com/agentflow/reelshort-scraper.md
- **Developed by:** [Yunbin Huang](https://apify.com/agentflow) (community)
- **Categories:** Videos, Developer tools
- **Features:** Limited permissions
- **Stats:** 7 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 episode streams

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## ReelShort Scraper — Full Episode M3U8 Streams & Drama Info

One platform, done properly. Paste a **ReelShort** link, book id or title and get **every episode's direct HLS (m3u8) stream** in one run, together with the drama's title, cover, synopsis, tags and cast.

No 40-platform menu, no guessing which source works today. Just ReelShort's English catalog — **4,500+ dramas**, kept in sync with new releases.

### Why this one

- **Whole drama in one run** — all 60–100 episodes come back together, numbered in order
- **Long-lived stream URLs** — not tokens that die in a few hours, so you don't have to re-fetch before every play. Store them and play them later
- **Plain HLS** — the m3u8 opens in any HLS player (hls.js, Video.js, VLC, ffmpeg), no headers, cookies or referer needed
- **Pick the episodes you need** — `"1-10"`, `"1,3,5-8"`, or leave empty for all
- **Pay per episode, failures are free** — unknown titles, missing dramas or bad input cost nothing
- **Fast and light** — pure HTTP, 128 MB, a drama takes about a second

### Input

| Field | What to put |
|-------|-------------|
| `dramas` | ReelShort links (`reelshort.com/movie/…`, `reelshort.com/episodes/…` — any episode link works), 24-character book ids, or exact titles |
| `episodes` | Optional. `"1-10"`, `"1,3,5-8"`… Empty = all episodes |
| `infoOnly` | Optional. `true` returns drama info without streams, at a lower price |

```json
{
    "dramas": [
        "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b",
        "6a8752ac7c23cb02b40f062b",
        "Just One Kiss"
    ],
    "episodes": "1-3"
}
```

### Output

One item per drama:

```json
{
    "input": "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b",
    "success": true,
    "book_id": "6a2789340be4f6029e0b558b",
    "title": "My Vampire Bodyguard",
    "total_episodes": 59,
    "cover": "https://img.dramatap.app/12/5319a73f87864939ac554f223fc15583-1786810979328.jpg",
    "logline": "While shielding the ruined heiress from street thugs in the pouring rain, the undercover vampire king secretly fought back his ravenous thirst for her blood.",
    "synopsis": "…",
    "tags": ["Playing Dumb", "Vampire", "Bodyguard"],
    "actors": [],
    "reelshort_url": "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b",
    "episode_count": 3,
    "episodes": [
        { "episode": 1, "m3u8": "https://…/My%20Vampire%20Bodyguard_001/….m3u8" },
        { "episode": 2, "m3u8": "https://…/My%20Vampire%20Bodyguard_002/….m3u8" },
        { "episode": 3, "m3u8": "https://…/My%20Vampire%20Bodyguard_003/….m3u8" }
    ]
}
```

| Field | Description |
|-------|-------------|
| `episodes` | `[{ episode, m3u8 }]` — direct HLS playlist per episode |
| `total_episodes` | Episodes the drama has |
| `episode_count` | Episodes returned (and charged) in this item |
| `title`, `cover`, `logline`, `synopsis` | Drama info |
| `tags`, `actors` | Genre / trope tags and cast names |
| `book_id`, `reelshort_url` | ReelShort identifiers |
| `success` / `error` | Whether the drama resolved, and why not |

### How much does it cost?

| Event | Price |
|-------|-------|
| Episode stream returned | **$0.002 per episode** ($2 per 1,000) |
| Drama info only (`infoOnly: true`) | $0.001 per drama |

A typical 70-episode drama costs about **$0.14**, once — the URLs stay valid, so there's no paying again to refresh them. Drama info is included free when you fetch episodes. No start fee; failed items are never charged. Set **Maximum cost per run** and the Actor stops cleanly at your budget.

### Use it from code

Call it through the [Apify API](https://docs.apify.com/api/v2) from any language, schedule it to pick up new releases, or plug it into **Make**, **Zapier**, **n8n** or AI agents through the [Apify MCP server](https://mcp.apify.com).

### FAQ

#### Which ReelShort content is covered?

The English ReelShort catalog, including new releases shortly after they go live.

#### How long do the stream URLs last?

They are not short-lived tokens. They stay valid for a long time; if one ever stops working, run the drama again.

#### Can I search by keyword?

Titles are matched exactly (case-insensitive). For best results use the ReelShort link or book id.

#### Is this legal?

You are responsible for how you use the data. Respect ReelShort's rights, its Terms of Service and copyright law in your jurisdiction.

ReelShort Scraper · ReelShort API · ReelShort Downloader · ReelShort M3U8 · ReelShort Episode Scraper · ReelShort Video URL · Short Drama API · Short Drama Scraper · Vertical Drama Stream API · ReelShort HLS

# Actor input Schema

## `dramas` (type: `array`):

ReelShort drama or episode links (reelshort.com/movie/…, reelshort.com/episodes/…), 24-character book ids, or exact titles. One per line.

## `episodes` (type: `string`):

Which episodes to return, e.g. "1-10" or "1,3,5-8". Leave empty for all episodes. You are charged per episode returned.

## `infoOnly` (type: `boolean`):

Return only title, cover, synopsis, tags and cast — no episode streams. Charged per drama at a lower price.

## Actor input object example

```json
{
  "dramas": [
    "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b"
  ],
  "episodes": "1-3",
  "infoOnly": false
}
```

# Actor output Schema

## `results` (type: `string`):

One item per drama: episodes (episode number + m3u8 URL), title, cover, synopsis, tags, cast, or success=false with an error.

# 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 = {
    "dramas": [
        "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b"
    ],
    "episodes": "1-3"
};

// Run the Actor and wait for it to finish
const run = await client.actor("agentflow/reelshort-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 = {
    "dramas": ["https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b"],
    "episodes": "1-3",
}

# Run the Actor and wait for it to finish
run = client.actor("agentflow/reelshort-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 '{
  "dramas": [
    "https://www.reelshort.com/movie/my-vampire-bodyguard-6a2789340be4f6029e0b558b"
  ],
  "episodes": "1-3"
}' |
apify call agentflow/reelshort-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agentflow/reelshort-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/hnkoTM7f74ep1lfUj/builds/mgyblZFPwi65SJe5T/openapi.json
