Short Drama API
Pricing
Pay per usage
Short Drama API
Drama & short-drama catalogs from the Movies API Gateway. 40 providers (DramaWave, ReelShort, NetShort, DramaBox, ShortMax, FlexTV, iDrama, StardustTV2, CubeTV, MoboReel, GoodShort.....), one interface, cursor-paginated. Built for streaming sites, aggregators, and SEO pipelines.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Ezvid.Net
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Short Drama API Actor
Pulls drama, movie, and short-drama catalogs from the Ezvid Movies API Gateway in a single, normalized interface. Built for streaming-site owners, content aggregators, SEO pipelines, and anyone who needs structured drama data at scale.
What it does
This Actor wraps the public Ezvid Movies API and exposes it as an Apify Actor. It supports 15 upstream providers behind one consistent input schema:
| Provider | Best for | Special actions |
|---|---|---|
| DramaWave | Long-form Chinese / Korean / Asian dramas | hot |
| ReelShort | Vertical short dramas (English) | — |
| DramaBox | Mobile-first short dramas | latest, vip |
| FlexTV | Multi-region short dramas | ranking, hot |
| iDrama | Classic Asian dramas | — |
| StardustTV2 | Mixed catalog, anime & series | — |
| CubeTV | Anime & TV modules | — |
| GoodShort | Short dramas with channel discovery | channels, hot |
| ShortMax | ShortMax catalog | ranking |
| NetShort | NetShort catalog | — |
| FlickReels | FlickReels catalog | trending |
| FreeReels | FreeReels with rich for-you feed | foryou, hot, trending, categories |
| StarShort | Mobile dramas (uses locale not language) | latest, trending, recommended, watch |
| DramaBite | DramaBite with fresh m3u8 per episode | recommended, source |
| GoldDrama | GoldDrama catalog | latest (as new) |
Action reference
Every provider supports a core set: home, search, detail, episodes. Most also support categories / channels. The rest are provider-specific power-user actions.
Two specialized actions need two path params:
starshort·watch→ needsid(show) +ep(episode number)dramabite·source→ needsid(drama) +ep(episode order) — returns a fresh m3u8 URL for one episode
Pagination is handled automatically via the upstream opaque cursor (default) or via page= (DramaBox's /latest). Set maxPages and the Actor will keep calling until the cursor is empty, the page counter exhausts, or the limit is hit.
Per-provider quirks
- StarShort uses
keywordfor search andlocalefor language instead ofq/language. The Actor handles this automatically — you still passqueryandlanguagein input. - StarShort has no
/home—homemaps to/content/hot(the closest equivalent). - DramaBite's
sourceaction returns a single fresh m3u8 URL (not a list). Useful right before playback. - GoldDrama has no
/langsendpoint — thelanguageinput is silently ignored for this provider.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
provider | string | ✅ | One of: dramawave, reelshort, dramabox, flextv, idrama, stardusttv2, cubetv, goodshort, shortmax, netshort, flickreels, freereels, starshort, dramabite, golddrama |
action | string | ✅ | One of 15 actions (each provider supports a subset — see table above) |
query | string | when action=search | Search keyword |
id | string | when action=detail/episodes/watch/source | Content ID — get it from a home or search run |
ep | string | when action=watch or source | Episode number (1-based) |
language | string | Provider-specific. StarShort → locale, others → language (see /api/<provider>/langs to list codes) | |
category | string | Optional category scope (provider-specific) | |
page | integer | Used by DramaBox's /latest only. Ignored elsewhere. | |
limit | integer | Page size, default 20, max 100 | |
maxPages | integer | Pages of cursor pagination, default 1, max 50 | |
apiKey | string | Your own Ezvid API key. Leave blank to use the Actor's built-in key (pay-per-result on Apify Store) |
Output
Every result is pushed to the default dataset as a JSON object. Each
record is enriched with a _meta envelope:
{"id": "tt_abc123","title": "Sample Drama","year": 2025,"episodes": 16,"poster": "https://cdn.ezvid.net/posters/abc123.jpg","stream": "https://stream.ezvid.net/hls/abc123/master.m3u8","_meta": {"provider": "dramawave","action": "home","page": 1,"url": "https://api.ezvid.net/api/dramawave/tabs?limit=20","fetchedAt": "2026-08-10T03:55:01.123Z"}}
A run summary is also written to the OUTPUT key-value store with counts and timestamps.
Quick examples
1. Latest 100 titles from DramaBox (one page)
{ "provider": "dramabox", "action": "home", "limit": 100, "maxPages": 1 }
2. Search DramaWave for "revenge"
{ "provider": "dramawave", "action": "search", "query": "revenge", "limit": 50 }
3. Get a fresh m3u8 for a single DramaBite episode
{ "provider": "dramabite", "action": "source", "id": "drama_abc123", "ep": "5" }
4. Watch metadata for a StarShort episode
{ "provider": "starshort", "action": "watch", "id": "show_xyz", "ep": "12", "language": "id" }
5. Crawl a full category across 10 pages
{ "provider": "goodshort", "action": "home", "category": "romance", "limit": 50, "maxPages": 10 }
6. StarShort "For You" — pass query is not needed, but the upstream requires locale
{ "provider": "starshort", "action": "recommended", "language": "id" }
Authentication
The Actor calls Ezvid's API with an X-API-Key header.
- Free users can paste their own Ezvid API key into the
apiKeyinput. - Pay-per-result users leave the field empty — the Actor uses an embedded
key from its
EZVID_API_KEYsecret. Configure that secret in the Actor's Settings → Environment variables when you publish it on Apify Store.
Local development
Requirements: Node 18+, Apify CLI.
# Install depsnpm install# Run locally (uses input from storage/key_value_store/INPUT.json)EZVID_API_KEY=your_key npm start
Deploying to Apify Store
# 1. Login (one-time)apify login# 2. Push — the CLI auto-creates the Actor on the platform# using the name from .actor/actor.json ("short-drama-api")apify push# 3. In the Apify Console (https://console.apify.com):# - Open the new Actor "short-drama-api"# - Settings → Environment variables → add EZVID_API_KEY=<your master key># - (Optional) Secrets → same value via secret reference# - 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 code. The Actor's name is read from.actor/actor.json.
Pricing strategy (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 |
This way your upstream cost (/api/dramawave/* calls) is covered and you
keep a margin. The built-in key is billed to the Actor, not to the end user.
Limits & caveats
- Upstream API may rate-limit; this Actor uses Apify's default retries but
if you hit a 429, lower
maxPagesor run in smaller batches. - The Ezvid API is not affiliated with the upstream drama providers — make sure your use case complies with their terms.
- The Actor does not stream video; it returns metadata + HLS URLs. The end user (or your downstream system) is responsible for the actual playback.
License
MIT — do whatever you want, just don't blame us if upstream breaks.