MyAnimeList API: Get manga
Gets a manga, manhwa or light novel from MyAnimeList by title or by MyAnimeList link. When several entries share the top result's title, it returns the most popular one.
Unofficial. Not affiliated with or endorsed by MyAnimeList.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Manga, required
manga Manga title in English or Japanese, or a MyAnimeList manga link, for example Solo Leveling or https://myanimelist.net/manga/13/One_Piece.
Solo Leveling
Input as JSON
{ "manga": "Solo Leveling"}Output
{ "rank": 146, "type": "Manhwa", "score": 8.54, "title": "Solo Leveling", "genres": [ "Action", "Adventure", "Fantasy" ], "status": "Finished", "themes": [ "Adult Cast", "Urban Fantasy" ], "authors": [ "Chugong", "Jang, Sung-rak", "Disciples" ], "members": 630240, "volumes": 15, "chapters": 201, "synopsis": "Ten years ago, \"the Gate\" appeared and connected the real world with the realm of magic and monsters. To combat these vile beasts, ordinary people received superhuman powers and became known as \"Hunters.\" Twenty-year-old Sung Jin-Woo is one such Hunter, but he is known as the \"World's Weakest,\" owin…", "published_to": "2023-05-31", "english_title": "Solo Leveling", "serialization": [ "KakaoPage" ], "japanese_title": "나 혼자만 레벨업", "myanimelist_id": 121496, "published_from": "2018-03-04", "popularity_rank": 5, "cover_image_link": "https://cdn.myanimelist.net/images/manga/3/222295.jpg" , "myanimelist_link": "https://myanimelist.net/manga/121496/Solo_Leveling" , "number_of_scorers": 376538}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"myanimelist.net/get_manga","input":{"manga":"Solo Leveling"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "myanimelist.net/get_manga" , "input": { "manga": "Solo Leveling" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "myanimelist.net/get_manga" , "input": { "manga": "Solo Leveling" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run myanimelist.net/get_manga# with {"manga":"Solo Leveling"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "manga" ], "properties": { "manga": { "type": "string", "description": "Manga title in English or Japanese, or a MyAnimeList manga link, for example Solo Leveling or https://myanimelist.net/manga/13/One_Piece." } }}Output schema
{ "type": "object", "required": [ "title", "myanimelist_link", "myanimelist_id", "authors", "serialization", "genres", "themes" ], "properties": { "rank": { "type": [ "integer", "null" ] }, "type": { "type": [ "string", "null" ] }, "score": { "type": [ "number", "null" ] }, "title": { "type": [ "string", "null" ] }, "genres": { "type": "array", "items": { "type": "string" } }, "status": { "type": [ "string", "null" ] }, "themes": { "type": "array", "items": { "type": "string" } }, "authors": { "type": "array", "items": { "type": "string" } }, "members": { "type": [ "integer", "null" ] }, "volumes": { "type": [ "integer", "null" ] }, "chapters": { "type": [ "integer", "null" ] }, "synopsis": { "type": [ "string", "null" ] }, "published_to": { "type": [ "string", "null" ] }, "english_title": { "type": [ "string", "null" ] }, "serialization": { "type": "array", "items": { "type": "string" } }, "japanese_title": { "type": [ "string", "null" ] }, "myanimelist_id": { "type": [ "integer", "null" ] }, "published_from": { "type": [ "string", "null" ] }, "popularity_rank": { "type": [ "integer", "null" ] }, "cover_image_link": { "type": [ "string", "null" ] }, "myanimelist_link": { "type": [ "string", "null" ] }, "number_of_scorers": { "type": [ "integer", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
myanimelist.net/get_manga- Returns
- titles, type, status, score, ranks, members, volumes, chapters, dates, authors, serialization, genres, themes, synopsis, cover, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method myanimelist.net/get_manga with the inputs above.
Ask your agent
- What's the current score, rank, and chapter count for the manga Berserk?
- Can you pull up the author, serialization magazine, and genres for Vagabond?
- I need the synopsis and cover image for the light novel Mushoku Tensei on myanimelist.net.
- How many volumes has Chainsaw Man released, and what is its publication status?
- Show me the member count and start date for https://myanimelist.net/manga/2/Berserk
See more
All MyAnimeList methodsLooks up an anime on MyAnimeList by English or Japanese name, or by a MyAnimeList anime link. For ambiguous names it returns the most popular match.
myanimelist.net/get_animeLists MyAnimeList's top anime in rank order for a selected ranking (all, airing, upcoming, TV, movies or most popular), with English title, score, type, episodes, airing dates and members.
myanimelist.net/list_top_animeLists anime in a MyAnimeList season sorted by members, with scores, episode counts, studio, genres and links. Continuing TV series are optional.
myanimelist.net/list_seasonal_animeFinds the most popular anime matching a name on AniList and returns its next scheduled episode with local air time, status, episode count and streaming links.
anilist.co/get_next_episodeGets public Crunchyroll series details by series name or series link; matches a series title rather than a movie.
crunchyroll.com/get_seriesFinds a WEBTOON series by name and returns its public details and newest publicly listed episodes. App-only episodes are excluded, and the public site shows no numeric rating.
webtoons.com/get_seriesLists upcoming AniList anime episodes ordered by air time, with air times in the chosen time zone and available streaming links.
anilist.co/get_airing_scheduleLists 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.
webtoons.com/list_rankings