/Anime-API

Anime API (using web scraping)

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

⚡Anime-API⚡


api-anime-rouge.vercel.app



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

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 Case
Page 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 Search 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 Case
Page 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[]
  },
  {...},
]
#############################################################################

🖱️ For Front End

Tip

Kindly use this repo to make Front End

#############################################################################

🤝 Thanks ❤️