AniList anime or manga
One anime or manga by AniList id, link or MyAnimeList id: id, MyAnimeList id, type, format, status, titles (romaji, English, native), synonyms, description, start and end dates, season, episodes, duration, chapters, volumes, country, source, cover and banner, genres, average and mean score, popularity, favourites, trending, next airing episode, studios and link, plus tags (with spoiler flags), trailer, external and streaming links, streaming episodes, rankings, score and status distributions, related titles, the top 25 characters with Japanese voice actors, top 25 staff, top 10 recommendations and the top 5 reviews. Also airing_schedule (episode numbers with their air time, first 25 known episodes; airing_schedule_total gives the full count), upcoming_episodes (next 25 episodes not yet aired, with seconds until airing).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
id | string | AniList id (from an anilist.co link), e.g. 154587 (Frieren). Example: 154587 |
mal_id | string | Or the MyAnimeList id, with type (ANIME or MANGA). |
type | ANIME | MANGA | With mal_id: ANIME (default) or MANGA. |
url | string | Or an anilist.co/anime/... or /manga/... link. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/anilist/v1/media?id=154587" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/anilist/v1/media",
params={"id": "154587"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/anilist/v1/media");
url.searchParams.set("id", "154587");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).