# MyAnimeList Scraper (`aurenic/myanimelist-scraper`) Actor

Extract anime and manga metadata from MyAnimeList via the free Jikan API. Titles, scores, ranks, studios, genres, synopses and more.

- **URL**: https://apify.com/aurenic/myanimelist-scraper.md
- **Developed by:** [Aurenic](https://apify.com/aurenic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.55 / 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.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## MyAnimeList Scraper

Extract anime and manga metadata from MyAnimeList via the Jikan API — the largest anime/manga database in the world.

### What does MyAnimeList Scraper do?

Scrape structured anime and manga data from MyAnimeList through the free, open-source Jikan API. Four input modes:

- **Anime IDs** — pass MyAnimeList anime IDs, get full metadata per title.
- **Manga IDs** — pass MyAnimeList manga IDs, get full metadata per title.
- **Search Queries** — keywords searched against both anime and manga (25 results per type per query).
- **Top Lists** — fetch the Top Anime or Top Manga rankings up to 5,000 entries deep.

No authentication, no cookies, no anti-bot. The Jikan API is a public mirror of MyAnimeList data with a 3 requests/second rate limit that the actor handles automatically.

### Output fields

#### Anime

| Field | Description |
|---|---|
| malId | MyAnimeList anime ID |
| title | Primary title |
| titleEnglish | English title |
| titleJapanese | Japanese title |
| titleSynonyms | Alternate titles |
| synopsis | Plot summary (truncated to 3,000 chars) |
| type | TV / Movie / OVA / ONA / Special |
| source | Original source (manga, light novel, original, etc.) |
| episodes | Episode count |
| status | Airing status |
| airedFrom / airedTo | Air date range |
| duration | Episode duration |
| rating | Age rating |
| score | Average score (0–10) |
| scoredBy | Number of users who scored |
| rank | Global rank |
| popularity | Popularity rank |
| members | Member count |
| favorites | Favorites count |
| season / year | Season and year |
| studios | Array of studios |
| producers | Array of producers |
| genres / themes / demographics | Classification arrays |
| imageUrl | Poster image URL |
| trailerUrl | Trailer URL |

#### Manga

Same shape as anime, plus `chapters`, `volumes`, `authors`, and `serializations` instead of `studios`/`producers`/`episodes`.

### Who is it for?

- **Anime recommendation engines** sourcing scores, genres, and metadata
- **Manga analytics** tracking rankings and popularity over time
- **Streaming platforms** enriching catalogs with MyAnimeList data
- **Data scientists** building anime/manga datasets for research
- **Content creators** building anime ranking lists and review aggregators

### Pricing

**$0.70 per 1,000 results.** No subscription.

| Results | Cost |
|---|---|
| 100 | $0.07 |
| 1,000 | $0.70 |
| 10,000 | $7.00 |

### How to use it

1. Enter **Anime IDs**, **Manga IDs**, **Search Queries**, or pick a **Top List Type**.
2. Set **Max Items** (default 300).
3. Click **Start**.

### Output example

```json
{
  "type": "anime",
  "malId": 5114,
  "url": "https://myanimelist.net/anime/5114/Fullmetal_Alchemist__Brotherhood",
  "title": "Fullmetal Alchemist: Brotherhood",
  "titleEnglish": "Fullmetal Alchemist: Brotherhood",
  "titleJapanese": "鋼の錬金術師 FULLMETAL ALCHEMIST",
  "titleSynonyms": ["Hagane no Renkinjutsushi: Fullmetal Alchemist", "Fullmetal Alchemist (2009)", "FMA: Brotherhood"],
  "synopsis": "After a horrific alchemy experiment goes wrong in the Elric household, brothers Edward and Alphonse are left in a catastrophic new reality...",
  "type": "TV",
  "source": "Manga",
  "episodes": 64,
  "status": "Finished Airing",
  "airedFrom": "2009-04-05T00:00:00+00:00",
  "airedTo": "2010-07-04T00:00:00+00:00",
  "duration": "24 min per ep",
  "rating": "R - 17+ (violence & profanity)",
  "score": 9.1,
  "scoredBy": 2034567,
  "rank": 1,
  "popularity": 3,
  "members": 3123456,
  "favorites": 198456,
  "studios": ["Bones"],
  "genres": ["Action", "Adventure", "Drama", "Fantasy"],
  "themes": ["Military"],
  "demographics": ["Shounen"],
  "imageUrl": "https://cdn.myanimelist.net/images/anime/1208/94745l.jpg",
  "scrapedAt": "2026-09-20T18:00:00.000Z"
}
```

### Technical details

- Built on the **Jikan API** (`api.jikan.moe/v4`) — a free, open-source, public REST wrapper for MyAnimeList
- **No authentication required**, no cookies, no anti-bot challenges
- **Rate-limited to 3 requests/second** (Jikan's fair-use policy) — the actor throttles automatically and retries on 429
- **No proxy needed** — Jikan accepts datacenter IPs
- Pure JSON responses, no HTML parsing

### Known limits

- **Jikan is a mirror.** Data lags MyAnimeList by minutes to hours depending on the field. For real-time updates, scrape MyAnimeList directly (separate actor).
- **Rate limit: 3 req/sec.** The actor self-throttles to stay within the limit. High `maxItems` values will take proportional time.
- **Search returns up to 25 items per type per query.** For exhaustive coverage, use Top Lists or direct IDs.
- **Reviews and user lists not included** — this actor covers titles only.

### FAQ

**Do I need an API key?** No. Jikan is free and open.

**Do I need a proxy?** No. Jikan accepts datacenter IPs and has no anti-bot protection.

**How do I find a MyAnimeList ID?** The ID is in the URL: `myanimelist.net/anime/5114/...` → ID is `5114`.

**How do I export data?** After a run, go to Storage → Export as JSON, CSV, Excel.

### Support

Open an issue on the Actor's page for bugs or feature requests.

# Actor input Schema

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

MyAnimeList anime IDs (e.g. 5114 for Fullmetal Alchemist: Brotherhood).

## `mangaIds` (type: `array`):

MyAnimeList manga IDs (e.g. 2 for Berserk).

## `searchQueries` (type: `array`):

Keywords searched against both anime and manga. Returns up to 25 items per type per query.

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

Fetch the Top Anime or Top Manga list. Leave empty to skip.

## `topLimit` (type: `integer`):

How many items to fetch from the Top list. Only used if Top List Type is set.

## `maxItems` (type: `integer`):

Hard cap on total items per run.

## Actor input object example

```json
{
  "animeIds": [
    "5114",
    "1535"
  ],
  "mangaIds": [],
  "searchQueries": [
    "naruto"
  ],
  "topLimit": 0,
  "maxItems": 300
}
```

# Actor output Schema

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

No description

# 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 = {
    "animeIds": [
        "5114",
        "1535"
    ],
    "mangaIds": [],
    "searchQueries": [
        "naruto"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aurenic/myanimelist-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 = {
    "animeIds": [
        "5114",
        "1535",
    ],
    "mangaIds": [],
    "searchQueries": ["naruto"],
}

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

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

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

```

## CLI example

```bash
echo '{
  "animeIds": [
    "5114",
    "1535"
  ],
  "mangaIds": [],
  "searchQueries": [
    "naruto"
  ]
}' |
apify call aurenic/myanimelist-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aurenic/myanimelist-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ggfZ6BG5DLQZcXTqx/builds/nWhvq3UcXA5ShPOTT/openapi.json
