Anime-API
Anime-API copied to clipboard
Anime API (using web scraping)
⚡Anime-API⚡
Check it out at api-anime-rouge.vercel.app.
⚡ Web Scraping Status
| Anime Websites | STATUS |
|---|---|
| aniwatch | DONE |
| gogoanime | WORKING ON IT |
| kickassanime | IN FUTURE |
[!NOTE] More Websites Will be Added in Future
Index
- AniWatch
- GogoAnime
AniWatch
GET AniWatch Home Page
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/
Request sample
const resp = await fetch("https://api-anime-rouge.vercel.app/aniwatch/");
const data = await resp.json();
console.log(data);
Response Schema
{
spotlightAnimes: [
{
id: string,
name: string,
rank: number,
img: string,
episodes: {
eps: number,
sub: number,
dub: number,
},
duration: string,
quality: string,
category: string,
releasedDay: string,
descriptions: string,
},
{...},
],
trendingAnimes: [
{
id: string,
name: string,
img: string,
},
{...},
],
latestEpisodes: [
{
id: string,
name: string,
img: string,
episodes: {
eps: number,
sub: number,
dub: number,
},
duration: string,
rated: boolean,
},
{...},
],
top10Animes: {
day: [
{
id: string,
name: string,
rank: number,
img: string,
episodes: {
eps: number,
sub: number,
dub: number,
},
},
{...},
],
week: [...],
month: [...]
},
featuredAnimes: {
topAiringAnimes: [
{
id: string,
name: string,
img: string,
},
{...},
],
mostPopularAnimes: [
{
id: string,
name: string,
img: string,
},
{...},
],
mostFavoriteAnimes: [
{
id: string,
name: string,
img: string,
},
{...},
],
latestCompletedAnimes: [
{
id: string,
name: string,
img: string,
},
{...},
],
},
topUpcomingAnimes: [
{
id: string,
name: string,
img: string,
episodes: {
eps: number,
sub: number,
dub: number,
},
duration: string,
rated: boolean,
},
{...},
],
genres: string[]
}
GET AniWatch A to Z List Page
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/az-list?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch("https://api-anime-rouge.vercel.app/aniwatch/az-list?page=69");
const data = await resp.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"category": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
GET Anime About Info
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/anime/:id
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
id |
string | The unique Anime ID | YES | ----- |
[!NOTE] Anime ID should be In Kebab Case
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/anime/jujutsu-kaisen-2nd-season-18413"
);
const data = await res.json();
console.log(data);
Response Schema
{
"info": {
"id": string,
"anime_id": number,
"mal_id": number,
"al_id": number,
"name": string,
"img": string,
"rating": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
},
"category": string,
"quality": string,
"duration": string,
"description": string
},
"moreInfo": {
"Japanese:": string,
"Synonyms:": string,
"Aired:": string,
"Premiered:": string,
"Duration:": string,
"Status:": string,
"MAL Score:": string,
"Studios:": string[],
"Genres": string[],
"Producers": string[]
},
"seasons": [
{
"id": string,
"name": string,
"seasonTitle": string,
"img": string,
"isCurrent": boolean
},
{...},
},
"relatedAnimes": [
{
"id": string,
"name": string,
"category": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
"recommendedAnimes": [
{
"id": string,
"name": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
},
"duration": string,
"rated": boolean
},
{...},
],
"mostPopularAnimes": [
{
"id": string,
"name": string,
"category": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
}
GET Search Anime
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/search?keyword=$(query)&page=$(page)
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
query |
string | Search Query for Anime | YES | ----- |
page |
number | Page No. of Search Page | YES | 1 |
[!NOTE]
Search Query should be In Kebab CasePage No should be a Number
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/search?keyword=one+piece&page=1"
);
const data = await res.json();
console.log(data);
Response Schema
{
"animes": [
{
"id": string,
"name": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
},
"duration": string,
"rated": boolean
},
{...},
],
"mostPopularAnimes": [
{
"id": string,
"name": string,
"category": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
"currentPage": number,
"hasNextPage": boolean,
"totalPages": number,
"genres": string[]
}
GET Category Anime
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/:category?page=$(page)
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
category |
string | Search Query for Anime | YES | ----- |
page |
number | Page No. of Search Page | YES | 1 |
[!NOTE]
category should be In Kebab CasePage No should be a Number
[!TIP] Add type to Category - "subbed-anime" | "dubbed-anime" | "tv" | "movie" | "most-popular" | "top-airing" | "ova" | "ona" | "special" | "events";
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/ona?page=1"
);
const data = await res.json();
console.log(data);
Response Schema
{
"animes": [
{
"id": string,
"name": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
},
"duration": string,
"rated": boolean
},
{...},
],
"top10Animes": {
"day": [
{
"id": string,
"name": string,
"rank": number,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{..},
],
"week": [
{
"id": string,
"name": string,
"rank": number,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
"month": [
{
"id": string,
"name": string,
"rank": number,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
"category": string,
"genres": string[],
"currentPage": number,
"hasNextPage": boolean,
"totalPages": number
}
GET Anime Episodes
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/episodes/:id
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
id |
string | Anime ID | YES | ----- |
[!NOTE]
Anime ID should be In Kebab Case
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/episodes/one-piece-100"
);
const data = await res.json();
console.log(data);
Response Schema
{
"totalEpisodes": number,
"episodes": [
{
"name": string,
"episodeNo": number,
"episodeId": string,
"filler": boolean
},
{...},
]
}
GET Anime Episodes Servers
Endpoint
https://api-anime-rouge.vercel.app/aniwatch/servers?id=${id}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
id |
string | Episode ID | YES | ----- |
[!NOTE]
Episode ID should be In Kebab Case
important
[!NOTE]
id is a combination of AnimeId and EpisodeId
eg.
one-piece-100?ep=84802
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/servers?id=one-piece-100?ep=84802"
);
const data = await res.json();
console.log(data);
Response Schema
{
"episodeId": string,
"episodeNo": number,
"sub": [
{
"serverName": string,
"serverId": number
},
{...},
],
"dub": [
{
"serverName": string,
"serverId": number
},
{...},
],
}
GET Anime Episode Streaming Source Links
Endpoint
https://api-anime-rouge.vercel.app/anime/episode-srcs?id={episodeId}&server={server}&category={category}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
id |
string | episode Id | Yes | -- |
server |
string | server name. | No | "vidstreaming" |
category |
string | The category of the episode ('sub' or 'dub'). | No | "sub" |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/aniwatch/episode-srcs?id=solo-leveling-18718?ep=120094&server=vidstreaming&category=sub"
);
const data = await resp.json();
console.log(data);
[!CAUTION] decryption key changes frequently ..., it sometime may not work
Response Schema
{
headers: {
Referer: string,
"User-Agent": string,
...
},
sources: [
{
url: string,
isM3U8: boolean,
quality?: string,
},
{...}
],
subtitles: [
{
lang: "English",
url: string,
},
{...}
],
anilistID: number | null,
malID: number | null,
}
GoGoAnime
GET GoGoAnime Recent Releases
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/recent-releases?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/recent-releases"
);
const data = await res.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"img": string,
"episodeId": string,
"episodeNo": number,
"episodeUrl": string,
"subOrDub": string // "SUB" | "DUB"
},
{...},
]
GET GoGoAnime New Seasons
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/new-seasons?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/new-seasons"
);
const data = await res.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"img": string,
"releasedYear": string,
"animeUrl": string
},
{...},
]
GET GoGoAnime Popular
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/popular?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/popular"
);
const data = await res.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"img": string,
"releasedYear": string,
"animeUrl": string
},
{...},
]
GET GoGoAnime Anime Movies
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/anime-movies?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/anime-movies"
);
const data = await res.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"img": string,
"releasedYear": string,
"animeUrl": string
},
{...},
]
GET GoGoAnime Top Airing
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/top-airing?page=${page}
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
page |
number | Page No. of Search Page | YES | 1 |
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/top-airing"
);
const data = await res.json();
console.log(data);
Response Schema
[
{
"id": string,
"name": string,
"img": string,
"latestEp": string,
"animeUrl": string,
"genres": string[]
},
{...},
]
GET Search Anime
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/search?keyword=$(query)&page=$(page)
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
query |
string | Search Query for Anime | YES | ----- |
page |
number | Page No. of Search Page | YES | 1 |
[!NOTE]
Search Query should be In Kebab CasePage No should be a Number
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/search?keyword=one+piece&page=1"
);
const data = await res.json();
console.log(data);
Response Schema
{
"animes": [
{
"id": string,
"name": string,
"img": string,
"releasedYear": string
},
{...},
],
"mostPopularAnimes": [
{
"id": string,
"name": string,
"category": string,
"img": string,
"episodes": {
"eps": number,
"sub": number,
"dub": number
}
},
{...},
],
"currentPage": number,
"hasNextPage": boolean,
"totalPages": number
}
GET Anime About Info
Endpoint
https://api-anime-rouge.vercel.app/gogoanime/anime/:id
Query Parameters
| Parameter | Type | Description | Required? | Default |
|---|---|---|---|---|
id |
string | The unique Anime ID | YES | ----- |
[!NOTE] Anime ID should be In Kebab Case
Request sample
const resp = await fetch(
"https://api-anime-rouge.vercel.app/gogoanime/anime/one-piece"
);
const data = await res.json();
console.log(data);
Response Schema
{
"id": string,
"info": {
"name": string,
"img": string,
"type": string,
"genre": string[],
"status": string,
"aired_in": number,
"other_name": string,
"episodes": number
}
}
🖱️ For Front End
[!TIP] Kindly use this repo to make Front End
#############################################################################