# MyAnimeList Community Stats API
> Live anime community stats from MyAnimeList, the world's largest anime and manga community, via the public Jikan feed — no key, nothing stored. The MAL community view: a title's MAL score, member counts, ranking and the full engagement breakdown of how the community is watching it, distinct from the other anime platforms in the catalogue — MyAnimeList has its own score, its own millions-strong community and its own rankings. The anime endpoint returns a title snapshot: the MAL score, how many users scored it, its rank and popularity rank, total members, favourites, airing status, episode count and year. The stats endpoint returns the community engagement breakdown — how many users are watching, completed, on-hold, dropped or plan-to-watch — plus the full 1–10 score distribution with vote counts and percentages, and computed completion and drop rates. The top endpoint returns the top-ranked anime, by score or filtered by airing, upcoming, popularity or favourites. The season endpoint returns the anime airing this season ranked by member count. Build anime trackers, recommendation widgets, seasonal-airing dashboards and community-sentiment tools on top of real MyAnimeList data. Look up a title by its MAL id (try id=52991, Frieren).

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/myanimelist-api/..."
```

## Pricing
- **Free** (Free) — 19,000 calls/Mo, 3 req/s
- **Starter** ($6/Mo) — 270,000 calls/Mo, 10 req/s
- **Pro** ($16/Mo) — 1,100,000 calls/Mo, 25 req/s
- **Scale** ($37/Mo) — 3,900,000 calls/Mo, 55 req/s

## Endpoints

### Anime

#### `GET /v1/anime` — Title snapshot — MAL score, rank, members

**Parameters:**
- `id` (query, required, string) — MAL anime id Example: `52991`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/anime?id=52991"
```

**Response:**
```json
{
    "data": {
        "url": "https://myanimelist.net/anime/52991/Sousou_no_Frieren",
        "rank": 1,
        "type": "TV",
        "year": 2023,
        "score": 9.26,
        "title": "Sousou no Frieren",
        "mal_id": 52991,
        "source": "MyAnimeList (Jikan)",
        "status": "Finished Airing",
        "members": 1456504,
        "episodes": 28,
        "platform": "MyAnimeList",
        "favorites": 90440,
        "scored_by": 897304,
        "title_english": "Frieren: Beyond Journey's End",
        "popularity_rank": 104
    },
    "meta": {
        "timestamp": "2026-06-12T01:42:32.730Z",
        "request_id": "93e83e55-9e53-4afe-aaa8-92d2036850ee"
    },
    "status": "ok",
    "message": "Anime retrieved successfully",
    "success": true
}
```

#### `GET /v1/characters` — Characters with role, favourites and Japanese voice actor

