animedex shikimori
Shikimori is a Russian-language catalogue with MAL-flavoured IDs, REST resources, and a GraphQL surface. animedex wraps the anonymous REST entity surfaces for anime, manga, ranobe, clubs, publishers, top-level people, taxonomies, and anime rails as high-level commands, while GraphQL remains available through animedex api shikimori.
References
Site |
|
API documentation v2 |
|
API documentation v1 |
|
GraphQL documentation |
|
Python module |
|
Rich models |
Backend: Shikimori (
shikimori.iocanonical;shikimori.oneremains a transport alias).Rate limit: 5 RPS / 90 RPM.
Auth: not required for the commands on this page.
Core lookups
Anime by Shikimori ID — show()
animedex shikimori show 52991 --jq '{id, name, status, episodes}'
# => {
# "id": 52991,
# "name": "Sousou no Frieren",
# "status": "released",
# "episodes": 28
# }
Search by title — search()
animedex shikimori search Frieren --limit 2 --jq '[.[0].name]'
# => [
# "Sousou no Frieren"
# ]
Manga search and detail
Python entry points: manga_search(), manga_show().
animedex shikimori manga-search Berserk --limit 2 --jq '[.[0] | {id, name, kind, status}]'
# => [
# {
# "id": 2,
# "name": "Berserk",
# "kind": "manga",
# "status": "ongoing"
# }
# ]
animedex shikimori manga-show 2 --jq '{id, name, kind, status, myanimelist_id}'
# => {
# "id": 2,
# "name": "Berserk",
# "kind": "manga",
# "status": "ongoing",
# "myanimelist_id": 2
# }
Ranobe
Python entry points: ranobe_search(), ranobe_show().
animedex shikimori ranobe-search Monogatari --limit 2 --jq '[.[0] | {id, name, kind}]'
# => [
# {
# "id": 23751,
# "name": "Monogatari Series: Second Season",
# "kind": "light_novel"
# }
# ]
animedex shikimori ranobe-show 23751 --jq '{id, name, kind, volumes, chapters}'
# => {
# "id": 23751,
# "name": "Monogatari Series: Second Season",
# "kind": "light_novel",
# "volumes": 6,
# "chapters": 199
# }
Clubs, publishers, and people
Python entry points: club_search(), publishers(), person().
animedex shikimori club-search anime --limit 3 --jq '[.[0] | {id, name, join_policy}]'
# => [
# {
# "id": 746,
# "name": "Anime Glitch",
# "join_policy": "free"
# }
# ]
animedex shikimori publishers --jq '[.[0] | {id, name}]'
# => [
# {
# "id": 1510,
# "name": "Web Action"
# }
# ]
animedex shikimori person 1870 --jq '{id, name, website}'
# => {
# "id": 1870,
# "name": "Hayao Miyazaki",
# "website": "http://www.ghibli.jp/"
# }
Calendar — calendar()
animedex shikimori calendar --limit 3 --jq '.[0:3] | map({episode: .next_episode, title: .anime.name})'
Media rails
animedex shikimori screenshots 52991 --jq '.[0:3] | map(.preview)'
animedex shikimori videos 52991 --jq '[.[0:3][] | {name, kind, url}]'
Relationship and taxonomy commands
Command |
Python entry point |
Returns |
|---|---|---|
|
|
|
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GraphQL remains available through the raw passthrough:
animedex api shikimori /api/graphql --graphql '{ animes(ids:"52991"){ id name score } }'
The Python library page covers the same surface from inside Python.