{"_id":"@dovakiin0/aniwatch","_rev":"3-749bd1e32dd1152c3653bd2d3cdc73cc","name":"@dovakiin0/aniwatch","dist-tags":{"latest":"2.24.6-custom-1"},"versions":{"2.24.6":{"name":"@dovakiin0/aniwatch","version":"2.24.6","keywords":["anime","hianime","aniwatch","hianimez.to","aniwatch.to","scraper","package"],"author":{"url":"https://github.com/dovakiin0","name":"Dovakiin0"},"license":"MIT","_id":"@dovakiin0/aniwatch@2.24.6","maintainers":[{"name":"dovakiin0","email":"subedibs@outlook.com"}],"homepage":"https://github.com/Dovakiin0/aniwatch#readme","bugs":{"url":"https://github.com/Dovakiin0/aniwatch/issues"},"dist":{"shasum":"47d4e87d74e401dcacaaf638a008efebdc957829","tarball":"https://registry.npmjs.org/@dovakiin0/aniwatch/-/aniwatch-2.24.6.tgz","fileCount":5,"integrity":"sha512-TEk0cKzbZy9BaH+TwS8+sfzXEWKYQNqeLVz6venVpy+ShEwD/ElHVkQoRKbDDyVE90pcYHm1yph70Z4XV/5n3A==","signatures":[{"sig":"MEUCIQD67Bx9ZbWQY7QwX0qFayLu1E6jULcEV77Is0FKQ01Z3QIgDcKoXq7uUhxySeOZtyElbMsCHzUTDvcdu/x78XR/Ubc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133102},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","gitHead":"a11fcd5838676e0aa83ead8265dc1166db07fc7f","scripts":{"ci":"tsc --noEmit && pnpm test && tsup","lint":"tsc","test":"vitest run --config vitest.config.ts","build":"tsup","format":"prettier --cache --write .","prepare":"node .husky/install.mjs","format:check":"prettier --cache --check ."},"_npmUser":{"name":"dovakiin0","email":"subedibs@outlook.com"},"repository":{"url":"git+https://github.com/Dovakiin0/aniwatch.git","type":"git"},"_npmVersion":"10.8.2","description":"📦 A scraper package serving anime information from hianimez.to","directories":{},"_nodeVersion":"20.17.0","dependencies":{"pino":"^9.6.0","axios":"^1.7.9","cheerio":"1.0.0","crypto-js":"^4.2.0","pino-pretty":"^13.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","husky":"^9.1.7","vitest":"^2.1.8","prettier":"^3.5.3","typescript":"^5.7.2","@types/node":"^22.10.3","@types/crypto-js":"^4.2.2"},"_npmOperationalInternal":{"tmp":"tmp/aniwatch_2.24.6_1773469952872_0.5867693590006156","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-custom":{"name":"@dovakiin0/aniwatch","version":"2.24.6-custom","keywords":["anime","hianime","aniwatch","hianimez.to","aniwatch.to","scraper","package"],"author":{"url":"https://github.com/dovakiin0","name":"Dovakiin0"},"license":"MIT","_id":"@dovakiin0/aniwatch@2.24.6-custom","maintainers":[{"name":"dovakiin0","email":"subedibs@outlook.com"}],"homepage":"https://github.com/Dovakiin0/aniwatch#readme","bugs":{"url":"https://github.com/Dovakiin0/aniwatch/issues"},"dist":{"shasum":"334cd9f7abf653a851c7231e0f9b4411f31dbddf","tarball":"https://registry.npmjs.org/@dovakiin0/aniwatch/-/aniwatch-2.24.6-custom.tgz","fileCount":5,"integrity":"sha512-xafVPL29kHsu6zFv+QB3uKN3QmGUx86LW5msSNSyoK5KWh4bpSSw+EL5MpPgMSK6P2a4R5Qnshxs4szskPBHMQ==","signatures":[{"sig":"MEUCIDt7gMSJ9lLaP0/wUpTjL+lMhcgjEyXnj2fe2l3XYPP5AiEA+Kl2UCy2Klt0/zcAXSgwstm8iZ1x1ZBMa1KGfIzrYQ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133109},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","gitHead":"a11fcd5838676e0aa83ead8265dc1166db07fc7f","scripts":{"ci":"tsc --noEmit && pnpm test && tsup","lint":"tsc","test":"vitest run --config vitest.config.ts","build":"tsup","format":"prettier --cache --write .","prepare":"node .husky/install.mjs","format:check":"prettier --cache --check ."},"_npmUser":{"name":"dovakiin0","email":"subedibs@outlook.com"},"repository":{"url":"git+https://github.com/Dovakiin0/aniwatch.git","type":"git"},"_npmVersion":"10.8.2","description":"📦 A scraper package serving anime information from hianimez.to","directories":{},"_nodeVersion":"20.17.0","dependencies":{"pino":"^9.6.0","axios":"^1.7.9","cheerio":"1.0.0","crypto-js":"^4.2.0","pino-pretty":"^13.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","husky":"^9.1.7","vitest":"^2.1.8","prettier":"^3.5.3","typescript":"^5.7.2","@types/node":"^22.10.3","@types/crypto-js":"^4.2.2"},"_npmOperationalInternal":{"tmp":"tmp/aniwatch_2.24.6-custom_1773470073769_0.22509270799003644","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-custom-1":{"name":"@dovakiin0/aniwatch","version":"2.24.6-custom-1","description":"📦 A scraper package serving anime information from hianimez.to","license":"MIT","main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","type":"module","scripts":{"lint":"tsc","build":"tsup","ci":"tsc --noEmit && pnpm test && tsup","test":"vitest run --config vitest.config.ts","prepare":"node .husky/install.mjs","format":"prettier --cache --write .","format:check":"prettier --cache --check ."},"author":{"name":"Dovakiin0","url":"https://github.com/dovakiin0"},"repository":{"type":"git","url":"git+https://github.com/Dovakiin0/aniwatch.git"},"bugs":{"url":"https://github.com/Dovakiin0/aniwatch/issues"},"homepage":"https://github.com/Dovakiin0/aniwatch#readme","keywords":["anime","hianime","aniwatch","hianimez.to","aniwatch.to","scraper","package"],"dependencies":{"axios":"^1.7.9","cheerio":"1.0.0","crypto-js":"^4.2.0","pino":"^9.6.0","pino-pretty":"^13.0.0"},"devDependencies":{"@types/crypto-js":"^4.2.2","@types/node":"^22.10.3","husky":"^9.1.7","prettier":"^3.5.3","tsup":"^8.3.5","typescript":"^5.7.2","vitest":"^2.1.8"},"_id":"@dovakiin0/aniwatch@2.24.6-custom-1","gitHead":"a11fcd5838676e0aa83ead8265dc1166db07fc7f","_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-fs36KVNWp4jwykpSjhBfAxPsuwYyK6l1zAOZwkv2jrFusTvHzLJBQx8wMN/kHQy2asa/tbGApYWH1ONBXReFXw==","shasum":"25ba3b93ba993c4bd50ef125291f980fe1caff8a","tarball":"https://registry.npmjs.org/@dovakiin0/aniwatch/-/aniwatch-2.24.6-custom-1.tgz","fileCount":5,"unpackedSize":133113,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDLzmRxYbejinQMQmLf4NBnz92BHZuLtzQTC0xpMeBMFAIhAIq+r59n3ONYqCjgh3aOBdKPmiE+zrUXl2/dMx3jtRCB"}]},"_npmUser":{"name":"dovakiin0","email":"subedibs@outlook.com"},"directories":{},"maintainers":[{"name":"dovakiin0","email":"subedibs@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aniwatch_2.24.6-custom-1_1773470790906_0.36761092362487324"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T06:32:32.795Z","modified":"2026-03-14T06:46:31.182Z","2.24.6":"2026-03-14T06:32:33.022Z","2.24.6-custom":"2026-03-14T06:34:33.919Z","2.24.6-custom-1":"2026-03-14T06:46:31.047Z"},"bugs":{"url":"https://github.com/Dovakiin0/aniwatch/issues"},"author":{"name":"Dovakiin0","url":"https://github.com/dovakiin0"},"license":"MIT","homepage":"https://github.com/Dovakiin0/aniwatch#readme","keywords":["anime","hianime","aniwatch","hianimez.to","aniwatch.to","scraper","package"],"repository":{"type":"git","url":"git+https://github.com/Dovakiin0/aniwatch.git"},"description":"📦 A scraper package serving anime information from hianimez.to","maintainers":[{"name":"dovakiin0","email":"subedibs@outlook.com"}],"readme":"<p align=\"center\">\n  <a href=\"https://github.com/ghoshRitesh12/aniwatch\">\n    <img \n      src=\"https://repository-images.githubusercontent.com/838366965/5c03381b-d162-4e71-8eef-0ac44c284411\" \n      alt=\"Logo\" \n      width=\"300\"\n      decoding=\"async\"\n      fetchpriority=\"high\"\n    />\n  </a>\n</p>\n\n# <p align=\"center\">Aniwatch</p>\n\n<div align=\"center\">\n  📦 A scraper package serving anime information from <a href=\"https://hianimez.to/home\" target=\"_blank\">hianimez.to</a>\n  <br/>\n  <strong>\n    <a \n      href=\"https://github.com/ghoshRitesh12/aniwatch/issues/new?assignees=ghoshRitesh12&labels=bug&template=bug-report.yml\"\n    > \n      Bug report\n    </a>\n    ·\n    <a \n      href=\"https://github.com/ghoshRitesh12/aniwatch/issues/new?assignees=ghoshRitesh12&labels=enhancement&template=feature-request.md\"\n    >\n      Feature request\n    </a>\n  </strong>\n</div>\n\n<br/>\n\n<div align=\"center\">\n\n[![Publish Package](https://github.com/ghoshRitesh12/aniwatch/actions/workflows/publish.yml/badge.svg)](https://github.com/ghoshRitesh12/aniwatch/actions/workflows/publish.yml)\n![NPM Downloads](https://img.shields.io/npm/dw/aniwatch?logo=npm&logoColor=e78284&label=Downloads&labelColor=292e34&color=31c754)\n[![GitHub License](https://img.shields.io/github/license/ghoshRitesh12/aniwatch?logo=github&logoColor=%23959da5&labelColor=%23292e34&color=%2331c754)](https://github.com/ghoshRitesh12/aniwatch/blob/main/LICENSE)\n\n<!-- ![npm bundle size](https://img.shields.io/bundlephobia/minzip/aniwatch?logo=npm&logoColor=e78284&label=MinZipped%20Size&labelColor=292e34&color=31c754) -->\n\n</div>\n\n<div align=\"center\">\n\n[![stars](https://img.shields.io/github/stars/ghoshRitesh12/aniwatch?style=social)](https://github.com/ghoshRitesh12/aniwatch/stargazers)\n[![forks](https://img.shields.io/github/forks/ghoshRitesh12/aniwatch?style=social)](https://github.com/ghoshRitesh12/aniwatch/network/members)\n[![issues](https://img.shields.io/github/issues/ghoshRitesh12/aniwatch?style=social&logo=github)](https://github.com/ghoshRitesh12/aniwatch/issues?q=is%3Aissue+is%3Aopen+)\n[![version](https://img.shields.io/github/v/release/ghoshRitesh12/aniwatch?display_name=release&style=social&logo=github)](https://github.com/ghoshRitesh12/aniwatch/releases/latest)\n\n</div>\n\n> [!IMPORTANT]\n>\n> 1. This package is just an unofficial package for [hianimez.to](https://hianimez.to) and is in no other way officially related to the same.\n> 2. The content that this package provides is not mine, nor is it hosted by me. These belong to their respective owners. This package just demonstrates how to build a package that scrapes websites and uses their content.\n\n## Table of Contents\n\n- [Quick Start](#quick-start)\n    - [Installation](#installation)\n    - [Example Usage](#example-usage)\n- [Documentation](#documentation)\n-   - [getHomePage](#gethomepage)\n    - [getAZList](#getazlist)\n    - [getQtipInfo](#getqtipinfo)\n    - [getAnimeAboutInfo](#getanimeaboutinfo)\n    - [getAnimeSearchResults](#getanimesearchresults)\n    - [getAnimeSearchSuggestion](#getanimesearchsuggestion)\n    - [getProducerAnimes](#getproduceranimes)\n    - [getGenreAnime](#getgenreanime)\n    - [getAnimeCategory](#getanimecategory)\n    - [getEstimatedSchedule](#getestimatedschedule)\n    - [getNextEpisodeSchedule](#getnextepisodeschedule)\n    - [getAnimeEpisodes](#getanimeepisodes)\n    - [getEpisodeServers](#getepisodeservers)\n    - [getAnimeEpisodeSources](#getanimeepisodesources)\n- [Development](#development)\n- [Thanks](#thanks)\n- [Support](#support)\n- [License](#license)\n- [Contributors](#contributors)\n- [Star History](#star-history)\n\n## Quick start\n\n### Installation\n\nTo use `aniwatch` package in your project, run:\n\n```bash\npnpm add aniwatch\n# or \"yarn add aniwatch\"\n# or \"npm install aniwatch\"\n```\n\n### Example usage\n\nExample - getting information about an anime by providing it's unique anime id, using anime [Steins;Gate](https://www.imdb.com/title/tt1910272/) with `steinsgate-3` unique anime id as an example.\n\n```javascript\nimport { HiAnime, HiAnimeError } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\ntry {\n    const data: HiAnime.ScrapedAnimeAboutInfo = await hianime.getInfo(\n        \"steinsgate-3\"\n    );\n    console.log(data);\n} catch (err) {\n    console.error(err instanceof HiAnimeError, err);\n}\n```\n\n<details>\n\n<summary>\n\n### `getHomePage`\n\n</summary>\n\n#### Sample Usage\n\n```typescript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getHomePage()\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  genres: [\"Action\", \"Cars\", \"Adventure\", ...],\n  latestEpisodeAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      type: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  spotlightAnimes: [\n    {\n      id: string,\n      name: string,\n      jname: string,\n      poster: string,\n      description: string,\n      rank: number,\n      otherInfo: string[],\n      episodes: {\n        sub: number,\n        dub: number,\n      },\n    },\n    {...},\n  ],\n  top10Animes: {\n    today: [\n      {\n        episodes: {\n          sub: number,\n          dub: number,\n        },\n        id: string,\n        name: string,\n        poster: string,\n        rank: number\n      },\n      {...},\n    ],\n    month: [...],\n    week: [...]\n  },\n  topAiringAnimes: [\n    {\n      id: string,\n      name: string,\n      jname: string,\n      poster: string,\n    },\n    {...},\n  ],\n  topUpcomingAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  trendingAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      rank: number,\n    },\n    {...},\n  ],\n  mostPopularAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      type: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  mostFavoriteAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      type: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  latestCompletedAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      type: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n}\n\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAZList`\n\n</summary>\n\n#### Parameters\n\n|  Parameter   |  Type  |                                             Description                                             | Required? | Default |\n| :----------: | :----: | :-------------------------------------------------------------------------------------------------: | :-------: | :-----: |\n| `sortOption` | string | The az-list sort option. Possible values include: \"all\", \"other\", \"0-9\" and all english alphabets . |    Yes    |   --    |\n|    `page`    | number |                                   The page number of the result.                                    |    No     |   `1`   |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getAZList(\"0-9\", 1)\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  sortOption: \"0-9\",\n  animes: [\n    {\n      id: string,\n      name: string,\n      jname: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number ,\n        dub: number\n      }\n    },\n    {...}\n  ],\n  totalPages: 1,\n  currentPage: 1,\n  hasNextPage: false\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getQtipInfo`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |             Description              | Required? | Default |\n| :-------: | :----: | :----------------------------------: | :-------: | :-----: |\n| `animeId` | string | The unique anime id (in kebab case). |    Yes    |   --    |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getQtipInfo(\"one-piece-100\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  anime: {\n    id: \"one-piece-100\",\n    name: \"One Piece\",\n    malscore: string,\n    quality: string,\n    episodes: {\n      sub: number,\n      dub: number\n    },\n    type: string,\n    description: string,\n    jname: string,\n    synonyms: string,\n    aired: string,\n    status: string,\n    genres: [\"Action\", \"Adventure\", \"Comedy\", \"Drama\", \"Fantasy\", \"Shounen\", \"Drama\", \"Fantasy\", \"Shounen\", \"Fantasy\", \"Shounen\", \"Shounen\", \"Super Power\"]\n  }\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeAboutInfo`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |             Description              | Required? | Default |\n| :-------: | :----: | :----------------------------------: | :-------: | :-----: |\n| `animeId` | string | The unique anime id (in kebab case). |    Yes    |   --    |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getInfo(\"steinsgate-3\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  anime: [\n    info: {\n      id: string,\n      name: string,\n      poster: string,\n      description: string,\n      stats: {\n        rating: string,\n        quality: string,\n        episodes: {\n          sub: number,\n          dub: number\n        },\n        type: string,\n        duration: string\n      },\n      promotionalVideos: [\n        {\n          title: string | undefined,\n          source: string | undefined,\n          thumbnail: string | undefined\n        },\n        {...},\n      ],\n      characterVoiceActor: [\n        {\n          character: {\n            id: string,\n            poster: string,\n            name: string,\n            cast: string\n          },\n          voiceActor: {\n            id: string,\n            poster: string,\n            name: string,\n            cast: string\n          }\n        },\n        {...},\n      ]\n    }\n    moreInfo: {\n      aired: string,\n      genres: [\"Action\", \"Mystery\", ...],\n      status: string,\n      studios: string,\n      duration: string\n      ...\n    }\n  ],\n  mostPopularAnimes: [\n    {\n      episodes: {\n        sub: number,\n        dub: number,\n      },\n      id: string,\n      jname: string,\n      name: string,\n      poster: string,\n      type: string\n    },\n    {...},\n  ],\n  recommendedAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  relatedAnimes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  seasons: [\n    {\n      id: string,\n      name: string,\n      title: string,\n      poster: string,\n      isCurrent: boolean\n    },\n    {...}\n  ]\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeSearchResults`\n\n</summary>\n\n#### Parameters\n\n|  Parameter   |  Type  |                            Description                            | Required? | Default |\n| :----------: | :----: | :---------------------------------------------------------------: | :-------: | :-----: |\n|     `q`      | string | The search query, i.e. the title of the item you are looking for. |    Yes    |   --    |\n|    `page`    | number |                  The page number of the result.                   |    No     |   `1`   |\n|    `type`    | string |                  Type of the anime. eg: `movie`                   |    No     |   --    |\n|   `status`   | string |            Status of the anime. eg: `finished-airing`             |    No     |   --    |\n|   `rated`    | string |             Rating of the anime. eg: `r+` or `pg-13`              |    No     |   --    |\n|   `score`    | string |           Score of the anime. eg: `good` or `very-good`           |    No     |   --    |\n|   `season`   | string |              Season of the aired anime. eg: `spring`              |    No     |   --    |\n|  `language`  | string |     Language category of the anime. eg: `sub` or `sub-&-dub`      |    No     |   --    |\n| `start_date` | string |       Start date of the anime(yyyy-mm-dd). eg: `2014-10-2`        |    No     |   --    |\n|  `end_date`  | string |        End date of the anime(yyyy-mm-dd). eg: `2010-12-4`         |    No     |   --    |\n|    `sort`    | string |      Order of sorting the anime result. eg: `recently-added`      |    No     |   --    |\n|   `genres`   | string |   Genre of the anime, separated by commas. eg: `isekai,shounen`   |    No     |   --    |\n\n> [!TIP]\n>\n> For both `start_date` and `end_date`, year must be mentioned. If you wanna omit date or month specify `0` instead. Eg: omitting date -> 2014-10-0, omitting month -> 2014-0-12, omitting both -> 2014-0-0\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .search(\"monster\", 1, {\n        genres: \"seinen,psychological\",\n    })\n    .then((data) => {\n        console.log(data);\n    })\n    .catch((err) => {\n        console.error(err);\n    });\n```\n\n#### Response Schema\n\n```javascript\n{\n  animes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  mostPopularAnimes: [\n    {\n      episodes: {\n        sub: number,\n        dub: number,\n      },\n      id: string,\n      jname: string,\n      name: string,\n      poster: string,\n      type: string\n    },\n    {...},\n  ],\n  currentPage: 1,\n  totalPages: 1,\n  hasNextPage: false,\n  searchQuery: string,\n  searchFilters: {\n    [filter_name]: [filter_value]\n    ...\n  }\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeSearchSuggestion`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |         Description          | Required? | Default |\n| :-------: | :----: | :--------------------------: | :-------: | :-----: |\n|    `q`    | string | The search suggestion query. |    Yes    |   --    |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .searchSuggestions(\"one piece\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  suggestions: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      jname: string,\n      moreInfo: [\"Mar 4, 2000\", \"Movie\", \"50m\"]\n    },\n    {...},\n  ],\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getProducerAnimes`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |                 Description                 | Required? | Default |\n| :-------: | :----: | :-----------------------------------------: | :-------: | :-----: |\n|  `name`   | string | The name of anime producer (in kebab case). |    Yes    |\n|  `page`   | number |       The page number of the result.        |    No     |   `1`   |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getProducerAnimes(\"toei-animation\", 2)\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  producerName: \"Toei Animation Anime\",\n  animes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  top10Animes: {\n    today: [\n      {\n        episodes: {\n          sub: number,\n          dub: number,\n        },\n        id: string,\n        name: string,\n        poster: string,\n        rank: number\n      },\n      {...},\n    ],\n    month: [...],\n    week: [...]\n  },\n  topAiringAnimes: [\n    {\n      episodes: {\n        sub: number,\n        dub: number,\n      },\n      id: string,\n      jname: string,\n      name: string,\n      poster: string,\n      type: string\n    },\n    {...},\n  ],\n  currentPage: 2,\n  totalPages: 11,\n  hasNextPage: true,\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getGenreAnime`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |               Description                | Required? | Default |\n| :-------: | :----: | :--------------------------------------: | :-------: | :-----: |\n|  `name`   | string | The name of anime genre (in kebab case). |    Yes    |   --    |\n|  `page`   | number |      The page number of the result.      |    No     |   `1`   |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getGenreAnime(\"shounen\", 2)\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  genreName: \"Shounen Anime\",\n  animes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  genres: [\"Action\", \"Cars\", \"Adventure\", ...],\n  topAiringAnimes: [\n    {\n      episodes: {\n        sub: number,\n        dub: number,\n      },\n      id: string,\n      jname: string,\n      name: string,\n      poster: string,\n      type: string\n    },\n    {...},\n  ],\n  currentPage: 2,\n  totalPages: 38,\n  hasNextPage: true\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeCategory`\n\n</summary>\n\n#### Parameters\n\n| Parameter  |  Type  |          Description           | Required? | Default |\n| :--------: | :----: | :----------------------------: | :-------: | :-----: |\n| `category` | string |     The category of anime.     |    Yes    |   --    |\n|   `page`   | number | The page number of the result. |    No     |   `1`   |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getCategoryAnime(\"subbed-anime\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n\n// categories ->\n// \"most-favorite\", \"most-popular\", \"subbed-anime\", \"dubbed-anime\",\n// \"recently-updated\", \"recently-added\", \"top-upcoming\", \"top-airing\",\n// \"movie\", \"special\", \"ova\", \"ona\", \"tv\", \"completed\"\n```\n\n#### Response Schema\n\n```javascript\n{\n  category: \"TV Series Anime\",\n  animes: [\n    {\n      id: string,\n      name: string,\n      poster: string,\n      duration: string,\n      type: string,\n      rating: string,\n      episodes: {\n        sub: number,\n        dub: number,\n      }\n    },\n    {...},\n  ],\n  genres: [\"Action\", \"Cars\", \"Adventure\", ...],\n  top10Animes: {\n    today: [\n      {\n        episodes: {\n          sub: number,\n          dub: number,\n        },\n        id: string,\n        name: string,\n        poster: string,\n        rank: number\n      },\n      {...},\n    ],\n    month: [...],\n    week: [...]\n  },\n  currentPage: 2,\n  totalPages: 100,\n  hasNextPage: true\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getEstimatedSchedule`\n\n</summary>\n\n#### Parameters\n\n|      Parameter      |  Type  |                             Description                              | Required? | Default |\n| :-----------------: | :----: | :------------------------------------------------------------------: | :-------: | :-----: |\n| `date (yyyy-mm-dd)` | string | The date of the desired schedule. (months & days must have 2 digits) |    Yes    |   --    |\n|     `tzOffset`      | number |      The timezone offset in minutes (defaults to -330 i.e. IST)      |    No     | `-330`  |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\nconst timezoneOffset = -330; // IST offset in minutes\n\nhianime\n    .getEstimatedSchedule(\"2025-06-09\", timezoneOffset)\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  scheduledAnimes: [\n    {\n      id: string,\n      time: string, // 24 hours format\n      name: string,\n      jname: string,\n      airingTimestamp: number,\n      secondsUntilAiring: number\n    },\n    {...}\n  ]\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n##\n\n<details>\n\n<summary>\n\n### `getNextEpisodeSchedule`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |             Description              | Required? | Default |\n| :-------: | :----: | :----------------------------------: | :-------: | :-----: |\n| `animeId` | string | The unique anime id (in kebab case). |    Yes    |   --    |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getNextEpisodeSchedule(\"one-piece-100\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  airingISOTimestamp: string | null,\n  airingTimestamp: number | null,\n  secondsUntilAiring: number | null\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeEpisodes`\n\n</summary>\n\n#### Parameters\n\n| Parameter |  Type  |     Description      | Required? | Default |\n| :-------: | :----: | :------------------: | :-------: | :-----: |\n| `animeId` | string | The unique anime id. |    Yes    |   --    |\n\n#### Sample Usage\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getEpisodes(\"steinsgate-3\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  totalEpisodes: 24,\n  episodes: [\n    {\n      number: 1,\n      isFiller: false,\n      title: \"Turning Point\",\n      episodeId: \"steinsgate-3?ep=213\"\n    },\n    {...}\n  ]\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getEpisodeServers`\n\n</summary>\n\n#### Parameters\n\n|  Parameter  |  Type  |      Description       | Required? | Default |\n| :---------: | :----: | :--------------------: | :-------: | :-----: |\n| `episodeId` | string | The unique episode id. |    Yes    |   --    |\n\n#### Request sample\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getEpisodeServers(\"steinsgate-0-92?ep=2055\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  episodeId: \"steinsgate-0-92?ep=2055\",\n  episodeNo: 5,\n  sub: [\n    {\n      serverId: 4,\n      serverName: \"vidstreaming\",\n    },\n    {...}\n  ],\n  dub: [\n    {\n      serverId: 1,\n      serverName: \"megacloud\",\n    },\n    {...}\n  ],\n  raw: [\n    {\n      serverId: 1,\n      serverName: \"megacloud\",\n    },\n    {...}\n  ],\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n<details>\n\n<summary>\n\n### `getAnimeEpisodeSources`\n\n</summary>\n\n#### Parameters\n\n| Parameter  |  Type  |                     Description                      | Required? |     Default      |\n| :--------: | :----: | :--------------------------------------------------: | :-------: | :--------------: |\n|    `id`    | string |                The id of the episode.                |    Yes    |        --        |\n|  `server`  | string |               The name of the server.                |    No     | `\"vidstreaming\"` |\n| `category` | string | The category of the episode ('sub', 'dub' or 'raw'). |    No     |     `\"sub\"`      |\n\n#### Request sample\n\n```javascript\nimport { HiAnime } from \"aniwatch\";\n\nconst hianime = new HiAnime.Scraper();\n\nhianime\n    .getEpisodeSources(\"steinsgate-3?ep=230\", \"hd-1\", \"sub\")\n    .then((data) => console.log(data))\n    .catch((err) => console.error(err));\n```\n\n#### Response Schema\n\n```javascript\n{\n  headers: {\n    Referer: string,\n    \"User-Agent\": string,\n    ...\n  },\n  sources: [\n    {\n      url: string, // .m3u8 hls streaming file\n      isM3U8: boolean,\n      quality?: string,\n    },\n    {...}\n  ],\n  subtitles: [\n    {\n      lang: \"English\",\n      url: string, // .vtt subtitle file\n      default: boolean,\n    },\n    {...}\n  ],\n  anilistID: number | null,\n  malID: number | null,\n}\n```\n\n[🔼 Back to Top](#table-of-contents)\n\n</details>\n\n## Development\n\nPull requests are always welcome. If you encounter any bug or want to add a new feature to this package, consider creating a new [issue](https://github.com/ghoshRitesh12/aniwatch/issues). If you wish to contribute to this project, read the [CONTRIBUTING.md](https://github.com/ghoshRitesh12/aniwatch/blob/main/CONTRIBUTING.md) file.\n\n## Contributors\n\nThanks to the following people for keeping this project alive and relevant.\n\n[![](https://contrib.rocks/image?repo=ghoshRitesh12/aniwatch)](https://github.com/ghoshRitesh12/aniwatch/graphs/contributors)\n\n## Thanks\n\n- [consumet.ts](https://github.com/consumet/consumet.ts)\n- [api.consumet.org](https://github.com/consumet/api.consumet.org)\n\n## Support\n\nDon't forget to leave a star 🌟. You can also follow me on X (Twitter) [@riteshgsh](https://x.com/riteshgsh).\n\n## License\n\nThis project is licensed under the [MIT License](https://opensource.org/license/mit/) - see the [LICENSE](https://github.com/ghoshRitesh12/aniwatch/blob/main/LICENSE) file for more details.\n\n<!-- <br/>\n-->\n\n## Star History\n\n<img\n  src=\"https://starchart.cc/ghoshRitesh12/aniwatch.svg?variant=adaptive\"\n  alt=\"\"\n/>\n","readmeFilename":"README.md"}