Discover/GoodShort API
live

GoodShort APIgoodshort.com ↗

Search GoodShort's English microdrama catalogue by keyword, theme, or trope. Get titles, synopses, genres, tags, episode counts, and watch page URLs via one API.

Endpoint health
verified 2h ago
search_microdramas
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the GoodShort API?

The GoodShort API exposes 1 endpoint — search_microdramas — that queries the full English-language microdrama catalogue on GoodShort.com and returns up to 50 records per page, each carrying the drama's title, topic tags, public watch URL, and pagination metadata. It is the fastest way to query GoodShort's short-form vertical drama inventory programmatically without touching the site directly.

This call costs1 credit / call— charged only on success
Try it
1-based result page number. Omitted = first page.
Free-text keyword or content topic to search for, e.g. a theme, trope or part of a title.
Number of dramas per page; values above 50 are clamped to 50.
→ api.parse.bot/scraper/01a5903f-64a4-45e5-abbe-f897f47dec70/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/01a5903f-64a4-45e5-abbe-f897f47dec70/search_microdramas?query=revenge' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace goodshort-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: GoodShort microdrama search — bounded, re-runnable."""
from parse_apis.goodshort_com_api import GoodShort, InputFormatInvalid

client = GoodShort()

# Search for revenge-themed microdramas, cap total items fetched.
for drama in client.microdramas.search(query="revenge", limit=5):
    print(drama.title, f"({drama.episode_count} eps, {drama.view_count_display} views)")

# Drill-down: grab the first result for a different query.
hit = client.microdramas.search(query="mafia", limit=1).first()
if hit is not None:
    print(hit.title)
    print("  Author:", hit.author)
    print("  Genres:", ", ".join(hit.genres))
    print("  Tags:", ", ".join(hit.tags))
    print("  Status:", hit.write_status)
    print("  Released:", hit.release_date)
    print("  URL:", hit.url)

# Demonstrate typed error handling on a bad request.
try:
    client.microdramas.search(query="", limit=1).first()
except InputFormatInvalid as e:
    print("Expected error for empty query:", e.message)

print("exercised: microdramas.search")
All endpoints · 1 totalmissing one? ·

Searches GoodShort's English microdrama catalogue for a free-text keyword or content topic (for example a theme like 'revenge' or 'mafia', or part of a title) and returns one page of matching dramas, one record per drama, in the site's own relevance order. Each record carries the drama's id, title, alternative titles, author pseudonym, synopsis, cover image, public watch page URL, genre and tag names, episode count, completion status, view and library counts, release/last-episode timestamps and the first episode's duration in seconds. Pagination is caller-controlled through `page` and `page_size` (one upstream request per call, no auto-iteration); `total` and `total_pages` come from the site, which reports at most 500 matches for any keyword, and `has_more` is true while further pages exist. A keyword with no matches returns an empty `results` array with total 0 (a valid success). `release_date`, `aliases` and `labels` may be null/empty for some dramas. Dates are site-local timestamps formatted as `YYYY-MM-DD HH:MM:SS`.

Input
ParamTypeDescription
pageinteger1-based result page number. Omitted = first page.
queryrequiredstringFree-text keyword or content topic to search for, e.g. a theme, trope or part of a title.
page_sizeintegerNumber of dramas per page; values above 50 are clamped to 50.
Response
{
  "type": "object",
  "fields": {
    "page": "1-based page number returned (as reported by the site)",
    "query": "the search keyword that was applied",
    "total": "total matching dramas reported by the site (capped at 500 by the site)",
    "results": "array of drama records (fields below)",
    "has_more": "boolean, true while a later page exists",
    "page_size": "page size applied after clamping",
    "total_pages": "number of pages at the applied page_size, from the site",
    "results[].url": "public watch page URL on the site",
    "results[].tags": "array of topic/trope tag names",
    "results[].title": "drama title",
    "results[].author": "author/creator pseudonym",
    "results[].genres": "array of genre names",
    "results[].labels": "array of extra content labels the site attaches (often empty)",
    "results[].aliases": "array of alternative titles (may be empty)",
    "results[].book_id": "string drama identifier used in the site's watch page URL",
    "results[].language": "language code of the drama, e.g. ENGLISH",
    "results[].cover_url": "cover image URL",
    "results[].novel_type": "ORIGINAL or TRANSLATION as reported by the site",
    "results[].view_count": "integer raw view counter from the site",
    "results[].introduction": "synopsis text",
    "results[].release_date": "release timestamp YYYY-MM-DD HH:MM:SS or null",
    "results[].write_status": "site status code of the series, e.g. COMPLETE",
    "results[].episode_count": "integer number of episodes",
    "results[].in_library_count": "integer number of users who added it to their library",
    "results[].last_episode_time": "timestamp of the latest episode YYYY-MM-DD HH:MM:SS",
    "results[].view_count_display": "site's human-readable view count string",
    "results[].first_episode_duration_seconds": "integer length of episode 1 in seconds"
  },
  "sample": {
    "data": {
      "page": 2,
      "query": "revenge",
      "total": 500,
      "results": [
        {
          "url": "https://www.goodshort.com/drama/when-flowers-seek-revenge-31000974502",
          "tags": [
            "Family",
            "Revenge",
            "Strong Female Lead",
            "Family Reunion",
            "Comeback"
          ],
          "title": "When Flowers Seek Revenge",
          "author": "GINA",
          "genres": [
            "Romance"
          ],
          "labels": [],
          "aliases": [],
          "book_id": "31000974502",
          "language": "ENGLISH",
          "cover_url": "https://acf.goodshort.com/videobook/202503/cover-UAN6NijyIX.jpg",
          "novel_type": "ORIGINAL",
          "view_count": 527468,
          "introduction": "Nova was separated from her mother as a child and has been searching for years. Now a wealthy tycoon, she returns home, where her bullied mother suffers. Will her arrival transform her mother's fate?",
          "release_date": null,
          "write_status": "COMPLETE",
          "episode_count": 79,
          "in_library_count": 231082,
          "last_episode_time": "2025-08-08 23:10:12",
          "view_count_display": "1.6M",
          "first_episode_duration_seconds": 80
        }
      ],
      "has_more": true,
      "page_size": 5,
      "total_pages": 100
    },
    "status": "success"
  }
}

