AniList Anime & Manga Scraper - Scores, Charts, Full Metadata avatar

AniList Anime & Manga Scraper - Scores, Charts, Full Metadata

Pricing

from $1.80 / 1,000 anime or manga records

Go to Apify Store
AniList Anime & Manga Scraper - Scores, Charts, Full Metadata

AniList Anime & Manga Scraper - Scores, Charts, Full Metadata

Scrape AniList anime and manga: titles (romaji/English/native), scores, popularity, favourites, genres, studios, airing schedule, synopses, charts (trending, popular, top-rated, most-favourited), keyword search and URL/ID lookup.

Pricing

from $1.80 / 1,000 anime or manga records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

AniList Scraper: Anime & Manga Scores, Charts & Full Metadata

AniList Scraper turns AniList into structured anime and manga data. Search by keyword, pull ranked charts (trending, popular, top rated, most favourited), or paste AniList links or ids, and get titles in romaji, English and native script, scores, popularity, favourites, genres, studios, format, status, episode and chapter counts, airing schedule and a cleaned synopsis. Export to JSON, CSV or Excel, or read the results straight through the API.

Why This Scraper?

  • Three ways to find media. Keyword search (multiple terms merged and de-duplicated), curated charts, or paste AniList links or bare numeric ids. No need to build URLs by hand.
  • Anime and manga in one actor. Switch media type and every mode, search, charts and URL lookup, adapts automatically.
  • Rich per-title records. Romaji, English and native titles, average and mean score, popularity, favourites, genres, main studios, format, status, episode/chapter/volume counts, season and air dates, next-airing episode with timestamp, cover art, banner image and a cleaned (HTML-stripped) synopsis.
  • Curated charts on demand. Trending now, most popular, top rated, or most favourited, for anime or manga separately.
  • Adult content off by default. Search and chart results exclude adult titles unless you turn it on.
  • Built for schedules. Incremental mode returns only new, updated and reappeared records on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
  • Resume large pulls. Continue an interrupted run from its run or dataset id without paying twice for records it already collected.

Use Cases

  • Anime/manga database and app builders: gather full catalog records, scores, popularity and studio credits to populate a browsable site or app.
  • Trend and release tracking: watch the trending and most-favourited charts to catch what is rising, and use next-airing episode data for release calendars.
  • Recommendation engines and scouting: combine genres, studios, scores and favourites across many titles for similarity or ranking models.
  • Fan wikis and content sites: pull synopses, cover art and metadata to populate season guides, reviews or news posts.
  • Market and licensing research: monitor score and popularity movement for specific titles over time with incremental mode.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
id999001
idMal888001
urlAniList link to the anime or manga
titleRomaji / titleEnglish / titleNative"Sample Romaji Title" / "Sample English Title" / "サンプルタイトル"
format"TV" (also "MOVIE", "OVA", "ONA", "MANGA", "NOVEL", and more)
status"FINISHED" (also "RELEASING", "NOT_YET_RELEASED", "CANCELLED", "HIATUS")
episodes / chapters / volumes24 / null / null (anime carries episodes, manga carries chapters and volumes)
durationMin23
averageScore / meanScore78 / 77
popularity / favourites45000 / 9000
genres["Fantasy", "Adventure"]
countryOfOrigin"JP"
isAdultfalse
descriptioncleaned synopsis text, HTML tags stripped
season / seasonYear"SPRING" / 2025
startDate / endDate"2025-04-01" / "2025-09-20"
studios["Sample Studio"]
nextAiringEpisode / nextAiringAt5 / 1750000000 (null once a series has finished)
coverImagecover art URL
bannerImagebanner image URL (may be empty for some titles)

When Incremental mode is on, every record also carries changeType (NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED), changedFields, firstSeenAt and lastSeenAt.

How to Use

  1. Pick a mode: search (by keyword), charts (ranked list), or url (paste AniList links or ids).
  2. Set Media type (anime or manga) and fill in the fields for that mode.
  3. Set Max records and Max pages to control run size and cost (search and charts modes; URL mode always looks up every link you paste).
  4. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

Search for anime by keyword:

{
"mode": "search",
"mediaType": "ANIME",
"searchTerms": ["sample title"],
"maxMedia": 10
}

