# AniList Anime & Manga API
> Anime and manga data as an API, powered by AniList — clean JSON, no key. Search anime or manga and open any title for its full detail: titles in romaji, English and native, format, status, episode/chapter counts, genres and tags, studios, average and mean scores, popularity, description, cover and banner art, trailer and external links. Discover what is trending right now, browse a season's line-up by season and year, and follow the upcoming airing schedule — the next episodes to air, each with a live countdown. Look up characters and staff (voice actors, directors) with their artwork, favourites and the titles they appear in. Live data straight from AniList. Distinct from MyAnimeList catalogues: AniList brings real-time trending, seasonal charts and airing countdowns — ideal for anime trackers, seasonal-guide apps, episode-release widgets and Discord bots. 8 data endpoints. Authenticated with an x-oanor-key; fair-use rate limits per plan.

## 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/anilist-api/..."
```

## Pricing
- **Free** (Free) — 4,600 calls/Mo, 5 req/s
- **Starter** ($6/Mo) — 57,000 calls/Mo, 15 req/s
- **Pro** ($30/Mo) — 305,000 calls/Mo, 30 req/s
- **Mega** ($93/Mo) — 1,280,000 calls/Mo, 80 req/s

## Endpoints

### Media

#### `GET /v1/anime` — Anime detail

**Parameters:**
- `id` (query, required, string) — AniList id Example: `16498`

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

**Response:**
```json
{
    "data": {
        "anime": {
            "id": 16498,
            "url": "https://anilist.co/anime/16498",
            "tags": [
                {
                    "name": "Kaiju",
                    "rank": 93
                },
                {
                    "name": "Revenge",
                    "rank": 92
                },
                {
                    "name": "Military",
                    "rank": 88
                },
                {
                    "name": "Primarily Teen Cast",
                    "rank": 85
                },
                {
                    "name": "Post-Apocalyptic",
                    "rank": 84
                },
                {
                    "name": "Male Protagonist",
                    "rank": 83
                },
                {
                    "name": "Gore",
                    "rank": 76
                },
                {
                    "name": "Dystopian",
                    "rank": 75
                },
                {
                    "name": "Swordplay",
                    "rank": 75
                },
                {
                    "name": "Survival",
                    "rank": 73
                },
                {
                    "name": "Steampunk",
                    "rank": 73
                },
                {
                    "name": "Ensemble Cast",
                    "rank": 73
                },
                {
                    "nam
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/manga` — Manga detail

**Parameters:**
- `id` (query, required, string) — AniList id Example: `30002`

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

**Response:**
```json
{
    "data": {
        "manga": {
            "id": 30002,
            "url": "https://anilist.co/manga/30002",
            "tags": [
                {
                    "name": "Tragedy",
                    "rank": 97
                },
                {
                    "name": "Seinen",
                    "rank": 95
                },
                {
                    "name": "Male Protagonist",
                    "rank": 94
                },
                {
                    "name": "Revenge",
                    "rank": 94
                },
                {
                    "name": "Demons",
                    "rank": 92
                },
                {
                    "name": "Gore",
                    "rank": 88
                },
                {
                    "name": "Philosophy",
                    "rank": 86
                },
                {
                    "name": "Found Family",
                    "rank": 86
                },
                {
                    "name": "Anti-Hero",
                    "rank": 83
                },
                {
                    "name": "Travel",
                    "rank": 83
                },
                {
                    "name": "Swordplay",
                    "rank": 82
                },
                {
                    "name": "Survival",
                    "rank": 82
                },
                {
                    "name": "War",
            
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/search` — Search anime/manga

**Parameters:**
- `query` (query, required, string) — Title to search Example: `frieren`
- `type` (query, optional, string) — ANIME or MANGA Example: `ANIME`
- `limit` (query, optional, string) — Max results (1–50) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/search?query=frieren&type=ANIME&limit=20"
```

**Response:**
```json
{
    "data": {
        "type": "ANIME",
        "count": 6,
        "query": "frieren",
        "results": [
            {
                "id": 154587,
                "type": "ANIME",
                "year": 2023,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx154587-qQTzQnEJJ3oB.jpg",
                "score": 91,
                "title": "Frieren: Beyond Journey’s End",
                "format": "TV",
                "genres": [
                    "Adventure",
                    "Drama",
                    "Fantasy"
                ],
                "season": "FALL",
                "status": "FINISHED",
                "chapters": null,
                "episodes": 28,
                "title_native": "葬送のフリーレン",
                "title_romaji": "Sousou no Frieren"
            },
            {
                "id": 209939,
                "type": "ANIME",
                "year": 2027,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx209939-g2Njkml1rheG.jpg",
                "score": null,
                "title": "Sousou no Frieren 3rd Season",
                "format": "TV",
                "genres": [
                    "Adventure",
                    "Drama",
                    "Fantasy"
                ],
                "season": "FALL",
                "status": "NOT_YET_RELEASED",
                "chapters": null,
                "episodes": null,
          
…(truncated, see openapi.json for full schema)
```

### Discover

#### `GET /v1/airing` — Upcoming airing schedule

**Parameters:**
- `limit` (query, optional, string) — Max results Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/airing?limit=25"
```

**Response:**
```json
{
    "data": {
        "count": 25,
        "schedule": [
            {
                "anime": {
                    "id": 137653,
                    "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx137653-1wHbCVvABGOr.png",
                    "score": 81,
                    "title": "Renegade Immortal",
                    "format": "ONA"
                },
                "episode": 144,
                "airing_at": 1780884000,
                "seconds_until": 2390
            },
            {
                "anime": {
                    "id": 197824,
                    "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx197824-k9Uyef8g49hB.png",
                    "score": 73,
                    "title": "Farming Life in Another World 2",
                    "format": "TV"
                },
                "episode": 10,
                "airing_at": 1780925400,
                "seconds_until": 43790
            },
            {
                "anime": {
                    "id": 147105,
                    "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx147105-rwOX8qyUy8gV.jpg",
                    "score": 86,
                    "title": "Witch Hat Atelier",
                    "format": "ONA"
                },
                "episode": 11,
                "airing_at": 1780927200,
                "seconds_until": 45590
            },
            {
                "anime": {
       
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/seasonal` — Seasonal line-up

**Parameters:**
- `season` (query, required, string) — WINTER, SPRING, SUMMER or FALL Example: `FALL`
- `year` (query, required, string) — Year Example: `2024`
- `limit` (query, optional, string) — Max results Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/seasonal?season=FALL&year=2024&limit=25"
```

**Response:**
```json
{
    "data": {
        "year": 2024,
        "count": 25,
        "season": "FALL",
        "results": [
            {
                "id": 171018,
                "type": "ANIME",
                "year": 2024,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx171018-60q1B6GK2Ghb.jpg",
                "score": 83,
                "title": "DAN DA DAN",
                "format": "TV",
                "genres": [
                    "Action",
                    "Comedy",
                    "Drama",
                    "Romance",
                    "Sci-Fi",
                    "Supernatural"
                ],
                "season": "FALL",
                "status": "FINISHED",
                "chapters": null,
                "episodes": 12,
                "title_native": "ダンダダン",
                "title_romaji": "Dandadan"
            },
            {
                "id": 163134,
                "type": "ANIME",
                "year": 2024,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx163134-yieRFbvUOH9a.jpg",
                "score": 84,
                "title": "Re:ZERO -Starting Life in Another World- Season 3",
                "format": "TV",
                "genres": [
                    "Action",
                    "Adventure",
                    "Drama",
                    "Fantasy",
                    "Psychological",
                    "Romance",
         
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/trending` — Trending now

**Parameters:**
- `type` (query, optional, string) — ANIME or MANGA Example: `ANIME`
- `limit` (query, optional, string) — Max results Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/trending?type=ANIME&limit=25"
```

**Response:**
```json
{
    "data": {
        "type": "ANIME",
        "count": 25,
        "results": [
            {
                "id": 182300,
                "type": "ANIME",
                "year": 2026,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx182300-IYkq5KrkQq1V.jpg",
                "score": 82,
                "title": "Wistoria: Wand and Sword Season 2",
                "format": "TV",
                "genres": [
                    "Action",
                    "Adventure",
                    "Drama",
                    "Fantasy"
                ],
                "season": "SPRING",
                "status": "RELEASING",
                "chapters": null,
                "episodes": 12,
                "trending": 510,
                "title_native": "杖と剣のウィストリア Season2",
                "title_romaji": "Tsue to Tsurugi no Wistoria Season 2"
            },
            {
                "id": 21,
                "type": "ANIME",
                "year": 1999,
                "cover": "https://s4.anilist.co/file/anilistcdn/media/anime/cover/medium/bx21-ELSYx3yMPcKM.jpg",
                "score": 87,
                "title": "ONE PIECE",
                "format": "TV",
                "genres": [
                    "Action",
                    "Adventure",
                    "Comedy",
                    "Drama",
                    "Fantasy"
                ],
                "season": "FALL",
                "st
…(truncated, see openapi.json for full schema)
```

### People

#### `GET /v1/character` — Character by id or search

**Parameters:**
- `query` (query, optional, string) — Character name (or id) Example: `Lelouch`
- `id` (query, optional, string) — AniList character id

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/character?query=Lelouch"
```

**Response:**
```json
{
    "data": {
        "character": {
            "id": 417,
            "age": "17-18",
            "url": "https://anilist.co/character/417",
            "name": "Lelouch Lamperouge",
            "image": "https://s4.anilist.co/file/anilistcdn/character/large/b417-gVLmIJu9phcK.png",
            "gender": "Male",
            "native": "ルルーシュ・ランペルージ",
            "aliases": [
                "Lulu",
                "Zero",
                "King of Elevens",
                "The Demon",
                "Black King",
                "Black Demon",
                "Julius Kingsley"
            ],
            "appears_in": [
                {
                    "id": 1575,
                    "type": "ANIME",
                    "title": "Code Geass: Lelouch of the Rebellion"
                },
                {
                    "id": 2904,
                    "type": "ANIME",
                    "title": "Code Geass: Lelouch of the Rebellion R2"
                },
                {
                    "id": 97880,
                    "type": "ANIME",
                    "title": "Code Geass: Lelouch of the Re;surrection"
                },
                {
                    "id": 126830,
                    "type": "ANIME",
                    "title": "Code Geass: Rozé of the Recapture"
                },
                {
                    "id": 101811,
                    "type": "ANIME",
                    "title": "Code Geass: Lelouch of 
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/staff` — Staff/voice actor by id or search

**Parameters:**
- `query` (query, optional, string) — Staff name (or id) Example: `Hayao Miyazaki`
- `id` (query, optional, string) — AniList staff id

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/anilist-api/v1/staff?query=Hayao+Miyazaki"
```

**Response:**
```json
{
    "data": {
        "staff": {
            "id": 96870,
            "age": 85,
            "url": "https://anilist.co/staff/96870",
            "name": "Hayao Miyazaki",
            "image": "https://s4.anilist.co/file/anilistcdn/staff/large/n96870-cM3pfPVIR8RW.png",
            "works": [
                {
                    "id": 199,
                    "type": "ANIME",
                    "title": "Spirited Away"
                },
                {
                    "id": 199,
                    "type": "ANIME",
                    "title": "Spirited Away"
                },
                {
                    "id": 199,
                    "type": "ANIME",
                    "title": "Spirited Away"
                },
                {
                    "id": 431,
                    "type": "ANIME",
                    "title": "Howl‘s Moving Castle"
                },
                {
                    "id": 431,
                    "type": "ANIME",
                    "title": "Howl‘s Moving Castle"
                },
                {
                    "id": 164,
                    "type": "ANIME",
                    "title": "Princess Mononoke"
                },
                {
                    "id": 164,
                    "type": "ANIME",
                    "title": "Princess Mononoke"
                },
                {
                    "id": 164,
                    "type": "ANIME",
                    "title": "Princess Mono
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec

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

**Response:**
```json
{
    "data": {
        "service": "anilist-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/anime": "Anime detail by id.",
            "GET /v1/manga": "Manga detail by id.",
            "GET /v1/staff": "Staff/voice actor by id or search.",
            "GET /v1/airing": "Upcoming airing schedule.",
            "GET /v1/search": "Search anime or manga (query=, type=ANIME|MANGA).",
            "GET /v1/seasonal": "Seasonal anime (season=, year=).",
            "GET /v1/trending": "Trending now (type=).",
            "GET /v1/character": "Character by id or search."
        },
        "description": "AniList anime & manga: search, anime/manga detail, what's trending now, the seasonal line-up, the upcoming airing schedule (next episodes with countdowns) and character & staff detail. Real live data, no key."
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:11.819Z",
        "request_id": "26bcefac-3b25-4249-8651-ebcb45a8e16e"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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