ReelShort API
Pricing
Pay per usage
ReelShort API
ReelShort-only Apify Actor wrapping the ReelShort API. Pull catalog, search, detail, episode lists and per-language feeds from ReelShort with a single, cursor-paginated interface. Built for streaming sites, content aggregators and SEO pipelines.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
Ezvid.Net
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
ReelShort API Actor
A single-provider fork of ezvidnet/short-drama-api.
Wraps the ReelShort API and exposes only the
ReelShort endpoints behind a small, cursor-paginated interface.
The upstream actor supports 15 providers. This Actor is hard-coded to ReelShort — simpler input schema, smaller surface area, easier to publish as a free/cheap public Actor.
Endpoints
| Action | Upstream | Pagination | Required input |
|---|---|---|---|
home | GET /api/reelshort/home | cursor | — |
categories | GET /api/reelshort/categories | cursor | — |
latest | GET /api/reelshort/latest?page=N | page-based | — |
vip | GET /api/reelshort/vip | cursor | — |
search | GET /api/reelshort/search?q=... | cursor | query |
detail | GET /api/reelshort/detail/{id} | cursor | id |
episodes | GET /api/reelshort/episodes/{id} | cursor | id |
All endpoints require an X-API-Key header.
Output
Each upstream record is enriched with a _meta block:
{"id": "abc123","title": "Sample Drama","poster": "https://cdn.ezvid.net/posters/abc123.jpg","stream": "https://stream.ezvid.net/hls/abc123/master.m3u8","_meta": {"provider": "reelshort","action": "home","page": 1,"url": "https://api.ezvid.net/api/reelshort/home?limit=20","fetchedAt": "2026-08-21T07:40:01.123Z"}}
A run summary is also written to the OUTPUT key-value store with counts and timestamps.
Quick examples
1. Pull 50 latest home records
{ "action": "home", "limit": 50, "maxPages": 1 }
2. Search ReelShort for "revenge"
{ "action": "search", "query": "revenge", "limit": 20, "maxPages": 1 }
3. Detail for a specific drama
{ "action": "detail", "id": "abc123" }
4. Full episode list
{ "action": "episodes", "id": "abc123" }
5. Page-based latest feed (walk 5 pages)
{ "action": "latest", "page": 1, "maxPages": 5 }
6. VIP feed, Indonesian language
{ "action": "vip", "language": "id", "limit": 20, "maxPages": 3 }
Authentication
The Actor calls ReelShort's API with an X-API-Key header.
- Bring your own key — paste your ReelShort key into the
apiKeyinput. - Built-in key (pay-per-result) — leave
apiKeyblank and setEZVID_API_KEYin the Actor's Settings → Environment variables. When you publish on Apify Store, users without their own key can still run the Actor and the upstream cost comes out of your account.
Use the API key issued for the ReelShort API at https://api.ezvid.net/.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
action | enum | home | One of: home, categories, latest, vip, search, detail, episodes |
query | string | — | Required for search |
id | string | — | Required for detail, episodes |
language | string | — | Optional. See /api/reelshort/langs |
category | string | — | Optional category scope |
page | integer | 1 | Starting page for latest |
limit | integer | 20 | Page size, 1–100 |
maxPages | integer | 1 | Pages to walk, 1–50 |
apiKey | string | — | Your ReelShort key (overrides built-in) |
Local development
Requirements: Node 20+, npm.
# Installnpm install# Set your keycp .env.example .env# then edit .env and set EZVID_API_KEY# Run with the bundled input fixturenpm start
The Actor reads input from storage/key_value_store/INPUT.json when run
locally via the Apify CLI:
# Optional: install the Apify CLI and run with its local runtimenpx apify run
Deploying to Apify
# 1. Login (one-time)npx apify login# 2. Push — auto-creates the Actor on the platform using the name# in .actor/actor.json ("reelshort-api")npx apify push# 3. In the Apify Console (https://console.apify.com):# - Open "reelshort-api"# - Settings → Environment variables → add EZVID_API_KEY=<your key># (skip if you want every run to bring its own key)# - Publication → "Publish" → fill the public listing from this README
The CLI has no
apify actors createcommand.apify pushis the command that both creates the Actor (if it doesn't exist) and uploads the source.
Pricing (suggestion)
On Apify Store you can set pay-per-event pricing so users pay only for records they actually pull:
| Event | Suggested price |
|---|---|
| Actor start | $0.001 |
| Record returned | $0.0005 – 0.002 |
The built-in key is billed to the Actor, not to the end user.
Limits & caveats
- Upstream API may rate-limit. The Actor retries 429 / 5xx up to 3 times with
exponential backoff. If you still hit a limit, lower
maxPagesor run in smaller batches. - The ReelShort API is not affiliated with the upstream drama providers — make sure your use case complies with their terms.
- The Actor returns metadata + HLS URLs only; playback is the consumer's job.
Differences vs ezvidnet/short-drama-api
| Area | Upstream | This fork |
|---|---|---|
| Providers | 15 (dramawave, reelshort, …) | 1 (reelshort) |
provider input | required enum | dropped |
ep / locale | used by watch, source on other providers | unused (no watch / source actions) |
| Built-in key | hard-coded master key for pay-per-result | empty by default — bring your own |
| Dependencies | apify only | apify only |
License
MIT.

