Nozu provides a free Anime & Manga REST API.
Base URL
https://nozu.me/api/v1
Public endpoints do not require an API key.
These examples use the requests package.
Install it with:
pip install requestsimport requests
url = "https://nozu.me/api/v1/search"
params = {
"type": "anime",
"q": "naruto"
}
response = requests.get(url, params=params)
data = response.json()
print(data)import requests
url = "https://nozu.me/api/v1/search"
params = {
"type": "manga",
"q": "berserk"
}
response = requests.get(url, params=params)
data = response.json()
print(data)import requests
url = "https://nozu.me/api/v1/search"
params = {
"type": "anime",
"q": "jujutsu",
"genre": "Aksiyon",
"year": 2020,
"sort": "popularity",
"per_page": 12
}
response = requests.get(url, params=params)
data = response.json()
print(data)import requests
response = requests.get(
"https://nozu.me/api/v1/latest"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/trending"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/popular"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/season-popular"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/discover"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/random"
)
print(response.json())import requests
params = {
"q": "naruto"
}
response = requests.get(
"https://nozu.me/api/v1/autocomplete",
params=params
)
print(response.json())Replace example-slug with a valid Nozu anime slug.
import requests
slug = "example-slug"
response = requests.get(
f"https://nozu.me/api/v1/anime/{slug}"
)
print(response.json())import requests
slug = "example-slug"
params = {
"include": "characters,relations,staff"
}
response = requests.get(
f"https://nozu.me/api/v1/anime/{slug}",
params=params
)
print(response.json())import requests
slug = "example-slug"
response = requests.get(
f"https://nozu.me/api/v1/manga/{slug}"
)
print(response.json())import requests
slug = "example-slug"
params = {
"limit": 12
}
response = requests.get(
f"https://nozu.me/api/v1/recommendations/{slug}",
params=params
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/studios"
)
print(response.json())import requests
response = requests.get(
"https://nozu.me/api/v1/people"
)
print(response.json())import requests
username = "username"
response = requests.get(
f"https://nozu.me/api/v1/users/{username}"
)
print(response.json())import requests
def search_anime(query):
url = "https://nozu.me/api/v1/search"
params = {
"type": "anime",
"q": query
}
try:
response = requests.get(
url,
params=params,
timeout=10
)
response.raise_for_status()
return response.json()
except requests.RequestException as error:
print(f"Nozu API error: {error}")
raise
data = search_anime("Naruto")
print(data)The public API currently allows:
60 requests per minute per IP
Applications should cache responses where appropriate and avoid unnecessary requests.
Full API documentation:
OpenAPI specification:
https://nozu.me/api/v1/openapi.json
Website: