Jikan (MyAnimeList) API
Free unofficial MyAnimeList API with no key: anime and manga data, scores, characters, staff and seasonal listings. Tested curl example and live JSON.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the Jikan (MyAnimeList) API?
Jikan is a free, unofficial REST API for MyAnimeList data. It provides anime and manga records with scores, synopses, genres, characters, staff and seasonal listings, requiring no API key.
Jikan scrapes and caches MyAnimeList, exposing the largest anime and manga database available through a clean REST interface. Because MyAnimeList's own API requires OAuth registration, Jikan is the practical choice for most projects.
The rate limit is strict and genuinely enforced: three requests per second and sixty per minute. Any implementation that fetches per list item will hit it immediately, so batch, paginate and cache from the start rather than retrofitting it later.
Quick facts
- Base URL
https://api.jikan.moe/v4- Authentication
- No key required. Jikan is unofficial and not affiliated with MyAnimeList.
- Rate limit
- 3 requests per second and 60 per minute per IP, strictly enforced.
- Pricing
- Free and open source.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Jikan (MyAnimeList) API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. Fetch an anime by MyAnimeList id
GET https://api.jikan.moe/v4/anime/1
curl 'https://api.jikan.moe/v4/anime/1'const res = await fetch("https://api.jikan.moe/v4/anime/1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.jikan.moe/v4/anime/1", timeout=20)
res.raise_for_status()
print(res.json()){
"data": {
"mal_id": 1,
"url": "https://myanimelist.net/anime/1/Cowboy_Bebop",
"images": {
"jpg": {
"image_url": "https://cdn.myanimelist.net/images/anime/4/19644.jpg",
"small_image_url": "https://cdn.myanimelist.net/images/anime/4/19644t.jpg",
"large_image_url": "https://cdn.myanimelist.net/images/anime/4/19644l.jpg"
},
"webp": {
"image_url": "https://cdn.myanimelist.net/images/anime/4/19644.webp",
"small_image_url": "https://cdn.myanimelist.net/images/anime/4/19644t.webp",
"large_image_url": "https://cdn.myanimelist.net/images/anime/4/19644l.webp"
}
},
"trailer": {
"youtube_id": null,
"url": null,
"embed_url": "https://www.youtube-nocookie.com/embed/gY5nDXOtv_o?enablejsapi=1&wmode=opaque&autoplay=1",
"images": {
"image_url": null,
"small_image_url": null,
"medium_image_url": null,
"large_image_url": null,
"maximum_image_url": null
}
},
"approved": true,
"titles": [
{
"type": "Default",
"title": "Cowboy Bebop"
},
{
"type": "Japanese",
"title": "カウボーイビバップ"
},
{
"type": "English",
"title": "Cowboy Bebop"
}
],
"title": "Cowboy Bebop",
"title_english": "Cowboy Bebop",
"title_japanese": "カウボーイビバップ",
"title_synonyms": [],
"type": "TV",
"source": "Original",
"episodes": 26,
"status": "Finished Airing",
"airing": false,
"aired": {
"from": "1998-04-03T00:00:00+00:00",
"tParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<resource> | path | Required | anime, manga, characters, people or seasons. anime |
<id> | path | Optional | MyAnimeList id of the resource. 1 |
q | query | Optional | Search query on /anime endpoints. cowboy bebop |
page / limit | query | Optional | Pagination controls. 1 |
Response fields
data.mal_idinteger- MyAnimeList identifier.
data.title / title_englishstring- Original and English titles.
data.score / scored_bynumber- Community rating and how many users rated it.
data.synopsisstring- Plot summary.
data.genresarray- Genre objects with id and name.
data.imagesobject- Cover images in JPG and WebP at several sizes.
What you can build with the Jikan (MyAnimeList) API
- Build an anime tracker or watchlist application
- Display seasonal anime charts and top-rated listings
- Add anime search with cover art to a community site
- Practise strict rate-limit handling and request queuing
Common errors and how to fix them
429
Exceeded 3 requests/second or 60/minute.
Fix: Queue requests with a delay between them and cache results — this limit is enforced aggressively.
404
Unknown MyAnimeList id.
Fix: Verify the id via a search request first.
503 / timeouts
Upstream MyAnimeList is slow or the cache is cold.
Fix: Retry with exponential backoff; transient failures are normal for a scraping-based API.
Jikan (MyAnimeList) API — frequently asked questions
Is Jikan an official MyAnimeList API?
No, Jikan is an unofficial third-party API that scrapes and caches MyAnimeList data. It is widely used because the official API requires OAuth registration.
What is Jikan's rate limit?
Three requests per second and sixty per minute per IP, strictly enforced. Design for it from the start — queue requests and cache responses.
Does Jikan require an API key?
No, it is completely key-free, which is its main advantage over the official MyAnimeList API.
Why do I get intermittent 503 errors?
Jikan depends on MyAnimeList upstream, so transient failures happen when that source is slow or the cache is cold. Implement retry with exponential backoff.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Validator
Free online JSON validator: validate JSON and find syntax errors with the exact line and column. See root type, key counts and depth — instant and 100% private.
Jikan (MyAnimeList) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.