About the GoodShort API

What the API covers

The single search_microdramas endpoint searches GoodShort's catalogue of English short-form vertical dramas (microdramas). You supply a query string — a trope, theme, partial title, or content keyword such as 'revenge', 'mafia', or 'secret billionaire' — and the API returns matching dramas in the site's own relevance order. Results are capped at 500 total matching records as reported by the site.

Response fields

Each record in the results array includes title, tags (an array of topic/trope tag names), and url (the public watch page on GoodShort.com). The envelope includes total (total matching dramas, site-reported, capped at 500), has_more (boolean indicating whether a later page exists), page, page_size, total_pages, and the echoed query.

Pagination

Pagination is controlled by the page (1-based) and page_size parameters. page_size values above 50 are silently clamped to 50. To walk the full result set for a query, increment page until has_more is false or you have consumed total_pages pages. Because the site caps reported totals at 500, queries with very broad keywords may appear to have exactly 500 results even when more dramas exist.

Source notes

GoodShort specialises in vertical-format episodic dramas intended for mobile viewing. The catalogue covered is the English-language segment of the site. Non-English titles, if any exist on the platform, are not guaranteed to appear in results.

Reliability & maintenanceVerified

The GoodShort API is a managed, monitored endpoint for goodshort.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when goodshort.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official goodshort.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a microdrama discovery app that lets users filter by trope tags such as 'enemies to lovers' or 'fake marriage'
  • Aggregate GoodShort title metadata to track which drama themes are gaining catalogue volume over time
  • Generate a sitemap or content index of English-language microdramas for SEO or content research
  • Populate a recommendation engine with drama titles, tags, and watch URLs from the GoodShort catalogue
  • Research short-form video content trends by querying specific keywords and inspecting returned tag distributions
  • Cross-reference GoodShort drama titles against other streaming catalogues to identify platform-exclusive content
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does GoodShort have an official public developer API?+
GoodShort does not publish a documented public developer API. This Parse API is the practical way to query the catalogue programmatically.
What does the search_microdramas endpoint actually return for each drama?+
Each record returns the drama's title, an array of tags (topic and trope labels), and the url of the public watch page on GoodShort.com. The response envelope also includes total matching dramas (site-reported, capped at 500), has_more, page, page_size, and total_pages.
Can I retrieve episode-level details, cast information, or video stream URLs?+
Not currently. The API returns catalogue-level metadata: title, tags, and watch page URL per drama. Episode-level data, cast credits, and video stream URLs are not part of the current response. You can fork this API on Parse and revise it to add an endpoint that fetches those details from individual drama pages.
Why does my search sometimes show exactly 500 total results for broad queries?+
GoodShort's catalogue search caps the reported total at 500. Any query with very broad keywords — for example a single common trope — may hit that ceiling. The has_more flag and total_pages field are still accurate for the 500-result window, so pagination still works correctly up to that limit.
Can I browse or list all dramas in the catalogue without a specific keyword?+
The query parameter is required on every call, so open-catalogue browsing without a keyword is not supported. The API covers keyword- and theme-based search. You can fork it on Parse and revise it to add a browse or category-listing endpoint if you need full-catalogue enumeration.
Page content last updated . Spec covers 1 endpoint from goodshort.com.
Related APIs in Streaming VideoSee all →