MyAnimeList Scraper: Top Anime & Manga Data API
Pricing
from $8.00 / 1,000 anime or manga titles
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Features
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.
| Field | What it contains |
|---|---|
malId, mediaType, url | MyAnimeList ID, anime or manga, and the canonical title URL |
title, titleEnglish | Main (usually romanized) title and the English title when MAL lists one |
score | MAL user score, for example 9.24 |
rank, popularity | Score rank and popularity rank |
members | Number of MAL members who added the title |
synopsis | Full synopsis text from the title page |
genres | Genres, themes and demographics, for example ["Adventure", "Drama", "Fantasy", "Shounen"] |
imageUrl | Cover image URL on MAL's image host |
episodes | Episode count for anime |
chapters, volumes | Chapter and volume counts for manga; null when MAL shows "Unknown", as for ongoing series |
status | Airing or publishing status, such as Finished Airing or Publishing (detail pages only) |
sourceUrl, scrapedAt | The 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 ApifyClientclient = 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.
| Event | FREE | BRONZE | SILVER | GOLD / PLATINUM / DIAMOND |
|---|---|---|---|---|
| Anime or manga title (one dataset row) | USD 0.010 | USD 0.00975 | USD 0.0095 | USD 0.008 |
| Actor start (per started GB of allocated memory) | USD 0.005 | USD 0.005 | USD 0.005 | USD 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.
statuscomes from the title page, so it isnullwhenincludeDetailsis off.- Blocking: if MyAnimeList answers with HTTP 403/429 or a challenge page, the run stops after three blocked pages and reports
BLOCKEDwith 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.
Related Actors
Entertainment and media metadata from the same developer:
- Goodreads Book Metadata Scraper for book titles, authors and ratings
- Manga Colorizer for coloring manga and comic pages
Legal and compliance
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