# 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/workflows/webtoon
- Handle: `@webtoon`
- Category: [Entertainment](https://fous.com/workflows/category/entertainment)
- Source website: https://webtoons.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with WEBTOON.

## Methods

### Get series

Operation `get_series`, version 1. 1 credit per call.

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 call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@webtoon","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with WEBTOON?

No. Fous is not affiliated with WEBTOON. This workflow reads the public webtoons.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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 workflows](https://fous.com/workflows/category/entertainment)