Top-rated manga chart:

{
"mode": "charts",
"mediaType": "MANGA",
"chartKind": "TOP_RATED",
"maxMedia": 20
}

Paste AniList links or ids:

{
"mode": "url",
"urls": ["https://anilist.co/anime/999001", "888002"]
}

Daily monitoring of a trending chart, changes only:

{
"mode": "charts",
"chartKind": "TRENDING",
"incrementalMode": true,
"stateKey": "trending-anime-watch"
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/anilist-anime-manga-scraper").call(run_input={"mode": "search", "searchTerms": ["sample title"], "maxMedia": 10})
for media in client.dataset(run["defaultDatasetId"]).iterate_items():
print(media["titleRomaji"], media["averageScore"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/anilist-anime-manga-scraper').call({ mode: 'search', searchTerms: ['sample title'], maxMedia: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How Max records and Max pages shape a run

Max records (maxMedia) stops the run once this many records have been returned (0 = no limit; default 25). Max pages (maxPages) caps how many pages are walked per search term or chart (50 records per page; 0 = no limit, the default). A search with several terms walks each term as its own scope, so a low Max pages value limits every term individually, not the run as a whole. In URL mode neither limit applies: every pasted link or id is looked up and returned, so the size of your list sets the size (and cost) of the run.

Include adult media (includeAdult) switches the search and chart filter rather than widening it: with it on, search and chart results contain adult titles only. URL mode does not apply this filter at all, so a pasted link to an adult title is returned either way.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips everything already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for running the same search, chart or URL list again and again (for example daily) and getting only what changed. Each record is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that was not resumed, hit no cap and reached the end of every tracked term or chart, and only with emitExpired on; see the tips below). stateKey names or shares the stored state. With Incremental mode off, output is exactly as before.

Tip: Turning on Emit expired does not cap EXPIRED rows at Max records. Max records only stops the live search or chart walk; once that walk finishes cleanly, with no cap hit and every tracked term or chart fully read, every previously tracked record that no longer appears is written as EXPIRED in that same run, and that batch is not limited by Max records. On a broad or long-running monitoring scope this can occasionally return far more rows than Max records specifies. Keep the tracked search terms narrow, or split monitoring across separate State key values, to keep any one cleanup batch smaller.

Tip: Combining Resume with Incremental mode on the same run correctly skips re-pushing (and re-billing) records the resumed run already collected, but those skipped records are not added to the incremental baseline that gets saved. The next scheduled incremental run, without Resume, does not recognize any of them that were not already in the baseline from an earlier incremental run, and will emit and bill them again as NEW. If you use Resume to catch up a large pull, expect one extra NEW pass on the following incremental run, or start incremental monitoring from a plain run (no Resume) so the baseline is complete from the first pass.

Tip: With Emit expired on, a record can occasionally be marked EXPIRED even though it still exists. In URL mode, a link whose lookup fails (for example a refused or timed-out request) is treated as no longer found rather than as an unfinished run, so that record is returned as EXPIRED; in search and charts modes, a result page that comes back empty partway through a term or chart is treated as the end of that list, so the records that would have followed are returned as EXPIRED. Either way the record is billed as an EXPIRED row, and the next run that finds it again returns and bills it as REAPPEARED. If you rely on EXPIRED rows, confirm a record's absence on a second run before acting on it.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch, charts, or url.
mediaTypestringANIMEANIME or MANGA. Applies to search, charts and URL modes.
searchTermsarray["frieren"]Keywords to search for (search mode). Each term is searched separately; results are merged and de-duplicated.
chartKindstringTRENDINGTRENDING, POPULAR, TOP_RATED, or FAVOURITES (charts mode).
urlsarray(none; prefilled with one sample link)AniList media links or bare numeric ids (URL mode).
maxMediainteger25Stop after this many media records (0 = no limit).
maxPagesinteger0Cap on pages walked per search term or chart (50 records per page; 0 = no limit).
includeAdultbooleanfalseOff by default; adult media is excluded from results.
resumeFromRunIdstring(none)Paste a previous run ID or dataset ID to continue a large pull without returning items already collected there.
incrementalModebooleanfalseTurn this on for daily or recurring monitoring. The first run returns every matching record as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records.
stateKeystring(none)Optional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs.
emitUnchangedbooleanfalseOff by default. Also return records that have not changed since the last run, marked UNCHANGED. Returns, and bills, extra rows you already have.
emitExpiredbooleanfalseOff by default. Also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search.
mcpConnectorsarray(none)Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Leave empty to skip; never changes the dataset output.
notionParentPageUrlstring(none)Notion connector only: URL or id of the page under which item pages are created. Ignored by other connectors.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.
proxyConfigurationobjectApify ProxyConnection used for every request. Works on every proxy plan.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"id": 999001,
"idMal": 888001,
"url": "https://anilist.co/anime/999001",
"titleRomaji": "Sample Romaji Title",
"titleEnglish": "Sample English Title",
"titleNative": "サンプルタイトル",
"format": "TV",
"status": "FINISHED",
"episodes": 24,
"chapters": null,
"volumes": null,
"durationMin": 23,
"averageScore": 78,
"meanScore": 77,
"popularity": 45000,
"favourites": 9000,
"genres": ["Fantasy", "Adventure"],
"countryOfOrigin": "JP",
"isAdult": false,
"description": "A sample synopsis describing the plot in a few sentences.",
"season": "SPRING",
"seasonYear": 2025,
"startDate": "2025-04-01",
"endDate": "2025-09-20",
"studios": ["Sample Studio"],
"nextAiringEpisode": null,
"nextAiringAt": null,
"coverImage": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/large/sample-id.jpg",
"bannerImage": "https://s4.anilist.co/file/anilistcdn/media/anime/banner/sample-id.jpg"
}

Plan Requirement

The default proxy setting works out of the box on every plan; AniList's data API answers ordinary connections. Change the connection setting only if you have a specific reason to, for example a very high-volume or frequent monitoring schedule where extra headroom helps.

FAQ

How much does it cost?

You pay per record returned. The Pricing tab shows the current rates. Use Max records to cap the cost of any run.

This actor collects only publicly available anime and manga catalog data. You are responsible for how you use it: follow AniList's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Scores, popularity and other metadata are catalog facts, but cover art, banner images and synopses may carry third-party rights.

Can I get only new or changed titles on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared records, and unchanged ones are not billed.

What's the difference between Resume and Incremental mode?

Resume (resumeFromRunId) continues ONE specific interrupted run using its run or dataset id, so you don't pay twice for what that run already collected. Incremental mode is for running the SAME search, chart or URL list again and again (daily, for example) and getting only what changed since the previous run. They can be combined, but see the tip under "Resume and recurring updates": combining them does not fold the resumed records into the incremental baseline, so plan for one extra NEW pass on the following incremental run.

Why did an Emit expired run return more records than Max records?

Max records caps the live search or chart walk, not the EXPIRED batch written at the end of that run. Once the walk finishes without hitting any cap, every previously tracked record that no longer appears is written as EXPIRED in the same run, uncapped. Narrow the tracked search terms, or split monitoring across separate State key values, to keep any one cleanup batch smaller.

Why did my run fail instead of returning an empty dataset?

If the source refuses every request, the run stops with a clear message so "nothing could be read" is never confused with a genuinely empty search. Run it again in a few minutes, or adjust the Proxy configuration in the input. A search that honestly matches nothing (a real term with no results) still succeeds with zero records.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 More scrapers you might like

Pair this actor with these related scrapers from the same team:

🧩 MyAnimeList Scraper
Scrape MyAnimeList anime and manga by keyword, ranking chart or URL. Extract titles...
🧩 GoodShort Scraper
Scrape the GoodShort short-drama catalog: titles with exact views, follows, genres and...
🧩 Pocket Casts Podcast Scraper
Scrape Pocket Casts podcast data, including listener ratings, full episode archives...
🧩 WEBTOON Scraper
Scrape the WEBTOON catalog into structured data. Extract series, genres, rankings and...
🧩 Deezer Scraper
Scrape Deezer by keyword or URL. Extract tracks, albums, artists, playlists, lyrics...
🧩 PineDrama Scraper
Scrape the PineDrama short-drama catalogue: series with watch counts, episode counts...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.