Skip to content

Latest commit

 

History

History
320 lines (205 loc) · 4.37 KB

File metadata and controls

320 lines (205 loc) · 4.37 KB

Nozu API — JavaScript Examples

Nozu provides a free Anime & Manga REST API.

Base URL

https://nozu.me/api/v1

Public endpoints do not require an API key.


Search Anime

const response = await fetch(
    'https://nozu.me/api/v1/search?type=anime&q=naruto'
);

const data = await response.json();

console.log(data);

Search Manga

const response = await fetch(
    'https://nozu.me/api/v1/search?type=manga&q=berserk'
);

const data = await response.json();

console.log(data);

Advanced Search

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);

Latest

const response = await fetch(
    'https://nozu.me/api/v1/latest'
);

const data = await response.json();

console.log(data);

Trending

const response = await fetch(
    'https://nozu.me/api/v1/trending'
);

const data = await response.json();

console.log(data);

Popular

const response = await fetch(
    'https://nozu.me/api/v1/popular'
);

const data = await response.json();

console.log(data);

Current Season Popular Anime

const response = await fetch(
    'https://nozu.me/api/v1/season-popular'
);

const data = await response.json();

console.log(data);

Discover

const response = await fetch(
    'https://nozu.me/api/v1/discover'
);

const data = await response.json();

console.log(data);

Random Anime or Manga

const response = await fetch(
    'https://nozu.me/api/v1/random'
);

const data = await response.json();

console.log(data);

Autocomplete

const response = await fetch(
    'https://nozu.me/api/v1/autocomplete?q=naruto'
);

const data = await response.json();

console.log(data);

Anime Details

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);

Anime Details With Relations

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);

Manga Details

const slug = 'example-slug';

const response = await fetch(
    `https://nozu.me/api/v1/manga/${slug}`
);

const data = await response.json();

console.log(data);

Recommendations

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);

Studios

const response = await fetch(
    'https://nozu.me/api/v1/studios'
);

const data = await response.json();

console.log(data);

People

const response = await fetch(
    'https://nozu.me/api/v1/people'
);

const data = await response.json();

console.log(data);

Public User Profile

const username = 'username';

const response = await fetch(
    `https://nozu.me/api/v1/users/${username}`
);

const data = await response.json();

console.log(data);

Error Handling

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));

Rate Limit

The public API currently allows:

60 requests per minute per IP

Applications should respect the rate-limit headers and cache responses where appropriate.


Documentation

Full API documentation:

https://nozu.me/api

OpenAPI specification:

https://nozu.me/api/v1/openapi.json

Website:

https://nozu.me