PineDrama Scraper - Short-Drama Series, Episodes & Views avatar

PineDrama Scraper - Short-Drama Series, Episodes & Views

Pricing

from $1.20 / 1,000 series records

Go to Apify Store
PineDrama Scraper - Short-Drama Series, Episodes & Views

PineDrama Scraper - Short-Drama Series, Episodes & Views

Scrape the PineDrama short-drama catalogue: series with watch counts, episode counts, categories, theme tags, covers, language, hot/new/free labels, creator ids and full episode lists. Filter by keyword or category in 17 languages, or paste links. Incremental runs and MCP export.

Pricing

from $1.20 / 1,000 series records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

PineDrama Scraper: Short-Drama Series, Episodes & Views

PineDrama Scraper turns the PineDrama short-drama catalogue into a clean data feed. Get every series with its watch count, episode count, categories, theme tags, cover, language, hot, new and free labels, plus creator ids, full episode lists and, optionally, each series' synopsis, first-episode play, like and comment counts and creator profile. Browse the whole catalogue or narrow it by keyword and category in 17 languages, or paste catalogue and series links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Two ways in. Walk the catalogue with optional keywords and category filters, or paste landing, catalogue, series and recommendation links. No URL building needed.
  • Engagement at a glance. Exact watch counts and episode counts per series, with hot, new and limited-free labels, so charting titles are easy to spot.
  • Full episode depth. Every enriched series carries its creator id, shortcut count, first-episode video id and the complete episode list with free or paid and intro flags.
  • Video and creator stats. Switch on Fetch first-episode video stats to add the synopsis, caption, play, like, comment, share and save counts, duration, publish time and the creator's handle, name, bio and follower count.
  • 17 languages. Category and tag names come back localized, and each series reports its own spoken language.
  • Category filter list attached. Every series lists the filter entries that match it, with ids, so rows join cleanly to the site's own category list.
  • Built for schedules. Incremental mode returns only new and changed series on recurring runs, and a run whose connection is refused fails loudly instead of returning an empty dataset.

Use Cases

  • Content analysts: track which short dramas are charting by watch count, category and tag.
  • Studios and licensors: map trope and theme coverage, episode counts and free windows across the catalogue.
  • Marketing and growth teams: spot new and hot releases early and watch how fast counts move.
  • AI agents and dashboards: feed structured catalogue and episode data into your own tools.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
collection_id"0000000000000000000"
title"Sample Drama"
cover_urlcover image link
cover_width / cover_height720 / 720
episode_count60
watched_count1250000
categories["CEO", "Urban"]
theme_tags["CEO", "Urban"]
category1
category_filtersmatching filter entries with category_id, name, name_en
is_limited_freetrue
label_hot / label_newfalse / false
language_code"en" (spoken language of the series)
language"en" (language of category names)
scene / page1 / 1
keywordthe keyword that matched, when keywords are used
video_id"0000000000000000000" (first episode)
creator_id / short_cut_num"0000000000000000000" / 24
episodesnumber, sequence id, video id, intro flag, paid flag, free window
description / video_text / video_urlseries synopsis, first-episode caption and public link (video stats option)
video_play_count / video_like_count / video_comment_countengagement of the first episode, plus share, save, duration and publish time (video stats option)
total_duration_seconds / theme_tags_en / theme_tag_keys7469, English tag names and their stable keys, e.g. ["Sample Tag A"] / ["tag_Sample_Plot"] (video stats option)
creator_username / creator_nickname / creator_followerscreator handle, display name, reach, bio and profile link (video stats option)
source_collection_idthe series a recommendation came from
changeType / changedFields"NEW" / [] in incremental mode

How to Use

  1. Pick a mode: Search the catalogue or Paste links.
  2. For search, optionally add keywords, category filters and a language; for links, paste your links.
  3. Switch Fetch episode lists on or off depending on whether you need episodes.
  4. Set Max items to control run size and cost, then click Start.
  5. Download the dataset as JSON, CSV or Excel, or read it through the API.

Catalogue with episode lists:

{
"mode": "search",
"fetchDetails": true,
"maxItems": 20
}

Keyword and category filter, cards only:

{
"mode": "search",
"keywords": ["CEO"],
"categoryFilters": ["Revenge"],
"fetchDetails": false,
"maxItems": 100
}

Localized category names:

{
"mode": "search",
"language": "fr",
"maxItems": 50
}

Paste links:

