TL;DR
Jikan (Japanese for "time") is an unofficial MyAnimeList API that scrapes and caches data from MAL. It provides comprehensive anime, manga, character, people, and season data — including scores, synopses, genres, studios, episode count, aired dates, and user stats. It's free and requires no API key, but has strict rate limits (30 requests per minute, 3 per second) to protect MyAnimeList's servers.
Quick start: https://api.jikan.moe/v4/anime/1
No API key needed — but rate limits are strict!
How to Use This API
1. Get Anime by ID (Cowboy Bebop = ID 1)
https://api.jikan.moe/v4/anime/1
Returns full details: title (English/Japanese), synopsis, score, rank, popularity, episode count, status (Finished Airing), aired dates, studios (Sunrise), genres, themes, and streaming links.
2. Search Anime by Title
https://api.jikan.moe/v4/anime?q=attack%20on%20titan&order_by=score&sort=desc
Search with q, order by score, popularity, episodes, or rank. Sort asc or desc.
3. Get Top Anime
https://api.jikan.moe/v4/top/anime
Returns the top-rated anime on MAL. Filter by type=tv, filter=airing, page.
4. JavaScript — Anime Search
async function searchAnime(query) {
const resp = await fetch(
`https://api.jikan.moe/v4/anime?q=${encodeURIComponent(query)}&limit=5`
);
const data = await resp.json();
return data.data.map(a => ({
title: a.title,
english: a.title_english,
score: a.score,
episodes: a.episodes,
status: a.status,
synopsis: a.synopsis?.substring(0, 150) + '...',
image: a.images.jpg.image_url,
url: a.url
}));
}
searchAnime('spirited away').then(results => {
results.forEach(a => {
console.log(`${a.title} ⭐${a.score} (${a.episodes} eps)`);
});
});
5. Python — Get Seasonal Anime
import requests
from datetime import datetime
def get_current_season():
now = datetime.now()
year = now.year
month = now.month
season_map = {1: 'winter', 4: 'spring', 7: 'summer', 10: 'fall'}
season = season_map.get(((month - 1) // 3) * 4 + 1, 'spring')
return season, year
season, year = get_current_season()
resp = requests.get(
f'https://api.jikan.moe/v4/seasons/{year}/{season}'
)
anime_list = resp.json()['data']
print(f"Top {season.capitalize()} {year} anime:")
for a in anime_list[:10]:
print(f" {a['title']} — ⭐{a['score'] or 'N/A'} "
f"({a['episodes'] or '?'} eps)")
https://api.jikan.moe/v4/anime/1
Frequently Asked Questions
- What are the exact rate limits?
- Jikan enforces strict limits: 30 requests per minute and 3 requests per second. If you exceed these, you'll receive HTTP 429 (Too Many Requests) with a Retry-After header. Cache responses to avoid hitting limits.
- What endpoints does Jikan v4 offer?
- Anime (search, by ID, episodes, staff, stats), Manga, Characters, People, Seasonal anime, Top lists, Recommendations, Reviews, User lists, Clubs, and more. Full list at the Jikan documentation.
- Does Jikan include streaming information?
- Yes! The anime response includes
streaminglinks for Crunchyroll, Funimation, Netflix, HIDIVE, and other platforms where the anime is available. - How fresh is the data?
- Jikan caches MyAnimeList data and refreshes periodically. Scores and stats are typically updated within a few hours of changes on MAL.
- Can I get episode-level data?
- Yes,
/v4/anime/{id}/episodesreturns episode titles, air dates, filler/recap flags, and forum discussion URLs. - Is there a GraphQL version?
- No, Jikan v4 is REST-only. The v3 version had some GraphQL support but v4 is purely RESTful with JSON responses.
API Details
- API URL
https://api.jikan.moe/v4- Documentation
- jikan.moe/docs
- Category
- Entertainment
- Authentication
- Not Required
- Geographic Coverage
- Global — Japanese anime and manga data
What You Can Build
- Anime database app with search, ratings, and streaming links
- Seasonal anime tracker — what's airing this season
- Manga reader companion — browse series info and character details
- Anime recommendation engine based on genres and themes
- Anime ranking and statistics dashboard with MAL scores