Nozu provides a free Anime & Manga REST API.
Base URL
https://nozu.me/api/v1
Public endpoints do not require an API key.
const response = await fetch(
'https://nozu.me/api/v1/search?type=anime&q=naruto'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/search?type=manga&q=berserk'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/search?type=anime&q=jujutsu&genre=Aksiyon&year=2020&sort=popularity&per_page=12'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/latest'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/trending'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/popular'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/season-popular'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/discover'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/random'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/autocomplete?q=naruto'
);
const data = await response.json();
console.log(data);Replace slug with a valid Nozu anime slug.
const slug = 'example-slug';
const response = await fetch(
`https://nozu.me/api/v1/anime/${slug}`
);
const data = await response.json();
console.log(data);const slug = 'example-slug';
const response = await fetch(
`https://nozu.me/api/v1/anime/${slug}?include=characters,relations,staff`
);
const data = await response.json();
console.log(data);const slug = 'example-slug';
const response = await fetch(
`https://nozu.me/api/v1/manga/${slug}`
);
const data = await response.json();
console.log(data);const slug = 'example-slug';
const response = await fetch(
`https://nozu.me/api/v1/recommendations/${slug}?limit=12`
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/studios'
);
const data = await response.json();
console.log(data);const response = await fetch(
'https://nozu.me/api/v1/people'
);
const data = await response.json();
console.log(data);const username = 'username';
const response = await fetch(
`https://nozu.me/api/v1/users/${username}`
);
const data = await response.json();
console.log(data);async function searchAnime(query) {
try {
const response = await fetch(
`https://nozu.me/api/v1/search?type=anime&q=${encodeURIComponent(query)}`
);
const data = await response.json();
if (!response.ok) {
throw new Error(
data.message || `HTTP error: ${response.status}`
);
}
return data;
} catch (error) {
console.error('Nozu API error:', error);
throw error;
}
}
searchAnime('Naruto')
.then(data => console.log(data))
.catch(error => console.error(error));The public API currently allows:
60 requests per minute per IP
Applications should respect the rate-limit headers and cache responses where appropriate.
Full API documentation:
OpenAPI specification:
https://nozu.me/api/v1/openapi.json
Website: