MyAnimeList (Jikan)
MalMeta is the MyAnimeList front-end, backed by the unofficial-but-stable
Jikan v4 public API. It surfaces normalized title
metadata, anime relations, and — uniquely — per-episode filler/recap
flags from Jikan’s /anime/{id}/episodes endpoint.
No API key required.
import { HttpClient, MalMeta, AllmangaProvider } from 'anime-sdk';
const http = new HttpClient();const meta = new MalMeta(http);
const info = await meta.fetchMediaInfo('mal:anime:1');console.log(info.streamingEpisodes?.[0].isFiller); // boolean
const allmanga = new AllmangaProvider(http);const stream = await meta.resolveStream('mal:anime:1', 1, allmanga, 'sub');URN shape — typed
Section titled “URN shape — typed”MAL integer IDs aren’t globally unique across anime/manga (MAL #1 is both an anime and a manga), so the URN encodes the catalogue kind:
mal:anime:21mal:manga:13Legacy bare URNs (mal:21) still resolve — MalMeta probes /anime
first and falls back to /manga.
Browse
Section titled “Browse”await meta.browse('top', { catalogType: 'ANIME', perPage: 10 });await meta.browse('popular');await meta.browse('seasonal', { season: 'FALL', year: 2024 });Characteristics
Section titled “Characteristics”| Feature | Details |
|---|---|
| Catalogues | Anime + Manga |
| Native ID shape | mal:anime:<integer> / mal:manga:<integer> |
| Endpoint | api.jikan.moe/v4 (free, keyless) |
| Rate limit (built-in) | 55 req/min, with a 3 req/s burst window (matches Jikan’s quota) |
| Enrichments | filler/recap via /anime/{id}/episodes, relations |
| Browse | top, popular, seasonal |