MyAnimeList Scraper: Top Anime & Manga Data API avatar

MyAnimeList Scraper: Top Anime & Manga Data API

Pricing

from $8.00 / 1,000 anime or manga titles

Go to Apify Store
MyAnimeList Scraper: Top Anime & Manga Data API

MyAnimeList Scraper: Top Anime & Manga Data API

Export MyAnimeList top anime, manga and search results: scores, ranks, members, genres, synopsis and episode counts. No API key. USD 10 per 1,000 titles.

Pricing

from $8.00 / 1,000 anime or manga titles

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Features

Limited permissions

Share

MyAnimeList Scraper exports public MyAnimeList anime and manga records with MAL ID, title, English title, score, rank, popularity, member count, synopsis, genres, cover image and episode or chapter counts. It is built for anime apps, recommendation projects, data analysts and AI agents that need MyAnimeList data without registering an API client, and costs USD 10 per 1,000 titles on the FREE tier (USD 8 per 1,000 on GOLD).

It reads the same public pages a visitor sees: the top anime and top manga rankings, title search results and title detail pages. No MyAnimeList account, client ID or login is used.

What data does the MyAnimeList scraper return?

Each dataset row is one title, deduplicated by MAL ID and media type.

FieldWhat it contains
malId, mediaType, urlMyAnimeList ID, anime or manga, and the canonical title URL
title, titleEnglishMain (usually romanized) title and the English title when MAL lists one
scoreMAL user score, for example 9.24
rank, popularityScore rank and popularity rank
membersNumber of MAL members who added the title
synopsisFull synopsis text from the title page
genresGenres, themes and demographics, for example ["Adventure", "Drama", "Fantasy", "Shounen"]
imageUrlCover image URL on MAL's image host
episodesEpisode count for anime
chapters, volumesChapter and volume counts for manga; null when MAL shows "Unknown", as for ongoing series
statusAiring or publishing status, such as Finished Airing or Publishing (detail pages only)
sourceUrl, scrapedAtThe ranking, search or title page that produced the row, and the UTC retrieval time

The SUMMARY key-value record reports DATA, EMPTY, BLOCKED, FAILED or REJECTED, the delivered count and warnings. A challenge page or parser failure never creates a made-up title.

How do I export the MyAnimeList top anime list?

Use topAnime (the default) or topManga. Each ranking page holds 50 titles; maxPages reads up to 5 pages, and maxResults caps the output at 100 titles.

{ "mode": "topAnime", "maxResults": 20, "maxPages": 1, "includeDetails": true }

This default returned the top 20 anime on 2026-10-26 in about 72 seconds, led by Sousou no Frieren (score 9.24, rank 1). For the MyAnimeList top 100, set maxResults to 100 and maxPages to 2.

Set includeDetails to false for a faster listing-only export. Rows then keep MAL ID, title, score, rank, image and URL, while titleEnglish, popularity, members, synopsis, genres and counts are empty.

Can I search MyAnimeList anime and manga by title?

Yes. Use searchAnime or searchManga with a query. The Actor reads MAL's search results and then each title page.

{ "mode": "searchManga", "query": "Berserk", "maxResults": 5, "maxPages": 1 }

Japanese queries work too: a search for 進撃の巨人 returned Shingeki no Kyojin in a September 2026 test.

How do I scrape specific MyAnimeList title pages?

Use urls mode with 1 to 20 public myanimelist.net/anime/<id> or /manga/<id> URLs. URL mode always fetches the detail page.

{
"mode": "urls",
"startUrls": [
{ "url": "https://myanimelist.net/anime/1/Cowboy_Bebop" },
{ "url": "https://myanimelist.net/manga/2/Berserk" }
],
"maxResults": 2
}

When should I use it, and when not?

Use it when you need MyAnimeList scores, ranks and metadata as rows: seeding an anime database, tracking rank and member changes over time, building recommendation or trend dashboards, or giving an AI agent current MAL data.

Do not use it when:

  • You need a user's personal anime list, reviews, characters, staff or forum posts. This Actor does not collect them.
  • You need to write data back to MyAnimeList (update lists). That requires MyAnimeList's official authenticated API.
  • You need book metadata instead of manga: Goodreads Book Metadata Scraper.

Use it from an AI assistant

