# WEBTOON API

> WEBTOON returns public series details, listed episodes, and rankings as a workflow and API.

WEBTOON finds series by name and returns public details and newest listed episodes; language and episode count are optional. WEBTOON lists popular or trending series in ranking order; ranking is required, while language, genre, and result count are optional.

- Page: https://fous.com/tools/webtoon
- Handle: `@webtoon`
- Category: [Entertainment](https://fous.com/tools/category/entertainment)
- Source website: https://webtoons.com
- Last verified: Sep 29, 2026

## Methods

### Get series

Operation `get_series`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find a WEBTOON series by name, with public series details and newest publicly listed episodes. App-only episodes are excluded; the public site does not show numeric series ratings.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `series` | string | yes | `"Omniscient Reader"` | Series name, such as Lore Olympus. |
| `language` | string | no | `"Spanish"` | Language of the WEBTOON edition, such as English or Spanish. |
| `max_episodes` | integer | no | `12` | Maximum number of latest episodes to list, such as 10. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "series"
  ],
  "properties": {
    "series": {
      "type": "string",
      "minLength": 1,
      "description": "Series name, such as Lore Olympus.",
      "examples": [
        "Omniscient Reader",
        "Lore Olympus",
        "Wondrous - an aro/ace coming of age story"
      ]
    },
    "language": {
      "type": "string",
      "default": "English",
      "description": "Language of the WEBTOON edition, such as English or Spanish.",
      "examples": [
        "Spanish"
      ]
    },
    "max_episodes": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum number of latest episodes to list, such as 10.",
      "x-fous-developer": true,
      "examples": [
        12,
        2,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "series": "Omniscient Reader",
      "max_episodes": 12
    },
    {
      "series": "Lore Olympus"
    },
    {
      "series": "Wondrous - an aro/ace coming of age story",
      "max_episodes": 2
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `genre` | string or null | `"Action"` |  |
| `title` | string | `"Omniscient Reader"` |  |
| `rating` | number or null |  |  |
| `status` | string or null | `"ongoing"` |  |
| `authors` | array |  |  |
| `summary` | string or null | `"Dokja was an average office worker whose sole interest was reading his favorite web novel 'Three Ways to Survive the Ap` |  |
| `episodes` | array |  |  |
| `episodes[].date` | string or null | `"2026-06-01"` |  |
| `episodes[].link` | string | `"https://www.webtoons.com/en/action/omniscient-reader/episode-308/viewer?title_no=2154&episode_no=309"` |  |
| `episodes[].title` | string | `"Episode 308"` |  |
| `episodes[].like_count` | integer or null | `35955` |  |
| `episodes[].episode_number` | integer | `309` |  |
| `series_link` | string | `"https://www.webtoons.com/en/action/omniscient-reader/list?title_no=2154"` |  |
| `series_type` | string | `"WEBTOON Original"` |  |
| `total_views` | integer or null | `596600000` |  |
| `title_number` | integer | `2154` |  |
| `update_schedule` | string or null | `"Every Tuesday"` |  |
| `cover_image_link` | string or null | `"https://swebtoon-phinf.pstatic.net/20251108_229/17625507016773FMqp_JPEG/4) Thumb_Poster_2154.jpg?type=crop540_540"` |  |
| `subscriber_count` | integer or null | `4500000` |  |

**Example input**

```json
{
  "series": "Omniscient Reader",
  "max_episodes": 12
}
```

**Example output**

```json
{
  "genre": "Action",
  "title": "Omniscient Reader",
  "rating": null,
  "status": "ongoing",
  "authors": [
    "singNsong",
    "UMI",
    "Sleepy-C"
  ],
  "summary": "Dokja was an average office worker whose sole interest was reading his favorite web novel 'Three Ways to Survive the Apocalypse.' But when the novel suddenly becomes reality, he is the only person who…",
  "episodes": [
    {
      "date": "2026-06-01",
      "link": "https://www.webtoons.com/en/action/omniscient-reader/episode-308/viewer?title_no=2154&episode_no=309",
      "title": "Episode 308",
      "like_count": 35955,
      "episode_number": 309
    },
    {
      "date": "2026-05-25",
      "link": "https://www.webtoons.com/en/action/omniscient-reader/episode-307/viewer?title_no=2154&episode_no=308",
      "title": "Episode 307",
      "like_count": 34580,
      "episode_number": 308
    },
    {
      "date": "2026-05-18",
      "link": "https://www.webtoons.com/en/action/omniscient-reader/episode-306/viewer?title_no=2154&episode_no=307",
      "title": "Episode 306",
      "like_count": 35706,
      "episode_number": 307
    }
  ],
  "series_link": "https://www.webtoons.com/en/action/omniscient-reader/list?title_no=2154",
  "series_type": "WEBTOON Original",
  "total_views": 596600000,
  "title_number": 2154,
  "update_schedule": "Every Tuesday",
  "cover_image_link": "https://swebtoon-phinf.pstatic.net/20251108_229/17625507016773FMqp_JPEG/4) Thumb_Poster_2154.jpg?type=crop540_540",
  "subscriber_count": 4500000
}
```

### List rankings

Operation `list_rankings`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List popular or trending WEBTOON series in ranking order, with authors and displayed subscriber and view counts. Genre filtering keeps matching series from the public top 30; a ranking may return fewer than max_results.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `genre` | string | no | `"Romance"` | Genre to include, such as Romance, Fantasy, or Action; leave blank for all genres. |
| `ranking` | string | no | `"popular"` | Ranking to list, for example popular or trending. |
| `language` | string | no | `"English"` | Language of the WEBTOON ranking, such as English or Spanish. |
| `max_results` | integer | no | `5` | Maximum series to return, for example 20; the public ranking shows up to 30. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "genre": {
      "type": "string",
      "default": "",
      "description": "Genre to include, such as Romance, Fantasy, or Action; leave blank for all genres.",
      "examples": [
        "Romance",
        "Action"
      ]
    },
    "ranking": {
      "enum": [
        "popular",
        "trending"
      ],
      "type": "string",
      "default": "popular",
      "description": "Ranking to list, for example popular or trending.",
      "examples": [
        "popular",
        "trending"
      ]
    },
    "language": {
      "type": "string",
      "default": "English",
      "description": "Language of the WEBTOON ranking, such as English or Spanish.",
      "examples": [
        "English",
        "French"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum series to return, for example 20; the public ranking shows up to 30.",
      "x-fous-developer": true,
      "examples": [
        5,
        4,
        3
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "ranking": "popular",
      "language": "English",
      "max_results": 5
    },
    {
      "genre": "Romance",
      "ranking": "trending",
      "language": "English",
      "max_results": 4
    },
    {
      "genre": "Action",
      "ranking": "popular",
      "language": "French",
      "max_results": 3
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `series` | array |  |  |
| `series[].rank` | integer | `1` | Position in the overall ranking. |
| `series[].genre` | string | `"Fantasy"` |  |
| `series[].title` | string | `"Osora"` |  |
| `series[].authors` | array |  |  |
| `series[].view_count` | integer or null | `217900000` |  |
| `series[].series_link` | string | `"https://www.webtoons.com/en/fantasy/osora/list?title_no=6202"` |  |
| `series[].cover_image_link` | string or null | `"https://webtoon-phinf.pstatic.net/20260218_141/1771353364216xY7xm_JPEG/0Thumb_Poster_6202.jpg?type=q90"` |  |
| `series[].subscriber_count` | integer or null | `1700000` |  |

**Example input**

```json
{
  "ranking": "popular",
  "language": "English",
  "max_results": 5
}
```

**Example output**

```json
{
  "series": [
    {
      "rank": 1,
      "genre": "Fantasy",
      "title": "Osora",
      "authors": [
        "ToniRenea"
      ],
      "view_count": 217900000,
      "series_link": "https://www.webtoons.com/en/fantasy/osora/list?title_no=6202",
      "cover_image_link": "https://webtoon-phinf.pstatic.net/20260218_141/1771353364216xY7xm_JPEG/0Thumb_Poster_6202.jpg?type=q90",
      "subscriber_count": 1700000
    },
    {
      "rank": 2,
      "genre": "Romance",
      "title": "Tears on a Withered Flower",
      "authors": [
        "GAE"
      ],
      "view_count": 139400000,
      "series_link": "https://www.webtoons.com/en/romance/tears-on-a-withered-flower/list?title_no=8135",
      "cover_image_link": "https://webtoon-phinf.pstatic.net/20250625_81/1750809167593uDiAh_JPEG/Thumb_Poster_8135.jpg?type=q90",
      "subscriber_count": 1700000
    },
    {
      "rank": 3,
      "genre": "Fantasy",
      "title": "The Patron of Villains",
      "authors": [
        "LICO",
        "JOGEN",
        "Bom Han Bang-ul"
      ],
      "view_count": 17000000,
      "series_link": "https://www.webtoons.com/en/fantasy/the-patron-of-villains/list?title_no=9321",
      "cover_image_link": "https://webtoon-phinf.pstatic.net/20260116_54/1768529545749srvpX_JPEG/4) Thumb_Poster_9321.jpg?type=q90",
      "subscriber_count": 425088
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@webtoon",
  "visibility": "public",
  "operation": "get_series",
  "version": 1,
  "input": {
    "series": "Omniscient Reader",
    "max_episodes": 12
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@webtoon\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_series\",\n  \"version\": 1,\n  \"input\": {\n    \"series\": \"Omniscient Reader\",\n    \"max_episodes\": 12\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@webtoon",
  "visibility": "public",
  "operation": "get_series",
  "version": 1,
  "input": {
    "series": "Omniscient Reader",
    "max_episodes": 12
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/webtoon`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_series`: Get series. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_rankings`: List rankings. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-webtoon https://api.fous.com/mcp/tools/webtoon --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Find public details for a named series
- Review the newest listed episodes for a series
- Compare displayed views and subscribers across series
- Track popular or trending series by genre
- Build a list of series for a chosen language

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this WEBTOON tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a WEBTOON account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from webtoons.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What episodes are listed for a series?

Get series returns the newest publicly listed episodes and their dates, titles, links, like counts, and episode numbers. App-only episodes are excluded.

### Which series are popular or trending?

List rankings returns series in ranking order with displayed subscriber and view counts. Choose popular or trending and optionally filter by genre and language.

### What details are available for a series?

Get series returns public details such as genre, authors, summary, status, update schedule, views, and subscribers. The public site does not show numeric series ratings.

## Related

- [Crunchyroll API](https://fous.com/tools/crunchyroll.md): Crunchyroll provides anime streaming and release schedules, showing scheduled episodes for a selected week when available, plus public series details by name or link.
- [MyAnimeList API](https://fous.com/tools/myanimelist.md): MyAnimeList provides anime, manga, manhwa and light novel details, ratings, seasonal and top rankings; streaming follows its listings, and unannounced or unavailable details may be missing.
- [Netflix API](https://fous.com/tools/netflix.md): Netflix offers weekly global and country Top 10 rankings, all-time popularity rankings based on titles’ first 91 days, and title details with country availability that may lag.
- [TMDB API](https://fous.com/tools/tmdb.md): TMDB returns movie and TV details, cast, trailers, releases, viewing services, scheduled upcoming movies, and up to 20 homepage trending titles; future episode details depend on published schedules.
- [Bilibili API](https://fous.com/tools/bilibili.md): Bilibili provides public video details and statistics, plus current overall or category rankings; movie rankings omit some video details.
- [Listen Notes API](https://fous.com/tools/listen-notes.md): Listen Notes searches episodes and finds podcast rankings and publishing details in the first 50 public results; later pages require login, and details may be blank.
- [TVmaze API](https://fous.com/tools/tvmaze.md): TVmaze provides TV schedules, broadcast and streaming releases, and show status, ratings, and episode details; streaming times may be unavailable or shown in UTC.
- [Twitch API](https://fous.com/tools/twitch.md): Twitch returns channel profiles, live status, up to 10 broadcasts, top streams, viewer-ranked categories, up to 100 public videos/clips, and 1–30-day schedules; counts change.
- [All Entertainment tools](https://fous.com/tools/category/entertainment)
