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.
2023-08-06 18:49:49 +05:30
2023-08-02 22:26:20 +05:30
2023-08-06 18:29:38 +05:30
2023-08-06 13:00:38 +00:00
2023-08-06 18:26:59 +05:30
2023-08-01 13:09:50 +05:30
2023-08-06 13:00:38 +00:00
2023-08-06 18:30:18 +05:30
2023-08-02 13:21:16 +05:30

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
  • Documentation
  • Development
  • Support
  • License

💻 Installation

Local Installation

  1. Rename the .env.example file to .env

  2. Fill out all the environment variables.

  3. 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. 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
query 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

Stars and pull requests are almost 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

S
Description
Languages
TypeScript 72.9%
HTML 21.2%
Dockerfile 3.2%
JavaScript 2%
Shell 0.7%