eurekanimes · API Pública
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.
https://eurekanimes.com.br/api
Autenticação
Sem chave de API
Os endpoints de leitura são completamente abertos — nenhum token, header ou cadastro necessário. Basta fazer o request direto.
Rate Limits
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 |
Lista animes publicados com filtros e paginação. Todos os parâmetros são opcionais e combináveis.
Parâmetros
/genres para a lista completa./studios para a lista completa.1900–2100.TV, Movie, OVA, ONA, Special, Music.Em exibição, Finalizado, Não iniciado.Inverno, Primavera, Verão, Outono.0–10.true retorna apenas animes com trailer; false apenas os sem trailer.newest, oldest, score_desc, score_asc, title_asc, title_desc. Padrão: title_asc.25. Padrão: 25.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
Busca textual por título. Pesquisa simultaneamente no título original, inglês, japonês e português.
Parâmetros
25. Padrão: 25.200. Padrão: 1.curl "https://eurekanimes.com.br/api/anime/search?q=_Summer&per_page=5"
const res = await fetch( `https://eurekanimes.com.br/api/anime/search?q=${encodeURIComponent('_Summer')}&per_page=5` ); const { data } = await res.json();
r = requests.get( 'https://eurekanimes.com.br/api/anime/search', params={'q': '_Summer', 'per_page': 5}, ) results = r.json()['data']
$url = 'https://eurekanimes.com.br/api/anime/search?' . http_build_query(['q' => '_Summer', 'per_page' => 5]); $results = json_decode(file_get_contents($url), true)['data'];
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
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
{
"data": {
"id": 4355,
"slug": "summer",
"title": "_Summer",
"title_english": null,
"type": "OVA",
"episodes": 2,
"status": "Finalizado",
"year": 2006,
"score": "5.00",
"score_source": "AniList",
"image_url": "/storage/images/anime/ccc83973c36592a74585e22a87606a3a.jpg",
"genres": [
{
"id": 12,
"name": "Drama",
"slug": "drama"
},
{
"id": 18,
"name": "Romance",
"slug": "romance"
}
],
"studios": [
{
"id": 441,
"name": "Rikuentai",
"slug": "rikuentai"
}
],
"synopsis": "(string)",
"characters": "[(+ mais campos)]",
"episodes_list": "[(+ mais campos)]",
"themes": "[(+ mais campos)]"
}
}
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
"filters": { "status": ["Em exibição", "Finalizado", "Não iniciado"], "season": ["Inverno", "Primavera", "Verão", "Outono"], "type": ["TV", "Movie", "OVA", "ONA", "Special", "Music"], "sort": ["newest", "oldest", "score_desc", "score_asc", "title_asc", "title_desc"] }
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
{
"data": [
{
"id": 1,
"name": "Ação",
"slug": "action"
},
{
"id": 64,
"name": "Ambiente de Trabalho",
"slug": "workplace"
},
{
"id": 74,
"name": "Animais de Estimação",
"slug": "pets"
}
]
}
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
{
"data": [
{
"id": 70,
"name": "100studio",
"slug": "100studio"
},
{
"id": 682,
"name": "10Gauge",
"slug": "10gauge"
},
{
"id": 897,
"name": "1IN",
"slug": "1in"
}
]
}
Referência
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. |
application/json independente do header Accept enviado.
Dados fornecidos para uso não comercial · Respeite os rate limits