Webtoons APIwebtoons.com ↗
Access Webtoons series details, episode image URLs, genre rankings, trending lists, and Canvas creator data via a structured JSON API with 10 endpoints.
What is the Webtoons API?
This API provides structured access to webtoons.com across 10 endpoints, covering series metadata, episode listings, viewer image URLs, genre browsing, and ranked charts. The get_episode_viewer endpoint returns the full ordered array of panel image URLs for any episode, identified by title_no and episode_no. Whether you need search results across Originals and Canvas, paginated episode history, or daily trending data, every response is normalized JSON.
curl -X GET 'https://api.parse.bot/scraper/fcd75949-6f0e-4c1d-8bd2-0bcdddad5e90/search_series?type=ALL&query=Tower+of+God' \ -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 webtoons-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.webtoon_scraper_api import Webtoon, SeriesType, Sort, RankingType
client = Webtoon()
# Search for series by keyword, filtering to Originals only
for result in client.seriessummaries.search(query="Tower of God", type=SeriesType.ORIGINALS):
print(result.title, result.author, result.title_no)
# Navigate from search result to full series details
series = result.details()
print(series.synopsis, series.stats.views, series.stats.subscribers)
# Browse the series' episodes (auto-paginates)
for episode in series.episodes.list(limit=5):
print(episode.title, episode.release_date, episode.episode_no)
# View a specific episode's images
viewer = series.view_episode(episode_no="1")
print(viewer.episode_title, viewer.series_title)
for img_url in viewer.images[:3]:
print(img_url)
break
# Browse fantasy genre series sorted by likes
for gs in client.genreserieses.browse(genre="fantasy", sort_order=Sort.LIKES, limit=5):
print(gs.title, gs.author, gs.likes_or_views)
# Check current rankings
for ranked in client.rankedserieses.list(type=RankingType.POPULAR, limit=3):
print(ranked.rank, ranked.title, ranked.genre, ranked.likes)
# List available genres
for genre in client.genres.list():
print(genre.name, genre.id)
Full-text search over webtoons.com series by keyword. Returns matching Originals and Canvas series with title, author, genre, thumbnail, and identifiers. Filter by type to narrow to Originals or Canvas only. Results are not paginated — a single page of matches is returned.
| Param | Type | Description |
|---|---|---|
| type | string | Filter by series type |
| queryrequired | string | Search keyword |
{
"type": "object",
"fields": {
"query": "string - the search keyword used",
"results": "array of series objects with title, author, genre, thumbnail, title_no, url, type"
},
"sample": {
"data": {
"query": "Tower of God",
"results": [
{
"url": "https://www.webtoons.com/en/fantasy/tower-of-god/list?title_no=95",
"type": "ORIGINALS",
"genre": "",
"title": "Tower of God",
"author": "SIU",
"title_no": "95",
"thumbnail": "https://webtoon-phinf.pstatic.net/20250204_46/17386458444547o1b2_JPEG/95.jpg?type=q90"
}
]
},
"status": "success"
}
}About the Webtoons API
Series Discovery and Search
The search_series endpoint accepts a query string and an optional type filter (ALL, ORIGINALS, or CANVAS), returning an array of series objects each containing title, author, genre, thumbnail, title_no, and url. The title_no field is the key identifier used across all other endpoints. To retrieve deeper metadata — synopsis, banner, stats (views, subscribers, update schedule) — pass title_no along with optional genre and slug path parameters to get_series_details.
Episode Access
get_episode_list returns paginated episodes for a series, newest first, with each episode object exposing episode_no, title, release_date, like_count, thumbnail, and url. The has_next_page boolean tells you whether further pages exist. Once you have an episode_no, pass it with title_no to get_episode_viewer to retrieve the ordered images array of panel URLs alongside series_title and episode_title.
Genre and Rankings Browsing
get_genres returns the full list of genre objects with name and id. Use a genre slug from that response with get_series_by_genre, which supports sort_order values of POPULARITY, LIKES, or DATE and returns series with title, author, likes_or_views, and title_no. The get_rankings endpoint adds rank, trend_direction, and trend_value fields, and accepts optional type (popular, trending, originals, canvas) and genre filters.
Originals, Canvas, and Trending
get_originals_series returns the full Originals catalog with schedule (the update day), genre, likes, and title_no for each entry. get_canvas_series covers user-created indie series and accepts a lowercase genre filter. get_trending_series returns the homepage trending list with rank_change per series, useful for detecting momentum shifts without constructing ranking diffs manually.
The Webtoons API is a managed, monitored endpoint for webtoons.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when webtoons.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 webtoons.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 webtoon recommendation engine using genre, likes, and subscriber counts from
get_series_details - Archive episode panel images in order using the
imagesarray fromget_episode_viewer - Track ranking momentum by monitoring
trend_directionandtrend_valuefromget_rankingsover time - Index the full Canvas catalog by genre using
get_canvas_serieswith the lowercasegenrefilter - Surface daily update schedules for Originals series using the
schedulefield fromget_originals_series - Detect trending breakouts by comparing
rank_changevalues fromget_trending_seriesacross polling intervals - Power a series search feature that distinguishes Originals from Canvas using the
typefield insearch_seriesresults
| 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 Webtoons have an official developer API?+
What does `get_episode_viewer` return, and what inputs does it require?+
get_episode_viewer requires title_no and episode_no as mandatory parameters, with slug, genre, and ep_slug as optional path helpers. It returns the viewer page url, an ordered images array of panel image URL strings, series_title, and episode_title. The images array reflects the full reading sequence for that episode.Does `get_series_by_genre` cover Canvas series or only Originals?+
get_series_by_genre returns Originals series only. Canvas series can be browsed with get_canvas_series, which accepts a lowercase genre filter. You can fork this API on Parse and revise it to add a combined endpoint that merges both result sets under a single genre query.Are comment threads or individual reader reviews accessible through the API?+
How does pagination work for episode lists, and are there any known limits?+
get_episode_list accepts an integer page parameter and returns a has_next_page boolean so you can walk through the full history incrementally. Episodes are ordered newest to oldest. Very long-running series with hundreds of episodes will require multiple page requests to retrieve the complete list.