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