# MyAnimeList Scraper — Anime & Manga Data, Ratings API (`logiover/mal-anime-scraper`) Actor

Unofficial MyAnimeList API powered by the free, open Jikan API — no key, no browser. Scrape anime & manga data: top charts, full-text search, seasonal anime, ratings, characters, voice actors and recommendations. Export to JSON, CSV or Excel for analytics, ML and recommendation engines.

- **URL**: https://apify.com/logiover/mal-anime-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Videos, Business, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🍥 MyAnimeList Scraper — Anime & Manga Data API Alternative (Ratings, Seasonal, Characters)

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify\&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![Category](https://img.shields.io/badge/Category-Anime%20%7C%20Media%20Data-8B5CF6) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

An **unofficial MyAnimeList scraper** and structured **anime data API** in a single Apify actor. Pull top anime and manga charts, run full-text search, browse any season, and fetch ratings, characters, voice actors and recommendations — primarily through the **free, open Jikan API** (the unofficial MyAnimeList API), with a direct public-MyAnimeList fallback for anime search and seasonal discovery when Jikan's list parser is unavailable. No API key, no login, no OAuth, no headless browser — just fast HTTP and clean, flat JSON you can export to CSV, Excel or JSON.

This **MyAnimeList API alternative** is built for data teams, anime and manga analysts, recommendation-engine developers, machine-learning practitioners, streaming apps, Discord bot builders and AI agents who need reliable, structured **anime data** on demand. Eight modes share one input form, and every result is tagged with `_mode` so you can mix modes in a single dataset and filter later.

> ### 🏆 Why this MyAnimeList scraper?
>
> 8 modes in one actor · anime + manga charts, search, seasonal, details, characters & recommendations · 30+ fields per title · no API key / no OAuth / no browser · Jikan + direct public-MAL recovery path · export to JSON, CSV & Excel · the practical **MyAnimeList API alternative**

***

### ✨ What this Actor does

- **📊 Top charts** — the highest-rated and most-popular anime and manga, paginated through the full ranking. Filter by `airing`, `upcoming`, `bypopularity` or `favorite`.
- **⭐ Ratings & rankings** — `score`, `scoredBy`, `rank`, `popularity`, `members` and `favorites` on every anime and manga, straight from MyAnimeList.
- **🔎 Full-text search** — search anime or manga by title and narrow with genre IDs, media type, airing/publishing status, and custom ordering (by score, rank, popularity, members, start date and more).
- **🗓️ Seasonal anime** — every title in a given `winter` / `spring` / `summer` / `fall` season for any year, or the current season — a ready-made **seasonal anime API**.
- **📺 Anime details** — `title`, `titleEnglish`, `titleJapanese`, `type`, `episodes`, `status`, `source`, `duration`, `rating`, `year`, `season`, `genres[]`, `themes[]`, `demographics[]`, `studios[]`, `producers[]`, `airedFrom` / `airedTo`, `synopsis`, poster `imageUrl` and `trailerUrl`.
- **📚 Manga details** — `chapters`, `volumes`, publishing status, `authors[]`, `serializations[]`, `publishedFrom` / `publishedTo` and the full synopsis.
- **🎭 Characters & voice actors** — every character of an anime with `role`, `favorites`, image and the `voiceActors[]` cast (name + language).
- **🤝 Recommendations** — the community recommendation graph: which anime fans of a given title also recommend, with vote counts.
- **🧩 Mix modes in one dataset** — every item carries `_mode` and `scrapedAt` (ISO 8601) plus a clean MyAnimeList `url`, so you can run several modes and filter later.
- **🛡️ Honest outage handling** — if Jikan's anime-search or seasonal list parser returns a persistent upstream 5xx, the actor discovers canonical IDs from MyAnimeList's public pages and enriches them through Jikan's per-ID route. If neither route can produce trustworthy data, the run fails explicitly instead of reporting a misleading successful empty dataset.
- **📤 Export anywhere** — CSV, JSON, Excel (XLSX), HTML, RSS or JSON Lines, with five pre-built dataset views (Overview, Anime, Manga, Characters, Recommendations).

#### The 8 modes

| Mode | What it returns |
|---|---|
| `topAnime` | Top / most-popular anime chart, paginated (highest volume, default) |
| `topManga` | Top / most-popular manga chart, paginated |
| `searchAnime` | Full-text anime search with genre, type, status and ordering filters |
| `searchManga` | Full-text manga search |
| `seasonal` | Every anime in a season (by year & season, or the current season) |
| `animeDetails` | Full details for one or many anime IDs (batch) |
| `characters` | Characters + voice actors for one or many anime IDs |
| `recommendations` | Community anime recommendations for one or many anime IDs |

***

### 🚀 Quick start (3 steps)

1. **Configure** — open the actor, pick a **Mode**, and fill the fields that mode needs (the input form shows which apply). For example, choose `topAnime` and set `maxResults: 100`.
2. **Run** — click **Start**. The actor paginates the Jikan API, applies retry/backoff, uses the public-MAL recovery path for affected anime search/seasonal requests, and streams clean rows into your dataset.
3. **Get your data** — download the results as CSV, JSON or Excel from the run page, switch between the Anime / Manga / Characters / Recommendations views, or pull them via the Apify API.

***

### 📥 Input

Pick a **mode**, then set only the fields that mode uses. Here are three ready-to-run scenarios:

**Top 100 currently-airing anime by rating**

```json
{
  "mode": "topAnime",
  "filter": "airing",
  "maxResults": 100
}
```

**Highest-scoring fantasy anime (search + genre + order)**

```json
{
  "mode": "searchAnime",
  "query": "",
  "genres": ["10"],
  "orderBy": "score",
  "sort": "desc",
  "maxResults": 100
}
```

**Characters & voice actors for a batch of anime IDs**

```json
{
  "mode": "characters",
  "animeIds": ["1", "5", "20"]
}
```

| Field | Type | Description |
|---|---|---|
| `mode` | string | **Required.** Which endpoint to run: `topAnime`, `topManga`, `searchAnime`, `searchManga`, `seasonal`, `animeDetails`, `characters` or `recommendations`. Default `topAnime`. |
| `query` | string | Free-text term for `searchAnime` / `searchManga`. Leave empty to browse all entries by the chosen filters/order. |
| `genres` | array | One or more MyAnimeList genre IDs (e.g. `1`=Action, `10`=Fantasy, `22`=Romance, `24`=Sci-Fi). Filters the search modes. |
| `status` | string | Airing/publishing status. Anime: `airing`, `complete`, `upcoming`. Manga: `publishing`, `complete`, `hiatus`, `discontinued`, `upcoming`. |
| `orderBy` | string | Sort field for search, e.g. `score`, `rank`, `popularity`, `members`, `favorites`, `title`, `start_date`, `episodes` / `chapters`. |
| `sort` | string | Sort direction for `orderBy`: `desc` (highest first) or `asc`. |
| `filter` | string | Chart filter for `topAnime` / `topManga`: `airing`, `publishing`, `upcoming`, `bypopularity`, `favorite`, or empty for the overall top-rated chart. |
| `type` | string | Media type filter. Anime: `tv`, `movie`, `ova`, `special`, `ona`, `music`. Manga: `manga`, `novel`, `lightnovel`, `oneshot`, `doujin`, `manhwa`, `manhua`. |
| `year` | integer | Year for `seasonal` mode (e.g. `2024`). Combine with `season`. |
| `season` | string | Season for `seasonal` mode: `winter`, `spring`, `summer` or `fall`. Leave year + season empty for the current season. |
| `animeId` | string | Single numeric MyAnimeList anime ID (e.g. `1` = Cowboy Bebop) for `animeDetails` / `characters` / `recommendations`. |
| `animeIds` | array | Array of numeric MAL anime IDs for batch `animeDetails` / `characters` / `recommendations`. |
| `maxResults` | integer | Upper bound on rows for the paginated modes (`topAnime`, `topManga`, `searchAnime`, `searchManga`, `seasonal`). Jikan returns 25 per page, so 100 = 4 pages. Default `100`. |

***

### 📤 Output

Results stream to the default dataset. Every item carries a `_mode` field so you can filter or pivot on it. Here is a trimmed anime row (`topAnime` / `searchAnime` / `seasonal` / `animeDetails`):

```json
{
  "_mode": "topAnime",
  "malId": 5114,
  "title": "Fullmetal Alchemist: Brotherhood",
  "titleEnglish": "Fullmetal Alchemist: Brotherhood",
  "titleJapanese": "鋼の錬金術師 FULLMETAL ALCHEMIST",
  "type": "TV",
  "episodes": 64,
  "status": "Finished Airing",
  "source": "Manga",
  "duration": "24 min per ep",
  "rating": "R - 17+ (violence & profanity)",
  "score": 9.1,
  "scoredBy": 2145678,
  "rank": 1,
  "popularity": 3,
  "members": 3421890,
  "favorites": 225114,
  "year": 2009,
  "season": "spring",
  "genres": ["Action", "Adventure", "Drama", "Fantasy"],
  "themes": ["Military"],
  "demographics": ["Shounen"],
  "studios": ["Bones"],
  "producers": ["Aniplex", "Square Enix"],
  "airedFrom": "2009-04-05",
  "airedTo": "2010-07-04",
  "synopsis": "After a failed attempt to bring their mother back...",
  "imageUrl": "https://cdn.myanimelist.net/images/anime/1208/94745.jpg",
  "trailerUrl": "https://www.youtube.com/watch?v=--IcmZkvL0Q",
  "url": "https://myanimelist.net/anime/5114",
  "scrapedAt": "2026-07-06T09:00:00.000Z"
}
```

<details><summary><b>📋 Full field reference (click to expand)</b></summary>

**Anime & manga rows** (`topAnime`, `topManga`, `searchAnime`, `searchManga`, `seasonal`, `animeDetails`)

| Field | Description |
|---|---|
| `_mode` | Which endpoint produced the row (filter/pivot on it) |
| `malId` | Numeric MyAnimeList ID |
| `title` | Default (romaji) title |
| `titleEnglish` | English title |
| `titleJapanese` | Japanese title |
| `type` | Media type (TV, Movie, OVA… / Manga, Novel…) |
| `episodes` | Episode count (anime) |
| `chapters` | Chapter count (manga) |
| `volumes` | Volume count (manga) |
| `status` | Airing / publishing status |
| `source` | Source material (e.g. Manga, Light novel, Original) |
| `duration` | Episode runtime (anime) |
| `rating` | Content rating (anime) |
| `score` | Average MAL score |
| `scoredBy` | Number of users who scored it |
| `rank` | Overall rank |
| `popularity` | Popularity rank |
| `members` | Members who added it to a list |
| `favorites` | Number of users who favorited it |
| `year` | Release year (anime) |
| `season` | Release season (anime) |
| `genres` | Genre names (array) |
| `themes` | Theme tags (array) |
| `demographics` | Demographic tags, e.g. Shounen (array) |
| `studios` | Animation studios (array, anime) |
| `producers` | Producers (array, anime) |
| `authors` | Authors (array, manga) |
| `serializations` | Serializing magazines (array, manga) |
| `airedFrom` / `airedTo` | Airing start / end date (anime) |
| `publishedFrom` / `publishedTo` | Publishing start / end date (manga) |
| `synopsis` | Full synopsis text |
| `imageUrl` | Poster / cover image URL |
| `trailerUrl` | Trailer URL (anime) |
| `url` | Canonical MyAnimeList URL |
| `scrapedAt` | Capture time (ISO 8601) |

**Character rows** (`characters` mode)

| Field | Description |
|---|---|
| `animeId` | Source anime MAL ID |
| `name` | Character name |
| `role` | Main / Supporting |
| `favorites` | Character favorites count |
| `voiceActors` | Cast: each entry's name + language |
| `imageUrl` | Character image URL |
| `url` | Character's MyAnimeList URL |

**Recommendation rows** (`recommendations` mode)

| Field | Description |
|---|---|
| `sourceAnimeId` | The anime you asked about |
| `recommendedId` | MAL ID of the recommended anime |
| `title` | Recommended anime title |
| `votes` | Community recommendation votes |
| `imageUrl` | Recommended anime poster URL |
| `url` | Recommended anime's MyAnimeList URL |

</details>

***

### 💡 Use cases

- **📈 Anime & manga analytics** — build an **anime ratings dataset** filtered by genre, year and popularity, then chart trends in a BI tool.
- **🧠 Recommendation engines & ML** — bulk-ingest titles, genres, scores, studios and the recommendation graph to train content-based or collaborative recommenders.
- **🎬 Streaming & catalog apps** — enrich your own catalog with MyAnimeList metadata, posters, synopses, episode counts and studios via `animeDetails`.
- **🗓️ Seasonal tracking** — pull every show each season to power a "what's airing now" page, a Discord bot or a newsletter.
- **🎭 Character & cast databases** — collect characters and voice actors across a series list for wikis, quizzes or fan tools.
- **🤖 AI agents & RAG** — wrap the actor as a tool so an LLM can answer "what are the top-rated fantasy anime?" or embed synopses and recommendations.

***

### 👥 Who uses it

Anime & manga data analysts · recommendation-engine & ML developers · streaming and catalog apps · Discord bot builders · fan-wiki and quiz makers · newsletter and "what's airing" sites · AI-agent / RAG builders · researchers studying media trends

***

### 💰 Pricing

This actor runs on Apify's **pay-per-result** model — you're billed for the rows you collect, with no monthly minimum and no MyAnimeList API fees. Small discovery runs cost pennies; large paginated pulls scale linearly. See the **Pricing** tab on the actor page for current rates, and use `maxResults` to cap spend on the paginated modes.

***

### ❓ Frequently Asked Questions

#### Is this a MyAnimeList API alternative?

Yes — effectively both. It works as an **unofficial MyAnimeList API** and a practical **MyAnimeList API alternative**: you send structured input and get structured JSON back, without the official MAL API's OAuth flow, quotas or client registration.

#### How do I scrape MyAnimeList without an API key?

Use this actor. It reads publicly available MyAnimeList data through the free, open **Jikan API**, so you need no MyAnimeList API key, no OAuth and no login — only an Apify account. Pick a mode, run it, and export the data.

#### What is the Jikan API?

**Jikan** is a free, open-source, unofficial REST API for MyAnimeList. This actor calls Jikan under the hood, adds pagination, retries with backoff, rate-limit handling and clean flattened output, and packages it as a ready-to-run scraper with CSV/JSON/Excel export. For anime search and seasonal lists, a persistent first-page Jikan upstream failure activates a direct public-MyAnimeList ID-discovery path; the IDs are then enriched through Jikan's per-title endpoint so the output fields remain consistent.

#### Can I use it without a login or OAuth?

Yes. There is no MyAnimeList login, OAuth handshake, client registration or developer account. You only need an Apify account to run the actor.

#### How much anime data can I get?

As much as the charts, search and seasonal endpoints expose — `maxResults` accepts up to 25,000 rows per run for the paginated modes, and you can run many IDs through `animeDetails`, `characters` and `recommendations` in a single batch. Jikan returns 25 items per page and the actor paginates automatically.

#### How do I scrape anime ratings and rankings?

Every anime and manga row includes `score`, `scoredBy`, `rank`, `popularity` and `members`. Use `topAnime` / `topManga` to build a ranked ratings dataset, or `searchAnime` with `orderBy: "score"` for a filtered chart.

#### How do I get a seasonal anime list?

Pick `seasonal` mode and set `year` and `season` (`winter`, `spring`, `summer`, `fall`) — or leave both empty for the current season. The actor paginates every title in that season, giving you a complete **seasonal anime dataset**.

#### How do I scrape anime characters and voice actors?

Pick `characters` mode and set an `animeId` (or a batch in `animeIds`). The actor returns every character with `role`, `favorites`, image and the voice-actor cast (name + language) — ideal for building a cast database across many shows.

#### How do I get MyAnimeList IDs?

A MAL anime or manga ID is the number in the URL (e.g. `myanimelist.net/anime/1` → `1`). Use `topAnime`, `searchAnime` or `seasonal` first to discover IDs, then feed them into `animeDetails`, `characters` or `recommendations`.

#### Does it respect Jikan's rate limits?

Yes. The actor sleeps between requests and backs off automatically on HTTP 429, staying within Jikan's ~3 requests/second and 60/minute limits, so large paginated pulls run reliably.

#### How do I export the anime dataset to CSV, JSON or Excel?

Run any mode and download the dataset as CSV, JSON, Excel (XLSX), HTML, RSS or JSON Lines from the run page, or pull it via the Apify API. This makes it a simple **anime dataset export** and manga data tool.

#### Is it legal to scrape MyAnimeList data?

The actor collects only publicly available anime and manga metadata already served by MyAnimeList through the open Jikan API. You are responsible for complying with MyAnimeList's and Jikan's terms and any applicable laws when you use the data.

***

### 🔗 More media & data scrapers by logiover

| Actor | What it does |
|---|---|
| [IMDb Scraper](https://apify.com/logiover/imdb-scraper) | Movies, TV & ratings from IMDb |
| [Letterboxd Film Review Scraper](https://apify.com/logiover/letterboxd-film-review-scraper) | Film reviews & ratings from Letterboxd |
| [TVmaze Scraper](https://apify.com/logiover/tvmaze-scraper) | TV shows, episodes & schedules |
| [Discogs Scraper](https://apify.com/logiover/discogs-scraper) | Music releases, artists & marketplace data |
| [Steam Game Reviews Scraper](https://apify.com/logiover/steam-game-reviews-scraper) | Player reviews & ratings from Steam |
| [Twitch Scraper](https://apify.com/logiover/twitch-scraper) | Streams, channels & category data |
| [YouTube Channel Scraper](https://apify.com/logiover/youtube-channel-scraper) | Channel metadata & videos |
| [YouTube Video Details Scraper](https://apify.com/logiover/youtube-video-details-scraper) | Full video metadata & stats |
| [Wikipedia Category Scraper](https://apify.com/logiover/wikipedia-category-scraper) | Pages & structured data by category |
| [Reddit Subreddit Scraper](https://apify.com/logiover/reddit-subreddit-scraper) | Posts & discussions from any subreddit |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

***

### ⏰ Scheduling & integration

- **Schedules** — open the **Schedules** tab in the Apify Console and point a daily or weekly run at this actor to keep a fresh seasonal or top-chart dataset without lifting a finger.
- **Export** — download every run as CSV, JSON, Excel, HTML, RSS or JSON Lines.
- **No-code** — connect to **Make, n8n or Zapier** to push new anime data into Google Sheets, Airtable, a database or a Discord/Slack channel.
- **API & webhooks** — call the actor via the Apify API (`run-sync-get-dataset-items`) or the JavaScript / Python clients, and fire a webhook when a run finishes.

***

### ⭐ Support & feedback

Found a bug or need another mode or field? Open an issue on the actor's **Issues** tab — responses are typically within 24 hours. If this actor saves you time, please leave a **★★★★★ review** on the Apify Store; it genuinely helps other builders discover it.

***

### ⚖️ Legal

This actor collects only **publicly available** anime and manga metadata that MyAnimeList already serves through the open, community-run Jikan API. It uses no login, no OAuth and no private data. You are responsible for using the collected data in compliance with MyAnimeList's and Jikan's terms of service, applicable copyright, and data-protection laws such as the GDPR.

***

### 📝 Changelog

#### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Declared 32 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Added a direct public-MyAnimeList ID-discovery fallback for anime search and seasonal modes when Jikan's list endpoints exhaust upstream 5xx retries; canonical IDs are enriched through Jikan's working per-title endpoint to preserve the full output contract.
- Closed successful-empty false positives: a first-page upstream outage or an all-ID failure now fails explicitly, while trustworthy partial results remain usable; invalid ID-mode inputs also fail clearly.
- Aligned request pacing with Jikan's documented 60-requests-per-minute limit instead of relying only on the looser three-requests-per-second ceiling.
- Declared 32 nullable dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder or brittle to sparse modes.
- Completed the typed dataset union for manga, characters and recommendations modes with chapters, volumes, author/serialization arrays, character name/role/voice-actor objects, and recommendation IDs/votes.

#### 2026-08-01 — Health-check remediation

- August 2026 monthly health-check remediation is in progress; this build contains fixes verified from empty/default, Console-default, targeted live probes, or field-level semantic review.
- Declared 32 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Added a direct public-MyAnimeList ID-discovery fallback for anime search and seasonal modes when Jikan's list endpoints exhaust upstream 5xx retries; canonical IDs are enriched through Jikan's working per-title endpoint to preserve the full output contract.
- Closed successful-empty false positives: a first-page upstream outage or an all-ID failure now fails explicitly, while trustworthy partial results remain usable; invalid ID-mode inputs also fail clearly.
- Aligned request pacing with Jikan's documented 60-requests-per-minute limit instead of relying only on the looser three-requests-per-second ceiling.
- The final four-input matrix verdict will be appended after post-build cloud revalidation.

#### 2026-07-06

- ✨ README overhaul: richer output sample, ready-to-run example scenarios, cross-promo links, and clearer quick-start.

#### 2026-07-01

- Initial release: eight MyAnimeList modes (top anime, top manga, search anime, search manga, seasonal, anime details, characters, recommendations) over the free Jikan API — no key, no browser.

# Actor input Schema

## `mode` (type: `string`):

Which MyAnimeList / Jikan endpoint to run.

• **topAnime** — top / most-popular anime chart, paginated (highest volume, default)
• **topManga** — top / most-popular manga chart, paginated
• **searchAnime** — full-text anime search with genre/type/status/order filters
• **searchManga** — full-text manga search
• **seasonal** — every anime in a given season (or the current season)
• **animeDetails** — full details for one or more anime IDs (batch)
• **characters** — characters + voice actors for one or more anime IDs
• **recommendations** — community anime recommendations for one or more anime IDs

## `query` (type: `string`):

Free-text term for **searchAnime** / **searchManga** mode (anime or manga title). Leave empty to browse all entries by the chosen filters/order.

## `genres` (type: `array`):

Filter **searchAnime** / **searchManga** by one or more genres (MyAnimeList genre IDs). Leave empty for all genres.

## `status` (type: `string`):

Filter search by airing / publishing status. Anime values: Airing, Complete, Upcoming. Manga values: Publishing, Complete, Hiatus, Discontinued, Upcoming. Pick one that matches your search type.

## `orderBy` (type: `string`):

Field to sort **searchAnime** / **searchManga** results by. `episodes` applies to anime, `chapters` / `volumes` to manga.

## `sort` (type: `string`):

Sort direction for `orderBy`. `desc` = highest first, `asc` = lowest first.

## `filter` (type: `string`):

Optional filter for the top charts. Anime: `airing`, `upcoming`, `bypopularity`, `favorite`. Manga: `publishing`, `upcoming`, `bypopularity`, `favorite`. Leave empty for the overall top-rated chart.

## `type` (type: `string`):

Optional media-type filter, used by the top charts and search. Anime values: TV, Movie, OVA, Special, ONA, Music. Manga values: Manga, Novel, Light novel, One-shot, Doujinshi, Manhwa, Manhua. Pick one that matches your mode.

## `year` (type: `integer`):

Year for **seasonal** mode, e.g. `2024`. Combine with `season`. If either year or season is empty, the current season is used.

## `season` (type: `string`):

Season for **seasonal** mode. One of `winter`, `spring`, `summer`, `fall`. Combine with `year`.

## `animeId` (type: `string`):

Numeric MyAnimeList anime ID, e.g. `1` (Cowboy Bebop). Used by **animeDetails**, **characters**, **recommendations**. The number after `/anime/` in a MAL URL.

## `animeIds` (type: `array`):

Array of numeric MyAnimeList anime IDs for batch **animeDetails**, **characters** or **recommendations**.

## `maxResults` (type: `integer`):

Upper bound on rows returned for the paginated modes (topAnime, topManga, searchAnime, searchManga, seasonal). Jikan returns 25 per page, so 100 = 4 pages.

## Actor input object example

```json
{
  "mode": "topAnime",
  "query": "naruto",
  "genres": [],
  "orderBy": "score",
  "sort": "desc",
  "year": 2024,
  "season": "fall",
  "animeId": "1",
  "animeIds": [],
  "maxResults": 100
}
```

# Actor output Schema

## `results` (type: `string`):

Full results dataset. Use the Anime view for anime modes, Manga for manga modes, Characters for character lists, and Recommendations for the recommendation graph.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "topAnime",
    "orderBy": "score",
    "year": 2024,
    "season": "fall",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/mal-anime-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "topAnime",
    "orderBy": "score",
    "year": 2024,
    "season": "fall",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/mal-anime-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "topAnime",
  "orderBy": "score",
  "year": 2024,
  "season": "fall",
  "maxResults": 100
}' |
apify call logiover/mal-anime-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=logiover/mal-anime-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vpCdOGhTnzda87ZMA/builds/ZM3sNdybfpMsoZQFB/openapi.json
