AniList API
graphql.anilist.co · Media
Anime and manga database with a GraphQL API — 200,000+ entries with detailed metadata, staff, characters, reviews, and user stats. Free, no key for public data.
Authentication
No authentication requiredFree to use with no key needed.
Sample Requests
POST
Search anime
Search for Spirited Away using GraphQL.
https://graphql.anilist.co
Hover any highlighted part to learn what it does
Headers — extra info sent with the request
| Accept | application/json |
| Content-Type | application/json |
Request Body — data you're sending
{
"query": "query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }",
"variables": {
"search": "Spirited Away"
}
}
curl -X POST "https://graphql.anilist.co/" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Content-Type: application/json" \
-d '{"query":"query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }","variables":{"search":"Spirited Away"}}'import requests
headers = {
"Accept": "application/json",
"Content-Type": "application/json"
}
data = {
"query": "query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }",
"variables": {
"search": "Spirited Away"
}
}
response = requests.post(
"https://graphql.anilist.co/",
headers=headers,
json=data,
)
print(response.json())const url = 'https://graphql.anilist.co/';
const response = await fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"query": "query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }",
"variables": {
"search": "Spirited Away"
}
}),
});
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"bytes"
"encoding/json"
)
func main() {
targetURL := "https://graphql.anilist.co/"
jsonData, _ := json.Marshal({"query":"query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }","variables":{"search":"Spirited Away"}})
req, _ := http.NewRequest("POST", targetURL, bytes.NewBuffer(jsonData))
req.Header.Set("Accept", "application/json")
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://graphql.anilist.co/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Post.new(uri)
req["Accept"] = "application/json"
req["Content-Type"] = "application/json"
req["Content-Type"] = "application/json"
req.body = "{\"query\":\"query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }\",\"variables\":{\"search\":\"Spirited Away\"}}"
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://graphql.anilist.co/";
$opts = ["http" => [
"method" => "POST",
"header" => implode("\r\n", [
"Accept: application/json",
"Content-Type: application/json",
"Content-Type: application/json"
]),
"content" => json_encode({"query":"query($search: String) { Media(search: $search, type: ANIME) { id title { romaji } episodes averageScore } }","variables":{"search":"Spirited Away"}}),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- No API key needed
- All requests are GraphQL POST to https://graphql.anilist.co
- Set Content-Type: application/json
- Explore schema at anilist.gitbook.io or graphiql.anilist.co
- Supports: Media (anime/manga), Character, Staff, Studio, User queries
What can you build with AniList API?
AniList API is a Media API. Developers commonly use media APIs for:
- storing and delivering images, video, and audio
- building digital asset management and media libraries
- transcoding and optimising media for the web
- adding video streaming and playback to your app
- automating content tagging and metadata extraction
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. AniList API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide