Jikan
Jikan
The unofficial MyAnimeList REST API: no API key, no OAuth, no registration. It covers all public data — anime, manga, characters, people, seasonal charts, top lists, genres, producers, recommendations, and reviews. The public instance is capped at 3 req/sec and 60 req/min, served from a default 24-hour cache. It is strictly read-only because it reads MyAnimeList’s public pages and cannot authenticate as a user, so it cannot modify anyone’s list (writes need the official API). Open source (PHP/Laravel) and self-hostable via Docker to lift the shared-instance rate limit.
Zero-friction access: no API key, no OAuth, no registration — GET https://api.jikan.moe/v4/anime/1 works right now and returns JSON in five seconds
Strictly read-only, forever: it cannot authenticate as a user, so marking as watched, changing scores, and adding/removing list entries are all impossible — those require the official MyAnimeList API
Jikan needs no setup: hit GET https://api.jikan.moe/v4/anime/1 and you get Cowboy Bebop’s full metadata. Common endpoints: /anime?q=KEYWORD to search, /anime/{id} for detail, /anime/{id}/characters for cast, /seasons/now for the current season, /schedules for the airing calendar, /top/anime for rankings, and the /manga family for manga. In production, cache responses by resource ID on your side and keep request frequency under 60 req/min and 3 req/s. For more throughput, self-host with `docker run -d --name jikan-rest -p 8080:8080 -v ./.env:/app/.env jikanme/jikan-rest:latest` and set your own limits. Remember: anything that reads or writes a logged-in user’s own list must use the official MyAnimeList API.
Uptime · 30-day window
About this API
Jikan is the unofficial MyAnimeList REST API; the name comes from the Japanese word for "time." It exists for a simple reason: for years MyAnimeList had no usable public API, so the community built one by reading the site’s public pages and re-serving the result as clean JSON. Today it runs as a PHP/Laravel application, the current version is v4, and the public instance lives at https://api.jikan.moe/v4. Its defining feature is zero friction: no API key, no account, no OAuth, no Authorization header — send a GET and you get JSON. The endpoint surface is broad: /anime and /manga for search and detail, /characters and /people for cast and staff, /seasons/now for the current season, /schedules for each weekday’s lineup, /top/anime for rankings, /genres/anime for genre filtering, /producers for studios, plus /random, /recommendations, and /reviews — covering essentially everything a browse-and-discover product needs to show. Two facts to design around: first, rate limiting. The public instance enforces 3 requests/second and 60 requests/minute simultaneously; both apply, and exceeding either returns HTTP 429. The project is donation-funded via Patreon and expects aggressive client-side caching rather than charging you. Second, freshness. Jikan serves cached data with a 24-hour default cache (CACHE_DEFAULT_EXPIRE=86400, shorter for some endpoints), which is fine for synopses, scores, and rankings but wrong for real-time needs. The most important boundary is read-only: Jikan reads public data and cannot authenticate as a user, so it can never modify anyone’s list — marking as watched, changing scores, and adding or removing entries all require the official MyAnimeList API. Many real apps therefore use both: Jikan for the public catalog and the official API for the per-user list. When throughput outgrows the shared instance, jikan-rest is open source and Dockerized; self-hosting lifts the rate limit without changing client code, but a self-hosted instance is still read-only because it still has no user authentication.
What you can build
- 1Anime/manga browse-and-discover sites: use /anime and /manga for search and detail, /seasons/now for the current season, /schedules for each weekday’s lineup, and /top/anime for rankings — all with zero auth
- 2Character and staff pages: /characters and /people return character profiles, voice actors, and staff; pair with /anime/{id}/characters to build title-to-cast relationship views
- 3Data analysis and dataset building: bulk-pull public metadata for score distributions, genre trends, and the like (mind the 60 req/min limit — cache on your side or self-host)
Strengths & limitations
Strengths
- Zero-friction access: no API key, no OAuth, no registration — GET https://api.jikan.moe/v4/anime/1 works right now and returns JSON in five seconds
- Broad public-data coverage: anime, manga, characters, people, seasons, schedules, top lists, genres, producers, recommendations, and reviews in one place, matching how people actually browse
- Fully free and open source: the public instance is free, and the code (jikan-me/jikan-rest) is open and Docker-self-hostable, so you scale by running your own copy rather than switching APIs
Limitations
- Strictly read-only, forever: it cannot authenticate as a user, so marking as watched, changing scores, and adding/removing list entries are all impossible — those require the official MyAnimeList API
- Cached data lag: the default cache is 24 hours, which is fine for synopses and rankings but wrong for anything needing minute-level real-time accuracy
- Shared-instance limits are tight: 3 req/sec + 60 req/min, so bulk or high-concurrency work needs client-side caching or self-hosting to avoid 429s
Official quickstart
Read the official quickstart at docs.api.jikan.moe.
Getting started
Jikan needs no setup: hit GET https://api.jikan.moe/v4/anime/1 and you get Cowboy Bebop’s full metadata. Common endpoints: /anime?q=KEYWORD to search, /anime/{id} for detail, /anime/{id}/characters for cast, /seasons/now for the current season, /schedules for the airing calendar, /top/anime for rankings, and the /manga family for manga. In production, cache responses by resource ID on your side and keep request frequency under 60 req/min and 3 req/s. For more throughput, self-host with `docker run -d --name jikan-rest -p 8080:8080 -v ./.env:/app/.env jikanme/jikan-rest:latest` and set your own limits. Remember: anything that reads or writes a logged-in user’s own list must use the official MyAnimeList API.
FAQ
Does Jikan need an API key or registration?+
Neither. The public Jikan instance is free with no API key, no account, and no OAuth — just send GET requests. It is funded by Patreon donations, which is why it rate-limits and caches and asks you to be a considerate consumer.
What is the Jikan rate limit?+
The v4 public instance enforces 3 requests/second and 60 requests/minute simultaneously; both apply, and exceeding either returns HTTP 429. There is no published per-day cap. The v3 limit of 30/min is deprecated. Self-host for more throughput.
Can I modify a user’s anime list with Jikan?+
No. Jikan is strictly read-only and cannot authenticate as a user, so it cannot change status, scores, or list entries. To write to a user’s list you must use the official MyAnimeList API (OAuth2).
Is Jikan data real-time?+
No. Jikan serves cached data with a 24-hour default cache (shorter for some endpoints). That is fine for rarely-changing data like synopses, scores, and rankings, but for minute-level real-time accuracy use the official API.
Technical details
- Auth type
- none
- Pricing
- free
- Rate limit
- Public instance (api.jikan.moe) enforces two limits simultaneously: 3 requests/second AND 60 requests/minute. Both apply, so a burst of 5 requests in one second trips the per-second cap even when well under 60/minute. Exceeding either returns HTTP 429. No published per-day cap. (v3 was 30/min and is deprecated; v4 doubled it to 60.) Self-hosting removes the shared limit entirely.
- Free tier quota
- Entirely free with no key and no account. Rate-limited to 3 req/sec and 60 req/min on the public instance. Funded by community donations (Patreon), so aggressive client-side caching is the implicit expectation rather than a paid upgrade.
- Protocols
- REST
- SDKs
- Python, JavaScript, TypeScript