MyAnimeList API: List top anime
Lists 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.
Unofficial. Not affiliated with or endorsed by MyAnimeList.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- List optional
list Ranking to list, for example movies.
upcoming
One of
all,airing,upcoming,tv,movies,most_popular. Defaultall.- Max Results optional
max_results Number of anime to return, for example 50 (up to 200).
55
Whole number from 1 to 200. Default
50.
Input as JSON
{ "list": "upcoming", "max_results": 55}Output
{ "anime": [ { "link": "https://myanimelist.net/anime/61987/Kusuriya_no_Hitorigoto_3rd_Season" , "rank": 1, "type": "TV", "score": null, "title": "Kusuriya no Hitorigoto 3rd Season", "members": 157773, "episodes": null, "aired_dates": "Oct 2026 -", "english_title": "The Apothecary Diaries Season 3" }, { "link": "https://myanimelist.net/anime/62516/Dandadan_3rd_Season" , "rank": 2, "type": "TV", "score": null, "title": "Dandadan 3rd Season", "members": 144444, "episodes": null, "aired_dates": "2027 -", "english_title": "Dan Da Dan Season 3" }, { "link": "https://myanimelist.net/anime/61990/Cyberpunk__Edgerunners_2" , "rank": 3, "type": "ONA", "score": null, "title": "Cyberpunk: Edgerunners 2", "members": 123380, "episodes": 10, "aired_dates": "Oct 2026 -", "english_title": null } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"myanimelist.net/list_top_anime","input":{"list":"upcoming","max_results":55}}' # 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/list_top_anime" , "input": { "list": "upcoming", "max_results": 55 }})# 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/list_top_anime" , "input": { "list": "upcoming", "max_results": 55 } }), 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/list_top_anime# with {"list":"upcoming","max_results":55}"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": [], "properties": { "list": { "enum": [ "all", "airing", "upcoming", "tv", "movies", "most_popular" ], "type": "string", "default": "all", "description": "Ranking to list, for example movies." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Number of anime to return, for example 50 (up to 200)." } }}Output schema
{ "type": "object", "required": [ "anime" ], "properties": { "anime": { "type": "array", "items": { "type": "object", "required": [ "rank", "title", "english_title", "score", "type", "episodes", "aired_dates", "members", "link" ], "properties": { "link": { "type": "string" }, "rank": { "type": "integer" }, "type": { "type": [ "string", "null" ] }, "score": { "type": [ "number", "null" ], "description": "Score out of 10." }, "title": { "type": "string" }, "members": { "type": [ "integer", "null" ] }, "episodes": { "type": [ "integer", "null" ] }, "aired_dates": { "type": [ "string", "null" ], "description": "Airing dates as displayed by MyAnimeList." }, "english_title": { "type": [ "string", "null" ] } }, "additionalProperties": false }, "description": "Anime in ranking order." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
myanimelist.net/list_top_anime- Returns
- rank, title, English title, score, type, episodes, aired dates, members, 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/list_top_anime with the inputs above.
Ask your agent
- What are the 10 highest-ranked anime movies on MyAnimeList right now, with their scores?
- Show me the top 25 currently airing anime by rating, including episode counts and member numbers
- I need a list of the 100 most popular anime of all time, ranked by member count
- Which upcoming anime are ranked highest on MyAnimeList? Give me the top 30 with their air dates
- Pull the top 200 TV anime series in rank order with English titles, scores and links
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 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_animeGets 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.
myanimelist.net/get_mangaLists the current Bilibili ranking overall or in a selected category, in rank order. The Movies ranking does not provide uploader, likes, length or BV numbers.
bilibili.com/list_popular_videosLists 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_rankingsLists titles in an IMDb movie or TV chart (Top 250 movies, Top 250 TV shows, most popular movies or TV shows) with ratings, votes, runtime, age rating and weekly rank movement for popularity charts. Popular charts contain up to 100 titles.
imdb.com/list_top_chartsLists Letterboxd films in popularity order for a week, month, year or all time, optionally filtered by genre and decade. Ratings and posters may be unavailable for some films.
letterboxd.com/list_popular_filmsLists Fandango movies now playing or coming soon in U.S. theaters, in Fandango's order, with release dates, age ratings, runtimes and Rotten Tomatoes scores when shown.
fandango.com/list_now_playing