Jikan class

Jikan

Jikan is an Unofficial MyAnimeList API. It scrapes the website to satisfy the need for an API - which MyAnimeList lacks.

The word Jikan literally translates to Time in Japanese (時間). And that's what this API saves you of. ;)

Notice: Jikan does not support authenticated requests. You can not update your lists.

⚡ Jikan is powered thanks to all its backers! 🙏 [Become a backer]

API Path: https://api.jikan.moe/v3

API Version: v3.4

Status | Report an Issue | Discord

Information

Wrappers

Wrappers are available in more than 10 different languages, see the Wrapper List

Rate Limiting

Daily Limit: Unlimited

  • 30 requests / minute
  • 2 requests / second

Note: Cached requests are NOT throttled

Bulk Requests

This API serves as a purpose for apps/projects that are user based and make a nominal amount of requests.

⚠️ If you're using the service for the sake of populating data/making your own database;

  • You are breaching MyAnimeList's Terms Of Service. You are responsible for what you're doing.
  • You MUST use a delay of 4 (FOUR) SECONDS between each request
  • Requesting from multiple servers/IPs is being cheeky and is NOT allowed
  • ABUSING THE API WILL RESULT IN GETTING BLOCKED FROM THE SERVICE

If you're not comfortable being that restrictive, consider setting up your own Jikan REST API - It's super easy.

Disclaimer

  • Jikan is not affiliated with MyAnimeList.net
  • Jikan is a free, open-source API. Use it responsibly!

JSON Notes

  • Any property (except arrays) whose value does not exist or is undetermined, will be null
  • Any array property whose value does not exist or is undetermined, will be empty
  • Any score property whose value does not exist or is undetermined, will be 0
  • All dates and timestamps are returned in ISO8601 format and in UTC

Caching

By "caching", we refer to the data parsed from MyAnimeList that is cached temporarily on our servers for better performance.

All requests by default are cached for 24 hours except for a few API endpoints which have their own unique cache expiry time.

Request Cache TTL
All (Default) 24 hours
Meta 5 minutes
User 5 minutes
Search 120 hours (5 days)

The following Response Headers will detail cache information

Header Remarks
Expires Expiry timestamp for the cache
X-Request-Cached (boolean) Is the request cached?
X-Request-Cache-Ttl (integer) Cache Time-To-Live in seconds

FAQ: Why is X-Request-Cache-Ttl negative?

If the cache expires, it queues a job in the background to update the cache. So you're getting stale cache until the cache update completes.

Allowed HTTP(s) requests

GET: All requests are done via GET

The Jikan REST API does not provide authenticated requests for MyAnimeList. This means you can not use it to update your anime/manga lists.

Reasons:

  • Why on earth would you send your credentials to a 3rd party API?
  • MyAnimeList will block our IP after multiple failed login attempts

However, do not fret. This is possible via their own website. Read the Specification

Furthermore, JikanAuth is a PHP API which you can use to update your lists - it implements the Specification above. So feel free to come up with your own client-side solution.

Jikan

Jikan is an Unofficial MyAnimeList API. It scrapes the website to satisfy the need for an API - which MyAnimeList lacks.

The word Jikan literally translates to Time in Japanese (時間). And that's what this API saves you of. ;)

Notice: Jikan does not support authenticated requests. You can not update your lists.

⚡ Jikan is powered thanks to all its backers! 🙏 [Become a backer]

API Path: https://api.jikan.moe/v3

API Version: v3.4

Status | Report an Issue | Discord

Information

Wrappers

Wrappers are available in more than 10 different languages, see the Wrapper List

Rate Limiting

Daily Limit: Unlimited

  • 30 requests / minute
  • 2 requests / second

Note: Cached requests are NOT throttled

Bulk Requests

This API serves as a purpose for apps/projects that are user based and make a nominal amount of requests.

⚠️ If you're using the service for the sake of populating data/making your own database;

  • You are breaching MyAnimeList's Terms Of Service. You are responsible for what you're doing.
  • You MUST use a delay of 4 (FOUR) SECONDS between each request
  • Requesting from multiple servers/IPs is being cheeky and is NOT allowed
  • ABUSING THE API WILL RESULT IN GETTING BLOCKED FROM THE SERVICE

If you're not comfortable being that restrictive, consider setting up your own Jikan REST API - It's super easy.

Disclaimer

  • Jikan is not affiliated with MyAnimeList.net
  • Jikan is a free, open-source API. Use it responsibly!

JSON Notes

  • Any property (except arrays) whose value does not exist or is undetermined, will be null
  • Any array property whose value does not exist or is undetermined, will be empty
  • Any score property whose value does not exist or is undetermined, will be 0
  • All dates and timestamps are returned in ISO8601 format and in UTC

Caching

By "caching", we refer to the data parsed from MyAnimeList that is cached temporarily on our servers for better performance.

All requests by default are cached for 24 hours except for a few API endpoints which have their own unique cache expiry time.

Request Cache TTL
All (Default) 24 hours
Meta 5 minutes
User 5 minutes
Search 120 hours (5 days)

The following Response Headers will detail cache information

Header Remarks
Expires Expiry timestamp for the cache
X-Request-Cached (boolean) Is the request cached?
X-Request-Cache-Ttl (integer) Cache Time-To-Live in seconds

FAQ: Why is X-Request-Cache-Ttl negative?

If the cache expires, it queues a job in the background to update the cache. So you're getting stale cache until the cache update completes.

Allowed HTTP(s) requests

GET: All requests are done via GET

The Jikan REST API does not provide authenticated requests for MyAnimeList. This means you can not use it to update your anime/manga lists.

Reasons:

  • Why on earth would you send your credentials to a 3rd party API?
  • MyAnimeList will block our IP after multiple failed login attempts

However, do not fret. This is possible via their own website. Read the Specification

Furthermore, JikanAuth is a PHP API which you can use to update your lists - it implements the Specification above. So feel free to come up with your own client-side solution.

Constructors

Jikan()
Jikan

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

getAnime({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeDetails?>>
A single anime object with all its details.
inherited
getAnimeCharacterStaff({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeCharacterStaff?>>
List of character and staff members.
inherited
getAnimeEpisodes({required int animeId, int page = 1, Map<String, String>? headers}) Future<JikanResult<JikanAnimeEpisodes?>>
List of episodes.
inherited
getAnimeForum({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeForum?>>
List of Related forum topics
inherited
getAnimeMoreInfo({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanMoreInfo?>>
A string of more information (if any)
inherited
getAnimeNews({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeNews?>>
List of Related news
inherited
getAnimePictures({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimePictures?>>
List of Related pictures
inherited
getAnimeRecommendations({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeRecommendations?>>
List of Recommendations and their weightage made by users
inherited
getAnimeReviews({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeReviews?>>
List of Reviews written by users
inherited
getAnimeStats({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeStats?>>
Related statistical information
inherited
getAnimeUserUpdates({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeUserUpdates?>>
List of the latest list updates made by users
inherited
getAnimeVideos({required int animeId, Map<String, String>? headers}) Future<JikanResult<JikanAnimeVideos?>>
List of Promotional Videos & episodes (if any)
inherited
getManga({required int mangaId, Map<String, String>? headers}) Future<JikanResult<JikanMangaDetails?>>
A single manga object with all its details.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited