Introdução Autenticação Rate Limits GET /anime GET /search GET /:slug GET /meta GET /genres GET /studios Erros

Documentação

API REST pública, sem autenticação, que expõe o catálogo completo do eurekanimes. Ideal para apps, bots, scripts e integrações que precisam de dados sobre animes, gêneros e estúdios brasileiros. Todos os endpoints retornam JSON e suportam CORS — pode chamar direto do browser.

Base URL https://eurekanimes.com.br/api

Sem chave de API

Os endpoints de leitura são completamente abertos — nenhum token, header ou cadastro necessário. Basta fazer o request direto.

Uso justo. A API é gratuita para uso não comercial. Respeite os rate limits e não redistribua o catálogo em massa. Projetos com volume alto podem entrar em contato.

Limites de requisição

Os limites são por IP. Ao exceder, a API retorna 429 com o header Retry-After indicando quantos segundos aguardar.

Endpoints Limite Janela
/anime, /anime/:slug, /anime/meta, /genres, /studios 60 req por minuto
/anime/search 30 req por minuto
GET /anime

Lista animes publicados com filtros e paginação. Todos os parâmetros são opcionais e combináveis.

Parâmetros

genre
string
Slug do gênero. Use /genres para a lista completa.
studio
string
Slug do estúdio. Use /studios para a lista completa.
year
integer
Ano de lançamento. Intervalo: 1900–2100.
type
string
Tipo do anime. Valores: TV, Movie, OVA, ONA, Special, Music.
status
string
Status. Valores: Em exibição, Finalizado, Não iniciado.
season
string
Temporada. Valores: Inverno, Primavera, Verão, Outono.
min_score
number
Nota mínima — usa a maior entre AniList e MAL. Intervalo: 0–10.
has_trailer
boolean
true retorna apenas animes com trailer; false apenas os sem trailer.
sort
string
Ordenação. Valores: newest, oldest, score_desc, score_asc, title_asc, title_desc. Padrão: title_asc.
per_page
integer
Itens por página. Máx: 25. Padrão: 25.
page
integer
Número da página. Máx: 500. Padrão: 1.
# Animes do estúdio 100studio, ordenados por nota
curl "https://eurekanimes.com.br/api/anime?studio=100studio&sort=score_desc&per_page=10"

# Combinando filtros: ação em exibição em 2025
curl "https://eurekanimes.com.br/api/anime?genre=drama&status=Em+exibição&year=2025"
// Animes do estúdio 100studio, ordenados por nota
const params = new URLSearchParams({
  studio:   '100studio',
  sort:     'score_desc',
  per_page: 10,
});

const res  = await fetch(`https://eurekanimes.com.br/api/anime?${params}`);
const json = await res.json();

json.data;       // array de animes
json.meta;       // { current_page, last_page, total, ... }
import requests

r = requests.get(
    'https://eurekanimes.com.br/api/anime',
    params={
        'studio':   '100studio',
        'sort':     'score_desc',
        'per_page': 10,
    },
)

data = r.json()['data']    # lista de animes
meta = r.json()['meta']    # paginação
$qs = http_build_query([
    'studio'   => '100studio',
    'sort'     => 'score_desc',
    'per_page' => 10,
]);

$json  = file_get_contents("https://eurekanimes.com.br/api/anime?{$qs}");
$data  = json_decode($json, true);
$animes = $data['data'];    // array de animes
GET /anime/:slug  ·  /anime/:id

Detalhes completos de um anime: sinopse, gêneros, estúdios, personagens, episódios e músicas. Aceita tanto o slug quanto o ID numérico do eurekanimes.

Path — uma das duas formas

slugou id
string
Slug legível (ex: summer) ou ID numérico (ex: 34). Obtenha via /anime ou /anime/search.
# Por slug
curl "https://eurekanimes.com.br/api/anime/summer"

# Por ID numérico — mesma resposta
curl "https://eurekanimes.com.br/api/anime/34"
// Por slug ou por ID — mesma resposta
const { data } = await fetch('https://eurekanimes.com.br/api/anime/summer').then(r => r.json());
const { data: same } = await fetch('https://eurekanimes.com.br/api/anime/34').then(r => r.json());

data.title;         // "_Summer"
data.score;         // nota (AniList > MAL)
data.genres;        // [{ id, name, slug }, ...]
data.episodes_list; // [{ number, title, aired, ... }, ...]
# Por slug ou por ID
data = requests.get('https://eurekanimes.com.br/api/anime/summer').json()['data']
data = requests.get('https://eurekanimes.com.br/api/anime/34').json()['data']  # equivalente

print(data['title'])           # "_Summer"
print(data['score'])           # nota
print(data['episodes_list'])   # lista de episódios
// Por slug ou por ID — mesma resposta
$data = json_decode(file_get_contents('https://eurekanimes.com.br/api/anime/summer'), true)['data'];
$data = json_decode(file_get_contents('https://eurekanimes.com.br/api/anime/34'), true)['data']; // equivalente

echo $data['title'];           // "_Summer"
echo $data['score'];           // nota

Resposta de exemplo

{
    : {
        : 4355,
        : "summer",
        : "_Summer",
        : null,
        : "OVA",
        : 2,
        : "Finalizado",
        : 2006,
        : "5.00",
        : "AniList",
        : "/storage/images/anime/ccc83973c36592a74585e22a87606a3a.jpg",
        : [
            {
                : 12,
                : "Drama",
                : "drama"
            },
            {
                : 18,
                : "Romance",
                : "romance"
            }
        ],
        : [
            {
                : 441,
                : "Rikuentai",
                : "rikuentai"
            }
        ],
        : "(string)",
        : "[(+ mais campos)]",
        : "[(+ mais campos)]",
        : "[(+ mais campos)]"
    }
}
GET /anime/meta

Retorna os valores aceitos pelos filtros de /anime. Útil para popular selects ou validar parâmetros sem depender de documentação estática.

curl "https://eurekanimes.com.br/api/anime/meta"
const { filters } = await fetch('https://eurekanimes.com.br/api/anime/meta').then(r => r.json());

filters.status;  // ['Em exibição', 'Finalizado', 'Não iniciado']
filters.season;  // ['Inverno', 'Primavera', 'Verão', 'Outono']
filters.type;    // ['TV', 'Movie', 'OVA', ...]
filters = requests.get('https://eurekanimes.com.br/api/anime/meta').json()['filters']
print(filters['status'])   # ['Em exibição', ...]
$filters = json_decode(file_get_contents('https://eurekanimes.com.br/api/anime/meta'), true)['filters'];

Resposta

: {
  : ["Em exibição", "Finalizado", "Não iniciado"],
  : ["Inverno", "Primavera", "Verão", "Outono"],
  :   ["TV", "Movie", "OVA", "ONA", "Special", "Music"],
  :   ["newest", "oldest", "score_desc", "score_asc", "title_asc", "title_desc"]
}
GET /genres

Lista todos os gêneros disponíveis no catálogo. Resposta cacheada por 6 horas.

curl "https://eurekanimes.com.br/api/genres"
const { data } = await fetch('https://eurekanimes.com.br/api/genres').then(r => r.json());
// data = [{ id, name, slug }, ...]
// Passe o slug como ?genre= em /anime
genres = requests.get('https://eurekanimes.com.br/api/genres').json()['data']
$genres = json_decode(file_get_contents('https://eurekanimes.com.br/api/genres'), true)['data'];

Resposta de exemplo

{
    : [
        {
            : 1,
            : "Ação",
            : "action"
        },
        {
            : 64,
            : "Ambiente de Trabalho",
            : "workplace"
        },
        {
            : 74,
            : "Animais de Estimação",
            : "pets"
        }
    ]
}
GET /studios

Lista todos os estúdios disponíveis no catálogo. Resposta cacheada por 6 horas. Use o slug retornado como ?studio= em /anime.

curl "https://eurekanimes.com.br/api/studios"
const { data } = await fetch('https://eurekanimes.com.br/api/studios').then(r => r.json());
// Filtre animes de um estúdio com /anime?studio=slug
studios = requests.get('https://eurekanimes.com.br/api/studios').json()['data']
$studios = json_decode(file_get_contents('https://eurekanimes.com.br/api/studios'), true)['data'];

Resposta de exemplo

{
    : [
        {
            : 70,
            : "100studio",
            : "100studio"
        },
        {
            : 682,
            : "10Gauge",
            : "10gauge"
        },
        {
            : 897,
            : "1IN",
            : "1in"
        }
    ]
}

Códigos de resposta

Código Significado
200 Sucesso. A resposta inclui o campo data (e meta quando paginada).
422 Parâmetro inválido. O campo errors lista o que está errado e os valores aceitos.
404 Anime não encontrado ou não publicado.
429 Rate limit atingido. Aguarde o número de segundos em Retry-After.
500 Erro interno. Se persistir, entre em contato.
Erros sempre em JSON. Todos os endpoints retornam application/json independente do header Accept enviado.

Dados fornecidos para uso não comercial · Respeite os rate limits