This api
does not store any files , it only link to the media which is hosted on 3rd party services.
This api
is explicitly made for educational purposes only and not for commercial usage. This repo will not be responsible for any misuse of it.
RestFul API made with Node.js (Checkout this anime streaming website Zenime powered by this API)
Make sure you have node installed on your device
Run the following code to clone the repository and install all required dependencies
$ git clone https://github.com/itzzzme/anime-api.git
$ cd anime-api
$ npm install
Refer the .env.example file to setup .env
file
# Origins you want to allow
ALLOWED_ORIGIN=< https://site1.com> ,< https://site2.com> ,...
Start the server
$ npm start # or npm run devStart
Host your own instance of anime-api on vercel
Host your own instance of anime-api on Render.
import axios from "axios" ;
const resp = await axios . get ( "/api/" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"spotlights" : [
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"description" : string ,
"tvInfo" : {
"showType" : string ,
"duration" : string ,
"releaseDate" : string ,
"quality" : string ,
"episodeInfo" : [ object ]
}
} ,
{ ...}
] ,
"trending" : [
{
"id" :string ,
"data_id" : number ,
"number" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
}
{ ...}
] ,
"today" :[
"schedule" :[
{
"id" :string ,
"data_id" :number ,
"title" :string ,
"japanese_title" :string ,
"releaseDate" :string ,
"time" :string ,
"episode_no" :number ,
} , { ...}
]
] ,
"topAiring" :[
{
"id" :string ,
"data_id" :number ,
"poster" :string ,
"title" :string ,
"japanese_title" :string ,
"description" :string ,
tvInfo :[ object ]
}
] ,
"mostPopular" :[
{
"id" :string ,
"data_id" :number ,
"poster" :string ,
"title" :string ,
"japanese_title" :string ,
"description" :string ,
tvInfo :[ object ]
} ,
"mostFavorite" :[
{
"id" :string ,
"data_id" :number ,
"poster" :string ,
"title" :string ,
"japanese_title" :string ,
"description" :string ,
tvInfo :[ object ]
}
] ,
"latestCompleted" :[
{
"id" :string ,
"data_id" :number ,
"poster" :string ,
"title" :string ,
"japanese_title" :string ,
"description" :string ,
tvInfo :[ object ]
}
] ,
"latestEpisode" :[
{
"id" :string ,
"data_id" :number ,
"poster" :string ,
"title" :string ,
"japanese_title" :string ,
"description" :string ,
tvInfo :[ object ]
}
] ,
"genres" :[
string ,
string ,
string ,
...
]
}
}
import axios from "axios" ;
const resp = await axios . get ( "/api/top-ten" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
"topTen" :[
"today" :[
{
"id" :string ,
"data_id" : number ,
"number" : number ,
"name" : string ,
"poster" : string ,
"tvInfo" : [ Object ]
} ,
{ ...}
] ,
"week" :[
{
"id" :string ,
"data_id" : number ,
"number" : number ,
"name" : string ,
"poster" : string ,
"tvInfo" : [ Object ]
} ,
{ ...}
] ,
"month" :[
{
"id" :string ,
"data_id" : number ,
"number" : number ,
"name" : string ,
"poster" : string ,
"tvInfo" : [ Object ]
} ,
{ ...}
] ,
]
]
}
GET
Specified anime's info
Parameter
Parameter-Type
Data-Type
Description
Mandatory ?
Default
id
query
string
anime-id
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get ( "/api/info?id=yami-shibai-9-17879" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"data" : {
"adultContent" :boolean ,
"id" :string ,
"data_id" : number ,
"title" : string ,
"japanese_title" : string ,
"poster" : string ,
"showType" :string ,
"animeInfo" : {
"Overview" : string ,
"Japanese" : string ,
"Synonyms" : string ,
"Aired" : string ,
"Premiered" : string ,
"Duration" : string ,
"Status" : string ,
"MAL Score" : string ,
"Genres" : [ Object ] ,
"Studios" : string ,
"Producers" : [ Object ]
}
} ,
"seasons" : [
{
"id" :string ,
"data_number" : number ,
"data_id" : number ,
"season" : string ,
"title" : string ,
"japanese_title" : string ,
"season_poster" : string
} ,
{ ...}
] ,
}
}
import axios from "axios" ;
const resp = await axios . get ( "/api/random" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"data" : {
"adultContent" :boolean ,
"id" :string ,
"data_id" : number ,
"title" : string ,
"japanese_title" : string ,
"poster" : string ,
"showType" :string ,
"animeInfo" : {
"Overview" : string ,
"Japanese" : string ,
"Synonyms" : string ,
"Aired" : string ,
"Premiered" : string ,
"Duration" : string ,
"Status" : string ,
"MAL Score" : string ,
"Genres" : [ Object ] ,
"Studios" : string ,
"Producers" : [ Object ]
}
} ,
"related_data" :[
[
{
"duration" : "string" ,
"data_id" : "number" ,
"id" : "string" ,
"title" : "string" ,
"japanese_title" : "string" ,
"poster" : "string" ,
"tvInfo" : {
"dub" : "number" ,
"sub" : "number" ,
"showType" : "string" ,
"eps" : "number"
}
} , { ...}
]
] ,
"recommended_data" :[
[
{
"duration" : "string" ,
"data_id" : "number" ,
"id" : "string" ,
"title" : "string" ,
"japanese_title" : "string" ,
"poster" : "string" ,
"tvInfo" : {
"dub" : "number" ,
"sub" : "number" ,
"showType" : "string" ,
"eps" : "number"
}
} , { ...}
]
] ,
"seasons" : [
{
"id" :string ,
"data_number" : number ,
"data_id" : number ,
"season" : string ,
"title" : string ,
"japanese_title" : string ,
"season_poster" : string
} ,
{ ...}
] ,
}
}
/api/{string}? page={number}
# or
/api/{string}
Parameter
Parameter-Type
Data-Type
Description
Mandatory ?
Default
category
path
string
Category
Yes ✔️
--
page
query
number
Page-no.
No ❌
1
top-airing
most-popular
most-favorite
completed
recently-updated
recently-added
top-upcoming
subbed-anime
dubbed-anime
top-upcoming
genre/action
genre/adventure
genre/cars
genre/comedy
genre/dementia
genre/demons
genre/drama
genre/ecchi
genre/fantasy
genre/game
genre/harem
genre/historical
genre/horror
genre/isekai
genre/josei
genre/kids
genre/magic
genre/martial-arts
genre/mecha
genre/military
genre/music
genre/mystery
genre/parody
genre/police
genre/psychological
genre/romance
genre/samurai
genre/school
genre/sci-fi
genre/seinen
genre/shoujo
genre/shoujo-ai
genre/shounen
genre/shounen-ai
genre/slice-of-life
genre/space
genre/sports
genre/super-power
genre/supernatural
genre/thriller
genre/vampire
az-list
az-list/other
az-list/0-9
az-list/a
az-list/b
az-list/c
az-list/d
az-list/e
az-list/f
az-list/g
az-list/h
az-list/i
az-list/j
az-list/k
az-list/l
az-list/m
az-list/n
az-list/o
az-list/p
az-list/q
az-list/r
az-list/s
az-list/t
az-list/u
az-list/v
az-list/w
az-list/x
az-list/y
az-list/z
movie
special
ova
ona
tv
import axios from "axios" ;
const resp = await axios . get ( "/api/most-popular?page=1" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"totalPages" : number ,
"data" : [
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"description" : string ,
"tvInfo" : {
"showType" : string ,
"duration" : string ,
"sub" : number ,
"dub" : number
} ,
"adultContent" :boolean ,
} ,
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"description" : string ,
"tvInfo" : {
"showType" : sting ,
"duration" : string ,
"sub" : number ,
"dub" : number ,
"eps" : number
} ,
"adultContent" :boolean ,
} ,
{ ...}
] ,
"totalPages" :number
}
}
GET
Anime of specific producers or studio
/api/producer/{string}? page={number}
# or
/api/producer/{string}
Parameter
Parameter-Type
Data-Type
Description
Mandatory ?
Default
producer
path
string
Producer
Yes ✔️
--
page
query
number
Page-no.
No ❌
1
import axios from "axios" ;
const resp = await axios . get ( "/api/producer/ufotable?page=1" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"totalPages" : number ,
"data" : [
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"description" : string ,
"tvInfo" : {
"showType" : string ,
"duration" : string ,
"sub" : number ,
"dub" : number
} ,
"adultContent" :boolean ,
} ,
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"description" : string ,
"tvInfo" : {
"showType" : sting ,
"duration" : string ,
"sub" : number ,
"dub" : number ,
"eps" : number
} ,
"adultContent" :boolean ,
} ,
{ ...}
] ,
"totalPages" :number
}
}
/api/search? keyword={string}
Parameter
Parameter-Type
Type
Description
Mandatory ?
Default
keyword
query
string
keyword
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get ( "/api/search?keyword=one%20punch%20man" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"tvInfo" : [ Object ]
} ,
{
"id" :string ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"tvInfo" : [ Object ]
} ,
{ ...}
]
}
/api/search/suggest? keyword={string}
Parameter
Parameter-Type
Type
Description
Mandatory ?
Default
keyword
query
string
keyword
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get ( "/api/search/suggest?keyword=demon" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
{
"id" :"string" ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"releaseDate" : string ,
"showType" : string ,
"duration" : string ,
} ,
{
"id" :"string" ,
"data_id" : number ,
"poster" : string ,
"title" : string ,
"japanese_title" : string ,
"releaseDate" : string ,
"showType" : string ,
"duration" : string ,
} ,
{ ...}
]
}
Parameter-Type
Data-Type
Description
Mandatory ?
Default
param
string
anime-id
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get ( "/api/episodes/one-piece-100" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
"totalEpisodes" :number ,
"episodes" :[
{ "episode_no" : number ,
"id" : string ,
"data_id" : number ,
"jname" : string ,
"title" : string ,
"japanese_title" : string
} ,
{ ...}
]
]
}
GET
Schedule of upcoming anime
/api/schedule? date={string}
Parameter
Parameter-Type
Data-Type
Description
Mandatory ?
Default
date
query
string
anime-id
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get ( "/api/schedule?date=2024-09-23" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
{
"id" :string ,
"data_id" :number ,
"title" :string ,
"japanese_title" :string ,
"releaseDate" :string ,
"time" :string ,
"episode_no" :number
} ,
{ ...}
]
}
Parameter
Data-Type
Description
Mandatory ?
Default
param
number
id
Yes ✔️
Yes ✔️
import axios from "axios" ;
const resp = await axios . get ( "/api/qtip/3365" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"title" : string ,
"rating" : double ,
"quality" : string ,
"subCount" : number ,
"dubCount" : number ,
"episodeCount" : number ,
"type" : string ,
"description" : string ,
"japaneseTitle" : string ,
"Synonyms" : string ,
"airedDate" : string ,
"status" : string ,
"genres" : [ Object ] ,
"watchLink" : string
}
}
Parameter-Type
Data-Type
Description
Mandatory ?
Default
param
string
anime-id
Yes ✔️
Yes ✔️
import axios from "axios" ;
const resp = await axios . get ( "/api/character/list/one-piece-100" ) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"currentPage" : number ,
"totalPages" : number ,
"data" : [
{
"character" : {
"id" : string ,
"poster" : string ,
"name" : string ,
"cast" : string
} ,
"voiceActors" : [
{
"id" : string ,
"poster" : string ,
"name" : string
} ,
{
"id" : string ,
"poster" : string ,
"name" : string
} ,
{ ...}
]
} , { ...}
]
}
}
Parameter
Parameter-Type
Type
Description
Mandatory ?
Default
id
query
string
keyword
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get (
"/api/stream?id=frieren-beyond-journeys-end-18542?ep=107257"
) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : {
"streamingLink" : [
{
"id" :number ,
"type" : "dub" ,
"link" : {
"file" :string ,
"type" :string ,
} ,
"tracks" : [
{
"file" : string ,
"label" : string ,
"kind" : string ,
"default" : boolean
} , { ...}
] ,
"intro" : [ Object ] ,
"outro" : [ Object ] ,
"server" :string
}
{ ...} ,
{
"id" :number ,
"type" : "sub" ,
"link" : {
"file" :string ,
"type" :string ,
} ,
"tracks" : [
{
"file" : string ,
"label" : string ,
"kind" : string ,
"default" : boolean
} , { ...}
] ,
"intro" : [ Object ] ,
"outro" : [ Object ] ,
"server" :string
} ,
{ ...}
] ,
"servers" : [
{
"type" :string ,
"data_id" : number ,
"server_id" : number ,
"server_name" : string
} ,
{ ...}
]
}
}
GET
Available servers of anime
Parameter-Type
Data-Type
Description
Mandatory ?
Default
params
string
keyword
Yes ✔️
--
import axios from "axios" ;
const resp = await axios . get (
"/api/servers/demon-slayer-kimetsu-no-yaiba-hashira-training-arc-19107?ep=124260"
) ;
console . log ( resp . data ) ;
{
"success" : true ,
"results" : [
{
"type" : string ,
"data_id" : number ,
"server_id" : number ,
"serverName" : string
} ,
{ ...} ,
]
}
Pull requests are welcomed that address bug fixes, improvements, or new features.
Fork the repository and create a new branch for your changes.
Ensure your code follows our coding standards.
Include tests if applicable.
Describe your changes clearly in the pull request, explaining the problem and solution.
If you discover any issues or have suggestions for improvement, please open an issue. Provide a clear and concise description of the problem, steps to reproduce it, and any relevant information about your environment.
If you like the project feel free to drop a star ✨. Your appreciation means a lot.
Made by itzzzme
🫰