AniList Anime & Manga Scraper at a glance
AniList Anime & Manga Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes titleromaji, titleenglish, format, status and averagescore, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.50 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $2.50 per 1,000 results (Free plan), from $1.80 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 24 options
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.
What AniList Anime & Manga Scraper can do
- Three ways to find media. Keyword search (multiple terms merged and de-duplicated), curated charts, or paste AniList links (media pages or search and chart pages) 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.
Choose what to collect
These inputs let you configure AniList Anime & Manga Scraper - Scores, Charts, Full Metadata. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | How to find media: keyword search, charts (trending/popular/top-rated), or paste AniList URLs or ids. |
mediaTypestring | Anime or manga. Applies to search, charts and URL modes. |
searchTermsarray | Keywords to search for (Search mode). Each term is searched separately; results are merged and de-duplicated. |
chartKindstring | Which ranking to return (Charts mode). |
urlsarray | AniList links or ids (URL mode). Accepts anilist.co/anime/ and anilist.co/manga/ links (a title slug, a sub-page such as /characters, or the www host resolve to the same record), bare numeric media ids, and anilist.co/search/anime|manga listing links: a keyword search with its filters, or a chart (trending, popular, top-100, this-season, next-season). Max records and Max pages apply to each pasted listing link; media links and ids are always all returned. A listing link with page=2 or later starts mid-list and never marks records as expired. Character, staff, studio and user pages are skipped. |
formatarray | Keep only these formats (any of them matches). Leave empty for all. Applies to search and charts. |
statusarray | Keep only these release statuses (any of them matches). Leave empty for all. |
Show 17 more inputs
| Input | What it controls |
|---|---|
seasonstring | Keep only titles from this season. Leave empty for all. |
seasonYearinteger | Keep only titles from this year (for example 2024). 0 or empty = any. |
genresarray | Keep only titles that have ALL of these genres. |
sortstring | Result order. Empty keeps the default: search uses the best keyword match, charts use the chart ranking above. |
adultContentstring | Exclude, include (adult and non-adult together) or return adult titles only. Empty follows the Include adult media toggle below. |
maxMediainteger | Stop after this many media records (0 = no limit). |
maxPagesinteger | Cap on pages walked per term or chart (50 records per page; 0 = no limit). |
includeAdultboolean | Off by default; adult media is excluded. When on, results are adult titles only. Use Adult content above to include both. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large pull without returning items already collected there. |
incrementalModeboolean | Turn 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. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). A record counts as changed when any of its output fields differ from the stored copy, except popularity, favourites, trending, rankings and tag rank (daily counters and chart positions, kept in the output but never a change) and any field you list under Ignore fields. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. |
emitUnchangedboolean | Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have. |
emitExpiredboolean | Off by default. Turn on to 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. |
ignoreFieldsForChangesarray | Optional. Field names to exclude from UPDATED change detection, in addition to the built-in handling: popularity, favourites, trending, rankings and tags.rank are always ignored because those counters and chart positions move daily without the title changing (they stay in the output). Use this for any other noisy field, for example averageScore or coverImage. Dotted names reach into nested values. An ignored field never triggers UPDATED and is never listed in changedFields. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
titleRomajititleRomajititleEnglishtitleEnglishformatformatstatusstatusaverageScoreaverageScorepopularitypopularityfavouritesfavouritesseasonYearseasonYeargenresgenresurlurlidididMalidMalShow 33 more fields
anilistUrlanilistUrltitleNativetitleNativeepisodesepisodeschapterschaptersvolumesvolumesdurationMindurationMinmeanScoremeanScoregenresTextgenresTextcountryOfOrigincountryOfOriginisAdultisAdultdescriptiondescriptionseasonseasonstartDatestartDateendDateendDatestudiosstudiosstudiosTextstudiosTextnextAiringEpisodenextAiringEpisodenextAiringAtnextAiringAtcoverImagecoverImagecoverUrlcoverUrlbannerImagebannerImagesynonymssynonymssourcesourcehashtaghashtagtrendingtrendingtagstagsrankingsrankingstrailerUrltrailerUrlexternalLinksexternalLinkschangeTypechangeTypechangedFieldschangedFieldsfirstSeenAtfirstSeenAtlastSeenAtlastSeenAtExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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"
}Ways to use this data
- 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.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does AniList Anime & Manga Scraper return?
The documented output for AniList Anime & Manga Scraper includes titleromaji, titleenglish, format, status, averagescore, popularity, favourites and seasonyear. Availability of each field depends on the source page and the selected mode.
How much does AniList Anime & Manga Scraper cost?
It costs $2.50 per 1,000 results on the Apify Free plan and from $1.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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.
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.
