Mini dramas
The short-drama catalog with episode metrics.
- Upstream
/tiktok/v1/paid_content/mini_drama/feed//tiktok/v1/paid_content/mini_drama/tabs/- Access
- Every planExclusive
- Runs on
- LeanPool · android · tiktok · 47.6.3
- Pagination
{ cursor, has_more }- Client
os,app_flavour,app_versionoverrides- Billing
- Failed calls are free
- Older path
/v1/scrape/mini-drama
Authorization
Your API key. Create one in API keys.
Query parameters
A tab from /v1/series/mini-dramas/tabs.
The cursor from the previous page. Omit it for the first page.
Items per page. For example 20.
Two-letter country code for egress and storefront. For example US.
Client and egress overrides
Optional. Leave them out to run as android · tiktok · 47.6.3 from the default pool. See Clients and versions.
android or ios. For example android.
Run as tiktok, lite, lite_coin, pro, studio, shop, tv, douyin. For example tiktok.
A release of that app. Defaults to the current default for (os, app_flavour). For example 47.6.3.
Two-letter country code for egress. For example US.
A supported city in that region. For example miami.
Response
A 200 returns JSON with stable field names. Every response carries x-credits-cost, x-credits-tier and x-credits-remaining.
Pagination
Pass cursor from the previous page and stop when has_more is false. Both sit at the top level of every page; the raw upstream cursor fields are still in the body. See Pagination.
{
"cursor": "1794158512000",
"has_more": true,
"items": [
"…"
]
}import os, requests
def pages(path, **params):
cursor = None
while True:
if cursor:
params["cursor"] = cursor
r = requests.get(f"https://api.tikultra.com{path}", params=params,
headers={"x-api-key": os.environ["TIKULTRA_KEY"]})
r.raise_for_status()
page = r.json()
yield page
if not page["has_more"]:
return
cursor = page["cursor"]
for page in pages("/v1/series/mini-dramas", count=50):
print(page["cursor"], page["has_more"])Errors
Errors return a JSON body with a stable code and cost 0 credits. See Errors and retries.