/Anime-API

Anime API (using web scraping)

Primary LanguageTypeScript

⚡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: [...]
  },
  topAiringAnimes: [
    {
      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 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,
        "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

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 Recent Releases

Endpoint

https://api-anime-rouge.vercel.app/gogoanime/new-seasons

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
  },
  {...},
]

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

🖱️ For Front End

Tip

Kindly use this repo to make Front End

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

🤝 Thanks ❤️