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

Scrape anime and manga from MyAnimeList. Search by query, browse top lists, filter by genre. Get scores, episodes, synopsis, studios, seasons, members, and more.

- **URL**: https://apify.com/lulzasaur/myanimelist-scraper.md
- **Developed by:** [lulz bot](https://apify.com/lulzasaur) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

Scrape anime and manga data from [MyAnimeList](https://myanimelist.net) (MAL), the largest anime and manga database with millions of entries and user ratings.

### What does MyAnimeList Scraper do?

This scraper extracts structured data from MyAnimeList search results and detail pages. Search for any anime or manga by title and get comprehensive metadata including ratings, episodes, studios, genres, themes, synopsis, rankings, popularity stats, and more.

### Features

- **Search by title** — search for anime or manga by name
- **Anime and manga support** — scrape either content type
- **Basic search data** — fast extraction of title, type, episodes, and score from search results
- **Full detail scraping** — optionally visit each detail page for complete metadata including studios, genres, themes, synopsis, ratings breakdown, rank, popularity, members, and favorites
- **Pagination** — automatically follows search result pages up to your max listing limit

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `searchQueries` | string[] | `["Naruto"]` | List of anime/manga titles to search |
| `maxListings` | integer | `50` | Maximum results to return (max 1000) |
| `scrapeDetails` | boolean | `false` | Visit detail pages for full data |
| `contentType` | enum | `"anime"` | `"anime"` or `"manga"` |
| `proxyConfiguration` | object | — | Optional proxy settings |

### Output

Each result includes the following fields (detail fields require `scrapeDetails: true`):

| Field | Type | Description |
|-------|------|-------------|
| `title` | string | Primary title |
| `titleEnglish` | string | English title (detail only) |
| `titleJapanese` | string | Japanese title (detail only) |
| `malId` | number | MyAnimeList unique ID |
| `type` | string | TV, Movie, OVA, ONA, Special, Manga, etc. |
| `episodes` | number | Number of episodes (anime) |
| `chapters` | number | Number of chapters (manga) |
| `status` | string | Airing status (detail only) |
| `aired` | string | Air/publish dates (detail only) |
| `premiered` | string | Premiere season (detail only) |
| `studios` | string | Animation studios (detail only) |
| `genres` | string | Genres (detail only) |
| `themes` | string | Themes (detail only) |
| `rating` | number | MAL score (1-10) |
| `ratingCount` | number | Number of user ratings (detail only) |
| `rank` | number | MAL ranking (detail only) |
| `popularity` | number | Popularity rank (detail only) |
| `members` | number | Number of members (detail only) |
| `favorites` | number | Number of favorites (detail only) |
| `synopsis` | string | Plot summary |
| `imageUrl` | string | Cover image URL |
| `sourceUrl` | string | MAL page URL |
| `scrapedAt` | string | ISO timestamp |

### Example output

```json
{
    "title": "Naruto",
    "titleEnglish": "Naruto",
    "titleJapanese": "ナルト",
    "malId": 20,
    "type": "TV",
    "episodes": 220,
    "status": "Finished Airing",
    "aired": "Oct 3, 2002 to Feb 8, 2007",
    "premiered": "Fall 2002",
    "studios": "Studio Pierrot",
    "genres": "Action, Adventure, Fantasy",
    "themes": "Martial Arts",
    "rating": 8.02,
    "ratingCount": 2138583,
    "rank": 722,
    "popularity": 9,
    "members": 3111191,
    "favorites": 86336,
    "synopsis": "Twelve years ago, a colossal demon fox terrorized the world...",
    "imageUrl": "https://myanimelist.net/images/anime/1141/142503.jpg",
    "sourceUrl": "https://myanimelist.net/anime/20/Naruto",
    "scrapedAt": "2026-04-26T12:00:00.000Z"
}
````

### Tips

- **Quick search**: Leave `scrapeDetails` off for fast results with basic info (title, type, episodes, score)
- **Full data**: Enable `scrapeDetails` for complete metadata — ratings breakdown, studios, genres, themes, synopsis, member stats
- **Multiple queries**: Add multiple search terms to cover different titles in one run
- **Rate limiting**: The scraper is configured with low concurrency (2) and rate limits to be respectful of MAL's servers
- **Proxy**: Use proxy configuration if you encounter rate limiting or blocking

### Cost

This actor uses pay-per-event pricing. Each scraped item costs approximately $0.005 (1 platform credit per result).

# Actor input Schema

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

List of anime/manga titles to search for. E.g. \["Naruto", "Attack on Titan"].

## `maxListings` (type: `integer`):

Maximum number of results to return (default 50, max 1000).

## `scrapeDetails` (type: `boolean`):

Visit each detail page for full data (rating, synopsis, studios, genres, themes, stats). Slower but much richer data.

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

Scrape anime or manga results.

## `proxyConfiguration` (type: `object`):

Optional proxy for requests to MyAnimeList.

## Actor input object example

```json
{
  "searchQueries": [
    "Naruto"
  ],
  "maxListings": 50,
  "scrapeDetails": false,
  "contentType": "anime"
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("lulzasaur/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 = {}

# Run the Actor and wait for it to finish
run = client.actor("lulzasaur/myanimelist-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 '{}' |
apify call lulzasaur/myanimelist-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "MyAnimeList Scraper",
        "description": "Scrape anime and manga from MyAnimeList. Search by query, browse top lists, filter by genre. Get scores, episodes, synopsis, studios, seasons, members, and more.",
        "version": "1.0",
        "x-build-id": "1uzCd9xl1NqvkQCj1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lulzasaur~myanimelist-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lulzasaur-myanimelist-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lulzasaur~myanimelist-scraper/runs": {
            "post": {
                "operationId": "runs-sync-lulzasaur-myanimelist-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lulzasaur~myanimelist-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-lulzasaur-myanimelist-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchQueries": {
                        "title": "Search Queries",
                        "type": "array",
                        "description": "List of anime/manga titles to search for. E.g. [\"Naruto\", \"Attack on Titan\"].",
                        "default": [
                            "Naruto"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxListings": {
                        "title": "Max Listings",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of results to return (default 50, max 1000).",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "Visit each detail page for full data (rating, synopsis, studios, genres, themes, stats). Slower but much richer data.",
                        "default": false
                    },
                    "contentType": {
                        "title": "Content Type",
                        "enum": [
                            "anime",
                            "manga"
                        ],
                        "type": "string",
                        "description": "Scrape anime or manga results.",
                        "default": "anime"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy for requests to MyAnimeList."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