**Parameters:**
- `id` (query, required, string) — MAL anime id Example: `52991`
- `limit` (query, optional, string) — Results (1-50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/characters?id=52991&limit=20"
```

**Response:**
```json
{
    "data": {
        "count": 20,
        "total": 62,
        "mal_id": 52991,
        "source": "MyAnimeList (Jikan)",
        "platform": "MyAnimeList",
        "characters": [
            {
                "url": "https://myanimelist.net/character/184947/Frieren",
                "name": "Frieren",
                "role": "Main",
                "image": "https://cdn.myanimelist.net/images/characters/7/525105.jpg?s=1706604ec2ca141a172526b8dedf3177",
                "mal_id": 184947,
                "favorites": 32089,
                "voice_actor": {
                    "name": "Tanezaki, Atsumi",
                    "language": "Japanese"
                }
            },
            {
                "url": "https://myanimelist.net/character/188176/Fern",
                "name": "Fern",
                "role": "Main",
                "image": "https://cdn.myanimelist.net/images/characters/12/619183.jpg?s=15f45c66440c0e9843e2f0109f0c1aef",
                "mal_id": 188176,
                "favorites": 5797,
                "voice_actor": {
                    "name": "Ichinose, Kana",
                    "language": "Japanese"
                }
            },
            {
                "url": "https://myanimelist.net/character/188177/Stark",
                "name": "Stark",
                "role": "Main",
                "image": "https://cdn.myanimelist.net/images/characters/7/621924.jpg?s=ff623ff40dde15a769f879d87d6e7dcd",
                "mal_id": 188177,
       
…(truncated, see openapi.json for full schema)
```

### Stats

#### `GET /v1/stats` — Community engagement breakdown and score distribution

**Parameters:**
- `id` (query, required, string) — MAL anime id Example: `52991`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/stats?id=52991"
```

**Response:**
```json
{
    "data": {
        "total": 1456504,
        "mal_id": 52991,
        "source": "MyAnimeList (Jikan)",
        "dropped": 23863,
        "on_hold": 29186,
        "platform": "MyAnimeList",
        "watching": 238645,
        "completed": 953024,
        "drop_rate_pct": 1.64,
        "plan_to_watch": 211786,
        "score_distribution": [
            {
                "score": 10,
                "votes": 479240,
                "percentage": 53.4
            },
            {
                "score": 9,
                "votes": 230393,
                "percentage": 25.7
            },
            {
                "score": 8,
                "votes": 102877,
                "percentage": 11.5
            },
            {
                "score": 7,
                "votes": 33425,
                "percentage": 3.7
            },
            {
                "score": 6,
                "votes": 11191,
                "percentage": 1.2
            },
            {
                "score": 5,
                "votes": 5965,
                "percentage": 0.7
            },
            {
                "score": 4,
                "votes": 2607,
                "percentage": 0.3
            },
            {
                "score": 3,
                "votes": 1408,
                "percentage": 0.2
            },
            {
                "score": 2,
                "votes": 1756,
                "percentage": 0.2
            },
            {
                "score": 1,

…(truncated, see openapi.json for full schema)
```

### Top

#### `GET /v1/top` — Top-ranked anime

**Parameters:**
- `filter` (query, optional, string) — airing|upcoming|bypopularity|favorite Example: `bypopularity`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/top?filter=bypopularity"
```

**Response:**
```json
{
    "data": {
        "anime": [
            {
                "url": "https://myanimelist.net/anime/16498/Shingeki_no_Kyojin",
                "rank": 126,
                "type": "TV",
                "year": 2013,
                "score": 8.57,
                "title": "Shingeki no Kyojin",
                "mal_id": 16498,
                "status": "Finished Airing",
                "members": 4377647,
                "episodes": 25,
                "favorites": 189875,
                "scored_by": 3078433,
                "title_english": "Attack on Titan",
                "popularity_rank": 1
            },
            {
                "url": "https://myanimelist.net/anime/1535/Death_Note",
                "rank": 99,
                "type": "TV",
                "year": 2006,
                "score": 8.62,
                "title": "Death Note",
                "mal_id": 1535,
                "status": "Finished Airing",
                "members": 4315293,
                "episodes": 37,
                "favorites": 186268,
                "scored_by": 3016663,
                "title_english": "Death Note",
                "popularity_rank": 2
            },
            {
                "url": "https://myanimelist.net/anime/5114/Fullmetal_Alchemist__Brotherhood",
                "rank": 3,
                "type": "TV",
                "year": 2009,
                "score": 9.11,
                "title": "Fullmetal Alchemist: Brotherhood",
                "mal_id": 51
…(truncated, see openapi.json for full schema)
```

### Season

#### `GET /v1/season` — Anime airing this season, ranked by members

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/season"
```

**Response:**
```json
{
    "data": {
        "anime": [
            {
                "url": "https://myanimelist.net/anime/51553/Tongari_Boushi_no_Atelier",
                "rank": 68,
                "type": "TV",
                "year": 2026,
                "score": 8.7,
                "title": "Tongari Boushi no Atelier",
                "mal_id": 51553,
                "status": "Currently Airing",
                "members": 330256,
                "episodes": 13,
                "favorites": 3778,
                "scored_by": 59289,
                "title_english": "Witch Hat Atelier",
                "popularity_rank": 855
            },
            {
                "url": "https://myanimelist.net/anime/61316/Re_Zero_kara_Hajimeru_Isekai_Seikatsu_4th_Season",
                "rank": 13,
                "type": "TV",
                "year": 2026,
                "score": 9.02,
                "title": "Re:Zero kara Hajimeru Isekai Seikatsu 4th Season",
                "mal_id": 61316,
                "status": "Currently Airing",
                "members": 247815,
                "episodes": 19,
                "favorites": 3228,
                "scored_by": 46348,
                "title_english": "Re:ZERO -Starting Life in Another World- Season 4",
                "popularity_rank": 1145
            },
            {
                "url": "https://myanimelist.net/anime/59708/Youkoso_Jitsuryoku_Shijou_Shugi_no_Kyoushitsu_e_4th_Season__2-nensei-hen_1_Gakki",
                "rank": 728,
 
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "Look up a title by its MAL id (try id=52991, Frieren). top accepts filter=airing|upcoming|bypopularity|favorite. Results are cached briefly because the upstream rate-limits.",
        "source": "Jikan, the unofficial MyAnimeList API (api.jikan.moe/v4, live)",
        "service": "myanimelist-api",
        "endpoints": {
            "GET /v1/top": "Top-ranked anime (filter=airing|upcoming|bypopularity|favorite, optional).",
            "GET /v1/meta": "This document.",
            "GET /v1/anime": "Title snapshot — MAL score, rank, members, favourites (id=52991).",
            "GET /v1/stats": "Community engagement breakdown and 1-10 score distribution (id=52991).",
            "GET /v1/season": "Anime airing this season, ranked by members."
        },
        "description": "Live anime community stats from MyAnimeList, the world's largest anime and manga community, via the public Jikan feed. The MAL community view — a title's MAL score, member counts, ranking and the full engagement breakdown. anime = a title snapshot (MAL score, how many scored it, rank, popularity rank, members, favourites, status, episodes, year); stats = the community engagement breakdown (watching, completed, on-hold, dropped, plan-to-watch) plus the full 1-10 score distribution with vote counts and percentages; top = the top-ranked anime (by score, or filtered by airing/upcoming/popularity/favourites); season = the anime airing this season ranked by members. Live, no 
…(truncated, see openapi.json for full schema)
```

### Discovery

#### `GET /v1/search` — Find anime by keyword

**Parameters:**
- `q` (query, required, string) — Search query Example: `frieren`
- `limit` (query, optional, string) — Results (1-25) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/search?q=frieren&limit=10"
```

**Response:**
```json
{
    "data": {
        "anime": [
            {
                "url": "https://myanimelist.net/anime/52991/Sousou_no_Frieren",
                "rank": 1,
                "type": "TV",
                "year": 2023,
                "score": 9.26,
                "title": "Sousou no Frieren",
                "mal_id": 52991,
                "status": "Finished Airing",
                "members": 1457080,
                "episodes": 28,
                "favorites": 90462,
                "scored_by": 897660,
                "title_english": "Frieren: Beyond Journey's End",
                "popularity_rank": 104
            },
            {
                "url": "https://myanimelist.net/anime/59978/Sousou_no_Frieren_2nd_Season",
                "rank": 28,
                "type": "TV",
                "year": 2026,
                "score": 8.87,
                "title": "Sousou no Frieren 2nd Season",
                "mal_id": 59978,
                "status": "Finished Airing",
                "members": 556877,
                "episodes": 10,
                "favorites": 7396,
                "scored_by": 248276,
                "title_english": "Frieren: Beyond Journey's End Season 2",
                "popularity_rank": 455
            },
            {
                "url": "https://myanimelist.net/anime/63816/Sousou_no_Frieren__Ougonkyou-hen",
                "rank": null,
                "type": "TV",
                "year": 2027,
                "score": null,
           
…(truncated, see openapi.json for full schema)
```

### Community

#### `GET /v1/recommendations` — Anime the community recommends to fans of this title

**Parameters:**
- `id` (query, required, string) — MAL anime id Example: `52991`
- `limit` (query, optional, string) — Results (1-25) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/recommendations?id=52991&limit=10"
```

**Response:**
```json
{
    "data": {
        "count": 10,
        "total": 76,
        "mal_id": 52991,
        "source": "MyAnimeList (Jikan)",
        "platform": "MyAnimeList",
        "recommendations": [
            {
                "url": "https://myanimelist.net/anime/33352/Violet_Evergarden",
                "image": "https://cdn.myanimelist.net/images/anime/1795/95088.jpg?s=9e24a139603a4e0ea8ea055a230b54d5",
                "title": "Violet Evergarden",
                "votes": 28,
                "mal_id": 33352
            },
            {
                "url": "https://myanimelist.net/anime/41025/Fumetsu_no_Anata_e",
                "image": "https://cdn.myanimelist.net/images/anime/1880/118484.jpg?s=73b91a0146dfa5fadc5ff9f870c72741",
                "title": "Fumetsu no Anata e",
                "votes": 19,
                "mal_id": 41025
            },
            {
                "url": "https://myanimelist.net/anime/35851/Sayonara_no_Asa_ni_Yakusoku_no_Hana_wo_Kazarou",
                "image": "https://cdn.myanimelist.net/images/anime/11/89556.jpg?s=c81e5bf28128120f3ebe27b03bb2e527",
                "title": "Sayonara no Asa ni Yakusoku no Hana wo Kazarou",
                "votes": 15,
                "mal_id": 35851
            },
            {
                "url": "https://myanimelist.net/anime/52701/Dungeon_Meshi",
                "image": "https://cdn.myanimelist.net/images/anime/1711/142478.jpg?s=8c432fe78ec9dd1b3219f3c5faf4308f",
                "title": "Dungeon Mesh
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/reviews` — Community reviews — user, score, verdict, reactions, excerpt

**Parameters:**
- `id` (query, required, string) — MAL anime id Example: `52991`
- `limit` (query, optional, string) — Results (1-20) Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/myanimelist-api/v1/reviews?id=52991&limit=5"
```

**Response:**
```json
{
    "data": {
        "count": 5,
        "mal_id": 52991,
        "source": "MyAnimeList (Jikan)",
        "reviews": [
            {
                "url": "https://myanimelist.net/reviews.php?id=519472",
                "date": "2024-03-24T02:03:00+00:00",
                "tags": [
                    "Not Recommended",
                    "Funny"
                ],
                "score": 4,
                "excerpt": "Style- Frieren doesn't have its own unique style in any way. It just feels like every other Fantasy/Isekai ever. and I know it's not an Isekai, but it certainly feels like it in a lot of ways. The characters are very uninteresting and forgettable, the ost is one of the most generic things I've ever heard, the directing is very basic and boring, and the world is also uninteresting and forgettable. It's ironic how the only intriguing location is one we never see on screen through the whole anime (",
                "verdict": "not_recommended",
                "username": "Trikkiez",
                "reactions": 5830,
                "is_spoiler": false
            },
            {
                "url": "https://myanimelist.net/reviews.php?id=519189",
                "date": "2024-03-22T12:40:00+00:00",
                "tags": [
                    "Recommended"
                ],
                "score": 10,
                "excerpt": "I feel so catered to. It feels like an eternity since I've been given such a phenomenal anime with a well thought out pl
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/myanimelist-api
OpenAPI spec: https://www.oanor.com/api/myanimelist-api/openapi.json