{
"mode": "url",
"urls": [
{ "url": "https://shortdrama.tiktok.com/gb" }
],
"fetchDetails": true,
"maxItems": 50
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/pinedrama-scraper").call(run_input={"mode": "search", "maxItems": 10})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["watched_count"], item["episode_count"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/pinedrama-scraper').call({ mode: 'search', maxItems: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How keywords and categories work

The catalogue is read page by page (12 series each) and narrowed as it is read, so a rare keyword or category can take many pages before enough matches are found. Set Max items for the result you want and optionally cap the walk with Max pages. Matching is case-insensitive against the title, categories and theme tags, in the language you picked.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run ID and the actor skips everything already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same scope. Each series is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED (only with emitExpired, only after a scan that covered the whole scope, and never billed past your maxItems). Compared: title, episode count, categories, theme tags, labels, free window, creator id, shortcut count and the episode list. Ignored: watch count, signed cover link and scrape time. stateKey names or shares the stored state. With incremental mode off, output is exactly as before.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch walks the catalogue; url scrapes pasted links.
keywordsarray(none)Keep series whose title, categories or tags contain one of these words.
categoryFiltersarray(none)Keep series tagged with one of these categories or tags.
languagestringenLanguage of category and tag names (17 supported).
urlsarray7 sample linksLanding, catalogue, series, recommendation and category-filter links for URL mode.
fetchDetailsbooleantrueFetch each series' episode list, creator id and shortcut count. Adds the detail-enrichment charge per series.
fetchVideoStatsbooleanfalseAlso read each series' first episode video page: synopsis, engagement counts, duration, publish time and creator profile. Needs episode lists; same detail-enrichment charge, heavier per series.
maxPagesintegerunlimitedOptional page limit per link or search; blank or 0 = unlimited. Does not cap results.
maxItemsinteger20Stop after this many series (0 = no limit).
proxyobjectresidentialConnection setting. Residential is the default and recommended.
resumeFromRunIdstring(none)Continue one interrupted run.
incrementalModebooleanfalseReturn only new and changed series on scheduled runs.
stateKeystring(none)Name or share an incremental-mode state.
emitUnchangedbooleanfalseAlso return (and bill) unchanged series.
emitExpiredbooleanfalseAlso return (and bill) expired series; only after a scan that covered the whole scope.
ignoreFieldsForChangesarray(none)Extra fields that never mark a series as updated.
mcpConnectorsarray(none)Pipe result summaries into your apps via MCP connectors.
notionParentPageUrlstring(none)Notion parent page for the Notion connector.
maxNotifyListingsinteger50Cap on items written per connector.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

Series record (the video and creator keys appear only with fetchVideoStats; a few series are not shown on the web and keep them empty):

{
"recordType": "series",
"collection_id": "0000000000000000000",
"title": "Sample Drama",
"cover_url": "https://example.com/cover.jpeg",
"cover_width": 720,
"cover_height": 720,
"episode_count": 60,
"watched_count": 1250000,
"categories": ["CEO", "Urban"],
"theme_tags": ["CEO", "Urban"],
"category": 1,
"is_limited_free": true,
"label_hot": false,
"label_new": false,
"language_code": "en",
"scene": 1,
"category_filters": [{ "category_id": "0000000000000000000", "name": "Urban", "name_en": "urban" }],
"keyword": null,
"video_id": "0000000000000000000",
"creator_id": "0000000000000000000",
"short_cut_num": 24,
"description": "Sample synopsis (video stats option)",
"video_url": "https://example.com/video",
"video_play_count": 1250000,
"video_like_count": 68000,
"video_duration_seconds": 103,
"creator_username": "sample.creator",
"creator_followers": 169000,
"episodes": [{ "episode_number": 1, "sequence_id": 1, "video_id": "0000000000000000000", "is_intro": false, "is_paid": false }],
"changeType": "NEW"
}

The Series, Series detail, Video and creator and Incremental changes dataset views are available in the output tab.

Plan Requirement

The default connection is Apify Residential, which the data source serves reliably; this is the recommended setting. Datacenter proxies are cheaper but the data source answers its catalogue, recommendation and category routes with empty pages on datacenter exits, so they are only suitable for light use. If a datacenter run keeps getting empty pages, the actor retries with backoff on fresh connections and then escalates automatically to residential for the rest of the run (capped per run, billed to your Apify plan), returning to datacenter when it serves again.

Apify free plans do not include residential proxies. On a free plan the run logs a one-time notice and continues on a backup connection; some pages may still be unavailable. For residential access, upgrade at https://apify.com/pricing or supply your own proxy URLs. If no connection can load any results page, the run fails with a clear message instead of returning an empty result.

FAQ

How much does it cost?

You pay per series returned, with episode-list enrichment billed only when you switch it on. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.

This actor collects only publicly available catalogue data: titles, counts, categories and episode lists. You are responsible for how you use it: follow the site's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Titles and counts are generally facts, but cover art and videos may be subject to third-party rights.

Can I get only new or changed series on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated series, and unchanged ones are not billed.

Why did a run return fewer series than the site shows?

The run stops at Max items. Set it higher, or to 0, to collect more. With keywords or category filters only matching series are returned. Episodes attached to a series do not count toward maxItems.

Why are the video stats empty for some series?

The platform does not show the first episode of some series on the web, so no public video page exists to read. Those rows keep the catalogue and episode data and leave the video and creator fields empty.

Why did my run fail instead of returning an empty dataset?

If every connection tried returns an empty page, the run stops with a clear message so "no results" is never confused with "nothing could be read". Run it again in a few minutes.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 More scrapers you might like

Pair this actor with these related scrapers from the same team:

🧩 GoodShort Scraper
Scrape the GoodShort short-drama catalog: titles with exact views, follows, genres and...
🧩 WEBTOON Scraper
Scrape the WEBTOON catalog into structured data. Extract series, genres, rankings and...
🧩 Anghami Scraper
Scrape Anghami's public catalog by keyword or player URL. Rows carry their kind (song...
🤖 Suno Scraper
Collect public Suno music data: songs with lyrics, style tags, model version, play and...
⚽ JioHotstar Scraper
Scrape the JioHotstar catalog by content type or URL. Extract shows, movies, episodes...
🧩 Pikabu Scraper
Scrape Pikabu (Пикабу): keyword search, hot/new/best feeds, communities, tags, full story...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.