MyAnimeList Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/myanimelist-scraper, then ask, for example: "Get the top 50 anime on MyAnimeList with their scores, genres and member counts."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/myanimelist-scraper').call({
mode: 'topManga',
maxResults: 50,
maxPages: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((t) => `${t.rank}. ${t.title} (${t.score})`));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/myanimelist-scraper").call(
run_input={"mode": "searchAnime", "query": "Cowboy Bebop", "maxResults": 5}
)
for title in client.dataset(run.default_dataset_id).iterate_items():
print(title["malId"], title["title"], title["score"], title["members"])

What does the output look like?

Two rows from the 2026-10-26 default run, synopses truncated:

[
{
"mediaType": "anime",
"malId": 52991,
"url": "https://myanimelist.net/anime/52991",
"title": "Sousou no Frieren",
"titleEnglish": "Frieren: Beyond Journey's End",
"score": 9.24,
"rank": 1,
"popularity": 95,
"members": 1535333,
"synopsis": "During their decade-long quest to defeat the Demon King, the members of the hero's party...",
"genres": ["Adventure", "Award Winning", "Drama", "Fantasy", "Shounen"],
"imageUrl": "https://cdn.myanimelist.net/images/anime/1015/138006.jpg",
"status": "Finished Airing",
"episodes": 28,
"chapters": null,
"volumes": null,
"sourceUrl": "https://myanimelist.net/topanime.php?limit=0",
"scrapedAt": "2026-10-26T07:23:19.705Z"
},
{
"mediaType": "anime",
"malId": 5114,
"url": "https://myanimelist.net/anime/5114",
"title": "Fullmetal Alchemist: Brotherhood",
"titleEnglish": "Fullmetal Alchemist: Brotherhood",
"score": 9.11,
"rank": 2,
"popularity": 3,
"members": 3749681,
"synopsis": "After a horrific alchemy experiment goes wrong in the Elric household...",
"genres": ["Action", "Adventure", "Drama", "Fantasy", "Military", "Shounen"],
"imageUrl": "https://cdn.myanimelist.net/images/anime/1208/94745.jpg",
"status": "Finished Airing",
"episodes": 64,
"sourceUrl": "https://myanimelist.net/topanime.php?limit=0",
"scrapedAt": "2026-10-26T07:23:21.347Z"
}
]

Pricing: how much does MyAnimeList data cost?

The Actor uses pay-per-event pricing. Platform usage is included in the event prices, and empty or blocked runs charge no title events.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Anime or manga title (one dataset row)USD 0.010USD 0.00975USD 0.0095USD 0.008
Actor start (per started GB of allocated memory)USD 0.005USD 0.005USD 0.005USD 0.005

Worked totals on the FREE tier at the default 256 MB memory (one start event):

  • Default run, 20 titles: 20 × USD 0.010 + USD 0.005 = USD 0.205
  • Top 100: 100 × USD 0.010 + USD 0.005 = USD 1.005

A run needs a total-charge limit of at least USD 0.015 (one title plus the start fee); a lower limit is rejected before any request.

What are the limits?

  • 100 titles per run, 5 ranking or search pages, 20 URLs in URL mode.
  • Pacing: requests are sequential with a short pause between them, so a 20-title detail run takes about a minute.
  • status comes from the title page, so it is null when includeDetails is off.
  • Blocking: if MyAnimeList answers with HTTP 403/429 or a challenge page, the run stops after three blocked pages and reports BLOCKED with no invented rows.

FAQ

Do I need a MyAnimeList API key or client ID?

No. The Actor reads public MyAnimeList pages, so you only need an Apify account. The official MyAnimeList API needs a registered client ID; this Actor does not use it.

Is MyAnimeList data free?

The pages are public, but this Actor charges per title delivered (USD 0.01 on the FREE tier). Check MyAnimeList's terms before republishing the data.

Does it scrape user anime lists or reviews?

No. It covers rankings, search results and title pages only.

Why are some fields null?

MyAnimeList did not show a value (for example no English title, or "Unknown" chapters for an ongoing manga), or listing-only mode skipped the detail page.

Can it track rank changes over time?

Yes. Schedule the same ranking run daily or weekly on Apify and compare rank, score and members across datasets.

Are cover images downloaded?

No. imageUrl links to the image on MyAnimeList's host; images remain the rights holders' property.

Entertainment and media metadata from the same developer:

MyAnimeList Scraper collects public pages without logging in or bypassing access controls. MyAnimeList data and images belong to MyAnimeList and the rights holders; review MyAnimeList's terms and obtain any rights you need before redistributing data or images. This Actor is independent of MyAnimeList.

Last verified: 2026-10-27