The best free anime API in 2026 is AniList for most projects: a fast GraphQL API with airing schedules, cover art and no API key for public data. Jikan (unofficial MyAnimeList data) and Kitsu are strong alternatives, and specialist APIs cover quotes, reaction GIFs, manga and "what anime is this screenshot from?".
We tested every API in the anime category of the public-apis list on October 24, 2026 : 20 APIs, 11 of which need no key. Some are excellent. Some have documentation that's still online while the API itself is gone. Below are the 12 worth your time, with code we actually ran, the rate limits each server reported, and the ones to avoid.
The short list
| API | Best for | Key? | Rate limit (as tested) | Status on Oct 24 |
|---|---|---|---|---|
| AniList | Anime and manga data, airing schedules | No (OAuth for user lists) | 30 req/min (docs say 90) | Working, ~0.6 s |
| Jikan | MyAnimeList data (scores, rankings, reviews) | No | 3 req/s, 60 req/min | API unreachable |
| Kitsu | Anime and manga data, JSON:API | No (OAuth for user lists) | Not published | Working |
| MyAnimeList official | MAL data with an official contract | Client ID | Not published | Working |
| AnimeChan | Anime quotes | No | 100 req/day per IP | Working |
| trace.moe | Find the anime from a screenshot | No | 100 req/min, small quota | Working |
| nekos.best | Reaction GIFs (hug, pat, wave…) | No | 200 req/min | Working |
| Studio Ghibli | All 22 Ghibli films | No | Not published | Working |
| MangaDex | Manga metadata and chapters | No for reading | ~5 req/s | Working |
| MangaUpdates | Manga release tracking | No for reading | Not published | Working |
| AnimeNewsNetwork | Encyclopedia data (staff, cast) | No | 1 req/s | Working (XML) |
| AniDB | Deep episode/file metadata | Client registration | Strict; bans on abuse | For specialists |
"As tested" means the limit the server reported in its response headers or documentation when we checked. Live status for each is on its directory page and updates daily.
1. AniList: the best all-round anime API
AniList is a GraphQL API over the whole AniList database: anime, manga, characters, staff, studios and airing schedules with exact timestamps. Public data needs no key, it sends CORS headers (so it works straight from the browser), and you ask for exactly the fields you need.
const query = `query ($search: String) {
Media(search: $search, type: ANIME, isAdult: false) {
id siteUrl episodes averageScore genres
title { romaji english }
coverImage { large color }
nextAiringEpisode { episode airingAt }
}
}`;
const res = await fetch("https://graphql.anilist.co", {
method: "POST",
headers: { "Content-Type": "application/json", Accept: "application/json" },
body: JSON.stringify({ query, variables: { search: "Frieren" } }),
});
const { data } = await res.json();
console.log(data.Media.title.english, data.Media.averageScore); // "Frieren: Beyond Journey’s End" 91
Watch the rate limit. AniList's docs say 90 requests per minute, but every response we got carried x-ratelimit-limit: 30, so plan for 30. Go over and you get HTTP 429 with a Retry-After header. GraphQL helps here: one request can fetch 50 shows at once with Page { media(id_in: [...]) }.
Read AniList's terms before using it in a commercial product.
2. Jikan: MyAnimeList data without OAuth
Jikan is an unofficial, open-source REST API that serves MyAnimeList data: scores, rankings, seasons, reviews, recommendations. No key, simple URLs, and MAL's scores are what most fans quote.
const res = await fetch("https://api.jikan.moe/v4/anime?q=frieren&limit=1&sfw");
const { data } = await res.json();
console.log(data[0].title, data[0].score, data[0].images.jpg.image_url);
Useful endpoints: /v4/top/anime, /v4/seasons/now, /v4/random/anime, /v4/anime/{id}/recommendations.
The catch: reliability. On October 24 the Jikan website and docs loaded fine, but api.jikan.moe refused or timed out every connection we made from two different networks. It's a free, community-run service that scrapes MyAnimeList and caches responses for 24 hours; outages and slow responses happen. If you use it:
- Respect 3 requests per second and 60 per minute.
- Cache everything on your side, at least for hours.
- Have a fallback (AniList covers most of the same data).
3. Kitsu: JSON:API with posters and age ratings
Kitsu is a full anime and manga database exposed as a JSON:API. Reads need no key. The API moved from kitsu.io to kitsu.app (the old host still answers, but use the new one).
const url = "https://kitsu.app/api/edge/anime?filter[text]=frieren&page[limit]=1";
const { data } = await (await fetch(url)).json();
const a = data[0].attributes;
console.log(a.canonicalTitle, a.averageRating, a.episodeCount, a.ageRating);
// "Sousou no Frieren" "88.85" 28 "PG"
Kitsu's ageRating field is handy for filtering family-friendly results, and /api/edge/trending/anime is a ready-made "trending now" list. Page size maxes out at 20.
4. MyAnimeList's official API
If you need MAL data with an official agreement behind it, register an app on MyAnimeList and send your Client ID in an X-MAL-CLIENT-ID header to https://api.myanimelist.net/v2/. Reading public data only needs the Client ID; reading or editing a user's list needs OAuth 2. It's more setup than Jikan but doesn't depend on a third party.
5. AnimeChan: anime quotes
AnimeChan returns quotes with the character and anime they come from. Ideal for a quote-of-the-day widget or a bot command.
const res = await fetch("https://api.animechan.io/v1/quotes/random?anime=Naruto");
const { data } = await res.json();
console.log(`"${data.content}" (${data.character.name}, ${data.anime.name})`);
The free tier is 100 requests per day per IP , which is fine for a personal widget but not for a public app; cache quotes or pay for the premium tier. Older tutorials use animechan.xyz or animechan.vercel.app; the current API is api.animechan.io/v1.
6. trace.moe: "what anime is this from?"
trace.moe takes a screenshot and tells you the anime, episode and timestamp it came from. It's genuinely impressive; it has indexed over 1.7 billion frames.
const img = "https://images.plurk.com/32B15UXxymfSMwKGTObY5e.jpg";
const res = await fetch(`https://api.trace.moe/search?anilistInfo&cutBorders&url=${encodeURIComponent(img)}`);
const { result } = await res.json();
const top = result[0];
console.log(top.anilist.title.english, "ep", top.episode, "at", Math.round(top.from), "s", top.similarity);
// "Is the Order a Rabbit?? Season 2" ep 1 at 272 s 0.992
Anonymous users can run one search at a time with a small quota (GET /me shows yours). Treat a similarity below about 0.87 as "no match", and check anilist.isAdult before showing results publicly.
7. nekos.best: reaction GIFs
nekos.best serves SFW anime reaction GIFs and images for 60+ actions: hug, pat, wave, highfive, dance, thumbsup and more. Every result includes the anime it came from, which is good for attribution.
const { results } = await (await fetch("https://nekos.best/api/v2/hug")).json();
console.log(results[0].url, results[0].anime_name);
GET /api/v2/endpoints lists every action. The limit is 200 requests per minute.
8–12. Ghibli, manga and encyclopedia APIs
-
Studio Ghibli API (
https://ghibliapi.vercel.app/films): all 22 films with directors, release years, Rotten Tomatoes scores and posters. Static and small, so it's perfect for beginner projects. It's a community-hosted copy (the original Heroku app is gone). -
MangaDex (
https://api.mangadex.org/manga?title=...): the largest open manga database, with chapters and cover art. Reading needs no key (the directory lists one because uploads and user features do), but every request needs a realUser-Agent, and hotlinked cover images get swapped for a placeholder, so proxy images through your server. - MangaUpdates: release tracking and series metadata, good for "new chapter out" alerts.
- AnimeNewsNetwork Encyclopedia: staff, cast and production details as XML. Old-school but deep.
- AniDB: the most detailed episode metadata anywhere, but you must register a client and the rate limits are strict. Only for media-library tools.
Anime APIs to avoid right now
Our daily health checks and manual tests flagged these on October 24:
| API | Problem |
|---|---|
| AnimeFacts | Docs page is up, but the API host (a Heroku app) returns "No such app". Dead. |
| Shikimori | Timing out in our checks for consecutive days. |
| Waifu.pics | Failing TLS certificate checks. |
| Waifu.im | TLS certificate doesn't match api.waifu.im from our test machine. |
| AniAPI | The project's repository was archived in 2022 and the domain now serves a redirect page. Don't build on it. |
This is the trap with anime APIs: many are hobby projects whose docs outlive the service. Before you build on any API, check its directory page for the latest uptime.
Which anime API should you use?
- Building an app or website: AniList. Best data model, CORS-friendly, airing times built in.
- You want MyAnimeList scores and rankings: Jikan with caching and a fallback, or the official MAL API if you need a guarantee.
- You prefer REST over GraphQL: Kitsu.
- Discord bot: AniList for lookups, nekos.best for reactions, AnimeChan for quotes, trace.moe for screenshot search.
- Beginner project: Studio Ghibli API. Small, static and impossible to break.
- Manga reader or tracker: MangaDex plus MangaUpdates.
Tips for any anime API
- Cache aggressively. Anime metadata barely changes; a 24-hour cache cuts your requests by 95% and protects you from outages.
-
Filter adult content. Use
isAdult: false(AniList),sfw(Jikan) orageRating(Kitsu). Many databases include hentai entries by default. -
Store IDs, not titles. Titles vary (romaji, English, native). AniList and MAL IDs are stable, and AniList returns
idMalso you can map between them. - Credit the source. Most of these are community projects; a "Data from AniList" line is the least you can do.
See every API in the category, with live status and no-key filters, on the best anime APIs page or the anime APIs with no key list.

Top comments (0)