NetShort Scraper at a glance
NetShort Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes platform, recordtype, id, slug and title, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 18 options
Scrape the NetShort short-drama catalog: series with synopses, like and follow counters, categories, episode lists with lock flags, publish dates and reviews. Catalog, category, trending or pasted links, in 16 site languages. Resume, incremental updates and MCP export included.
What NetShort Scraper can do
- Four ways in. Walk the full browse catalog page by page, follow selected categories (resolved live), read the homepage discovery rails with rail name and position, or paste your own series links.
- Reviews included. The site publishes reader reviews on every series; collect them with one toggle - one review unit per series that has them.
- Sixteen site languages. The same story is published per locale with its own series id; collect one language or all of them, with localized titles, synopses and slugs.
- Full episode lists. Every enriched record carries its episode list (id, number, lock flag, thumbnail) where the site embeds it, plus the all-episodes link.
- Trending rails with rank. The homepage rails come back with the rail name and the exact position of every series in it.
- Built for schedules. Incremental mode returns only new and changed titles on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Choose what to collect
These inputs let you configure NetShort Scraper - Catalog, Episodes & Reviews. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring | catalog walks the full browse catalog page by page. category walks the category pages you pick in the multi-select below. trending reads the homepage discovery rails with rail name and position. urls scrapes only the links, ids and shorthands you paste. |
categoriesarray | Which category pages to walk in category mode - pick one, several, or leave empty for every category. Values come from the site's own category list and are re-resolved against the live index when the run starts. |
languagestring | Which localized catalog to read. The same story carries a per-locale series id; the walked locale's id is the row identity. |
listingUrlsarray | Episode pages (/episode/...), category pages (/drama/-), the browse catalog (/drama/all-plots), all-episodes pages and reviews pages. A category also works without its route: https://netshort.com/1983832036856381442 (bare id) or https://netshort.com/Fantasy-1983832036856381442 (Name-id shorthand). Each link keeps its own site language when it carries one; id shapes use the Site language input. |
maxItemsinteger | Maximum number of series records per run. 0 means no limit. |
maxPagesinteger | Maximum pages walked per catalog or category scope. 0 means no page cap, so Max items is the only cap that stops a run early. |
fetchDetailsboolean | Read each series' episode page for the like/follow counters, full episode list with lock flags, per-locale links, publish date and the first review set. |
Show 11 more inputs
| Input | What it controls |
|---|---|
fetchReviewsboolean | Also read each series' reviews page for the full server-rendered review set (billed per started block of 10 reviews). |
maxReviewsinteger | Cap on reviews carried per series record. 0 skips reviews entirely. |
resumeFromRunIdstring | Run ID whose collected series should be skipped (for continuing after an interrupted run). |
incrementalModeboolean | Track state between runs and classify every series as NEW, UPDATED, UNCHANGED or EXPIRED instead of always NEW. Rows already known and unchanged are suppressed. |
stateKeystring | Named baseline for incremental runs. Leave empty to derive the key from the run scope (mode, categories, language). |
emitUnchangedboolean | In incremental mode, also push rows that did not change (changeType UNCHANGED). |
emitExpiredboolean | In incremental mode, emit EXPIRED tombstone rows for series that disappeared from the walked scope. |
ignoreFieldsForChangesarray | Extra field names that must never mark a row UPDATED (counters and rank positions are already excluded by default). |
mcpConnectorsarray | Apify MCP connector IDs that receive pushed records while the run executes. |
notionParentPageUrlstring | Notion parent page for the Notion MCP connector. |
maxNotifyListingsinteger | Cap on records sent to MCP connectors per run. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
platformplatformrecordTyperecordTypeididslugslugtitletitletitleRawtitleRawisDubbedisDubbedurlurlfullEpisodesUrlfullEpisodesUrllikeslikeslikesDisplaylikesDisplayfollowsfollowsShow 35 more fields
followsDisplayfollowsDisplayepisodesepisodesgenresgenresgenreIdsgenreIdsreleaseDatereleaseDatecovercoverdescriptiondescriptionlanguagelanguageavailableLanguagesavailableLanguageslibraryIdlibraryIdisDelistedisDelistedviewAllReviewsUrlviewAllReviewsUrlsectionsectionrankrankcategorycategorydiscoveredFromUrldiscoveredFromUrlresultsReturnedresultsReturneddetailFetcheddetailFetchedscrapedAtscrapedAtchangeTypechangeTypechangedFieldschangedFieldsfirstSeenAtfirstSeenAtlastSeenAtlastSeenAtextractionPathextractionPathmodemodeepisodeListepisodeListtagstagsreviewsreviewsreviewsFetchedreviewsFetchedepisodeIdepisodeIdepisodeNumberepisodeNumberlockedlockedthumbnailthumbnailreviewTitlereviewTitlereviewContentreviewContentExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"platform": "NetShort",
"id": "2108386528632586241",
"title": "The Mafia Bosses' Max-Level Nanny",
"likesDisplay": "51.0K",
"followsDisplay": "595.8K",
"episodes": 30,
"genres": [
{
"name": "Underdog Rise",
"id": "1984208314792402946"
}
],
"url": "https://netshort.com/episode/the-mafia-bosses-max-level-nanny-2108386528632586241"
}Ways to use this data
- Who: short-drama analysts - track like and follow counters, episode counts and trending positions across the NetShort catalog on a schedule.
- Who: content researchers - collect synopses, categories and reader reviews for market studies.
- Who: localization teams - compare per-locale series ids and availability across 16 site languages.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does NetShort Scraper return?
The documented output for NetShort Scraper includes platform, recordtype, id, slug, title, titleraw, isdubbed and url. Availability of each field depends on the source page and the selected mode.
How much does NetShort Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Does it scrape reviews?
Yes. NetShort publishes reader reviews on each series' pages; the actor collects them (title and text) when Fetch reviews is on, capped by Max reviews per series. There is no rating or star surface on the web catalog, so none is collected.
Can I get only new or changed titles on a schedule?
Yes. Turn on Incremental mode and schedule the actor. The first run returns everything matching as NEW; later runs return only NEW and UPDATED records. Episode-count growth and description changes count as changes; view and follow counter ticks and trending positions are excluded as noise by default. Use State key to keep a monitoring campaign stable, and Emit unchanged or Emit expired only if you also want those rows (they return and bill extra rows).
Why did my run fail instead of returning an empty dataset?
A run that never got a single readable answer fails loudly with a connection message instead of reporting an empty catalog; an unknown category value is named in the error rather than silently skipped.
Can I use it with AI agents or MCP?
Yes. Every record is plain JSON over the dataset API, and the MCP connector export sends rows straight into tools like Notion. Point an agent at the dataset items endpoint with the input above.
