This repository has been archived on 2026-07-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
aniwatch-api/README.md
T
2023-08-06 20:34:05 +05:30

11 KiB

Logo

Zoro.to API

A free restful API serving anime information from zoro.to

Bug report · Feature request

codeql stars GitHub

Work In Progress 🛠️

This api is currently a work in progress

Table of Contents

💻 Installation

Local Installation

  1. Run the following command to clone the repository and install the dependencies.
git clone https://github.com/ghoshRitesh12/zoro.to-api.git

cd zoro.to-api

npm ci #or yarn install
  1. Rename the .env.example file to .env and update any details required

  2. Start the server!

npm start #or yarn start

Now the server should be running on http://localhost:4000

📚 Documentation

Below are the endpoints exposed by the api:

GET Anime Home Page

Endpoint

http://localhost:4000/anime/home

Request sample

const resp = await fetch("http://localhost:4000/anime/home");
const data = await resp.json();
console.log(data);

Response Schema

{
  "genres": ["Action", "Cars", "Adventure", ...],
  "latestEpisodeAnimes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "spotlightAnimes": [
    {
      "id": "string",
      "name": "string",
      "jname": "string",
      "poster": "string",
      "description": "string",
      "rank": "number",
    },
    {...},
  ],
  "top10Animes": {
    "today": [
      {
        "episodes": {
          "sub": "number",
          "dub": "number",
        },
        "id": "string",
        "name": "string",
        "poster": "string",
        "rank": "number"
      },
      {...},
    ],
    "month": [...],
    "week": [...]
  },
  "topAiringAnimes": [
    {
      "id": "string",
      "name": "string",
      "jname": "string",
      "poster": "string",
    },
    {...},
  ],
  "topUpcomingAnimes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "trendingAnimes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "rank": "number",
    "},"
    {...},
  ],
}

GET Anime About Info

Endpoint

http://localhost:4000/anime/info?id={anime-id}

Query Parameters

Parameter Type Description Required? Default
id "string" The unique anime id. Yes --

Request sample

const resp = await fetch(
  "http://localhost:4000/anime/info?id=attack-on-titan-112"
);
const data = await resp.json();
console.log(data);

Response Schema

{
  "anime": [
    "info": {
      "id": "string",
      "name": "string"","
      "poster": "string",
      "description": "string",
      "stats": {
        "rating": "string",
        "quality": "string",
        "episodes": {
          "sub": "number",
          "dub": "number"
        },
        "type": "string",
        "duration": "string"
      }
    }
    "moreInfo": {
      "aired": "string",
      "genres": ["Action", "Mystery", ...],
      "status": "string",
      "studios": "string",
      "duration": "string"
      ...
    }
  ],
  "mostPopularAnimes": [
    {
      "episodes": {
        "sub": "number",
        "dub": "number",
      },
      "id": "string",
      "jname": "string",
      "name": "string",
      "poster": "string",
      "type": "string"
    },
    {...},
  ],
  "recommendedAnimes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "relatedAnimes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "seasons": [
    {
      "id": "string",
      "name": "string",
      "title": "string",
      "poster": "string",
      "isCurrent": "boolean"
    },
    {...}
  ]
}

GET Search Results

Endpoint

http://localhost:4000/anime/search?q={query}&page={page}

Query Parameters

Parameter Type Description Required? Default
q "string" The search query, i.e. the title of the item you are looking for. Yes --
page number The page number of the result. No 1

Request sample

const resp = await fetch("http://localhost:4000/anime/search?q=titan&page=1");
const data = await resp.json();
console.log(data);

Response Schema

{
  "animes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "mostPopularAnimes": [
    {
      "episodes": {
        "sub": "number",
        "dub": "number",
      },
      "id": "string",
      "jname": "string",
      "name": "string",
      "poster": "string",
      "type": "string"
    },
    {...},
  ],
  "totalPages": 1,
  "currentPage": 1,
  "hasNextPage": false
}

GET Genre Animes

Endpoint

http://localhost:4000/anime/genre/{name}?page={page}

Path Parameters

Parameter Type Description Required? Default
name "string" The name of anime genre. Yes --

Query Parameters

Parameter Type Description Required? Default
page number The page number of the result. No 1

Request sample

const resp = await fetch("http://localhost:4000/anime/genre/shounen?page=2");
const data = await resp.json();
console.log(data);

Response Schema

{
  "animes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "genreName": "string",
  "genres": ["Action", "Cars", "Adventure", ...]
  "topAiringAnimes": [
    {
      "episodes": {
        "sub": "number",
        "dub": "number",
      },
      "id": "string",
      "jname": "string",
      "name": "string",
      "poster": "string",
      "type": "string"
    },
    {...},
  ],
  "totalPages": 38,
  "currentPage": 2,
  "hasNextPage": true
}

GET Category Anime

Endpoint

http://localhost:4000/anime/{category}?page={page}

Path Parameters

Parameter Type Description Required? Default
category "string" The category of anime. Yes --

Query Parameters

Parameter Type Description Required? Default
page number The page number of the result. No 1

Request sample

const resp = await fetch("http://localhost:4000/anime/tv?page=2");
const data = await resp.json();
console.log(data);

Response Schema

{
  "animes": [
    {
      "id": "string",
      "name": "string",
      "poster": "string",
      "duration": "string",
      "type": "string",
      "rating": "string",
      "episodes": {
        "sub": "number",
        "dub": "number",
      }
    },
    {...},
  ],
  "category": "string",
  "genres": ["Action", "Cars", "Adventure", ...]
  "top10Animes": {
    "today": [
      {
        "episodes": {
          "sub": "number",
          "dub": "number",
        },
        "id": "string",
        "name": "string",
        "poster": "string",
        "rank": "number"
      },
      {...},
    ],
    "month": [...],
    "week": [...]
  },
  "totalPages": 100,
  "currentPage": 2,
  "hasNextPage": true
}

👨‍💻 Development

Pull requests and stars are always welcome. If you encounter any bug or want to add a new feature to this api, consider creating a new issue. If you wish to contribute to this project, read the CONTRIBUTING.md file.

🙌 Support

Don't forget to leave a star 🌟

📜 License

MIT License