MyDramaList APImydramalist.com ↗
Search thousands of Asian dramas and retrieve cast, ratings, genres, airing details, and rankings from MyDramaList via two structured endpoints.
What is the MyDramaList API?
The MyDramaList API provides 2 endpoints to search and retrieve structured data from MyDramaList's catalog of Korean, Japanese, Chinese, Taiwanese, Thai, and Hong Kong dramas. The search_dramas endpoint accepts keyword queries, country filters, year ranges, and sort orders, returning paginated results with titles, ratings, rankings, and synopses. The get_drama_details endpoint delivers per-title data including score, genres, cast credits, airing schedule, tags, and country of origin.
curl -X GET 'https://api.parse.bot/scraper/4ec819e7-aa12-4c2b-9ca3-33655632d102/search_dramas?page=1&sort=top&query=romance&country=South+Korea&year_end=2025&year_start=2024' \ -H 'X-API-Key: $PARSE_API_KEY'
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 mydramalist-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.
from parse_apis.mydramalist_api import MyDramaList, Sort, DramaSummary, Drama
client = MyDramaList()
# Search for top-rated Korean dramas from 2024
for drama_summary in client.dramasummaries.search(
query="romance",
country="South Korea",
sort=Sort.TOP,
year_start=2024,
year_end=2025,
limit=5,
):
print(drama_summary.title, drama_summary.rating, drama_summary.ranking)
# Get full details for each drama
full = drama_summary.details()
print(full.title, full.score, full.genres, full.original_network)
Search for dramas on MyDramaList with filters for country, year range, and sorting. Returns paginated results with title, rating, ranking, metadata, and synopsis for each drama. Results default to South Korea and Japan when no country filter is provided. Paginates via integer page number.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| query | string | Search keyword to filter dramas by title or content. |
| country | string | Comma-separated country names or numeric IDs. Accepted names: 'South Korea', 'Japan', 'China', 'Taiwan', 'Thailand', 'Hong Kong'. Omit to search across South Korea and Japan by default. |
| year_end | integer | End year for the release date range filter. |
| year_start | integer | Start year for the release date range filter. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"results": "array of drama summary objects with keys: title, url, id, ranking, metadata, rating, synopsis",
"has_next": "boolean, whether more pages are available"
},
"sample": {
"data": {
"page": 1,
"results": [
{
"id": "735043-life",
"url": "https://mydramalist.com/735043-life",
"title": "When Life Gives You Tangerines",
"rating": "9.3",
"ranking": "#7",
"metadata": "Korean Drama - 2025, 16 episodes",
"synopsis": "It is a story that resembles a tribute to our parents' tender and still youthful seasons..."
}
],
"has_next": true
},
"status": "success"
}
}About the MyDramaList API
Search Endpoint
The search_dramas endpoint accepts up to six parameters: query for keyword filtering, country as a comma-separated list of country names or numeric IDs (supporting South Korea, Japan, China, Taiwan, Thailand, and Hong Kong), year_start and year_end for release-date range filtering, sort to order results by top, popular, newest, upcoming, or updated, and page for pagination. Each response includes the current page number, a has_next boolean indicating whether additional pages exist, and a results array where each drama object carries title, url, id, ranking, metadata, rating, and synopsis.
Drama Details Endpoint
The get_drama_details endpoint takes a single required parameter: drama_id, which can be either a slug (e.g., goblin-13045) or a full MyDramaList URL. The response returns a flat object with fields including title, score, ranked, country, type, genres (as an array), tags (comma-separated string), aired (date range), aired_on (days of week), director, and synopsis. This makes it straightforward to retrieve all key metadata for a known title in a single call.
Coverage and Data Shape
The API covers six Asian drama-producing regions. Country filtering in search_dramas accepts both human-readable names and numeric IDs, giving flexibility when building region-specific queries. The get_drama_details response includes both structured fields like genres array and semi-structured fields like tags as a comma-separated string, so consumers should plan for light parsing on the tags field.
The MyDramaList API is a managed, monitored endpoint for mydramalist.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mydramalist.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 mydramalist.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a recommendation engine that filters dramas by country and year range using
search_dramasparameters. - Populate a drama database with per-title metadata by iterating
search_dramaspages and callingget_drama_detailsfor each result. - Display genre-specific browsing lists by querying
search_dramassorted bytoporpopularfor a given region. - Show airing schedules in a calendar app using the
airedandaired_onfields fromget_drama_details. - Surface director filmographies by collecting the
directorfield across multipleget_drama_detailsresponses. - Track ranking changes over time by periodically fetching
rankingandscorefor a watchlist of drama IDs. - Build a search autocomplete or title-lookup tool using the
queryparameter ofsearch_dramas.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does MyDramaList have an official developer API?+
What does `search_dramas` return and how granular is the filtering?+
results array includes title, url, id, ranking, metadata, rating, and synopsis. Filtering supports country (by name or numeric ID), a year_start/year_end date range, a query keyword, and five sort modes. Pagination is handled via the page parameter and the has_next boolean in the response.Does `get_drama_details` include cast member names and roles?+
director field. Full structured cast arrays with individual actor names and character roles are not explicitly broken out as separate response fields in the current schema. You can fork this API on Parse and revise it to add a dedicated cast endpoint or extend the response shape.Does the API cover user reviews or episode-level data?+
Is there a limitation on how many results `search_dramas` returns per page?+
has_next boolean to indicate whether additional pages exist. The number of results per page is fixed by the source and is not a configurable parameter. Callers should iterate using the page parameter until has_next is false.