Anbuanime API
A free anime streaming restful API serving anime from GogoAnime
Table of Contents
- [Routes](#routes)
- [Get Recent Episodes](#get-recent-episodes)
- [Get Popular Anime](#get-popular-anime)
- [Get Anime Search](#get-anime-search)
- [Get Anime Movies](#get-anime-movies)
- [Get Top Airing](#get-top-airing)
- [Get Anime Genres](#get-anime-genres)
- [Genres](#genres)
- [Get Anime Details](#get-anime-details)
- [Get Streaming URLs](#get-streaming-urls)
- [VIDCDN](#vidcdn)
- [StreamSB](#streamsb)
- [~~Fembed~~ (DEPRECATED)](#fembed-deprecated)
- [~~Get Download URLs~~ (DEPRECATED)](#get-download-urls-deprecated)
- [Download](#download)
- [Get Episode Thread](#get-episode-thread)
### Render
Host your own instance of the api on render using the button below.
[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/anbuinfosec/anbuanime)
### Get Recent Episodes
| Parameter | Description |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type` (int) | (optional) by default the type is 1. **type 1: japanese with subtitle. type 2: english dub with no subtitles. type 3: chinese with english subtitles.** Example: `GET /recent-release?type=2` |
| `page` (int) | **type 1 page limit: [1-331]. type 2: [1-139]. type 3: [1-22].** |
```js
fetch("https://anbuanime.onrender.com/recent-release")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"episodeId": "deep-insanity-the-lost-child-episode-9",
"animeTitle": "Deep Insanity: The Lost Child",
"episodeNum": "9",
"subOrDub": "SUB",
"animeImg": "https://cdnimg.xyz/cover/deep-insanity-the-lost-child.png",
"episodeUrl": "https://www1.AnbuAnime.cm//deep-insanity-the-lost-child-episode-9"
},
{...},
...
]
```
### Get Popular Anime
| Parameter | Description |
| ------------ | ------------------- |
| `page` (int) | page limit: [1-504] |
```js
fetch("https://anbuanime.onrender.com/popular")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"animeId": "boruto-naruto-next-generations",
"animeTitle": "Boruto: Naruto Next Generations",
"animeImg": "https://gogocdn.net/cover/boruto-naruto-next-generations.png",
"releasedDate": "2017",
"animeUrl": "https://www1.AnbuAnime.cm//category/boruto-naruto-next-generations"
},
{...},
...
]
```
### Get Anime Search
| Parameter | Description |
| --------------- | ------------------- |
| `keyw` (string) | anime title |
| `page` (int) | page limit may vary |
```js
fetch("https://anbuanime.onrender.com/search?keyw=naruto")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"animeId": "naruto",
"animeTitle": "Naruto",
"animeUrl": "https://www1.AnbuAnime.cm//category/naruto",
"animeImg": "https://gogocdn.net/images/anime/N/naruto.jpg",
"status": "Released: 2002"
},
{...},
...
]
```
### Get Anime Movies
| Parameter | Description |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `aph` (string) | (optional) by default the movie list is random. **values are from [A-Z]. And 0 is Ascending order with page limit of [1-89].** |
| `page` (int) | page limit may vary |
```js
fetch("https://anbuanime.onrender.com/anime-movies")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"animeId": "tenchi-muyou-manatsu-no-eve",
"animeTitle": "Tenchi Muyou! Manatsu no Eve",
"animeImg": "https://gogocdn.net/cover/tenchi-muyou-manatsu-no-eve.png",
"releasedDate": "1997",
"animeUrl": "https://www1.AnbuAnime.cm//category/tenchi-muyou-manatsu-no-eve"
},
{...},
...
]
```
### Get Top Airing
| Parameter | Description |
| ------------ | ----------------------------------------------------------------------------------------------------------- |
| `page` (int) | page limit [1-26]. ***-1** to fetch all the pages avaliable **Warning: Waiting time will be much longer.*** |
```js
fetch("https://anbuanime.onrender.com/top-airing")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"animeId": "sekai-saikou-no-ansatsusha-isekai-kizoku-ni-tensei-suru",
"animeTitle": "Sekai Saikou no Ansatsusha, Isekai Kizoku ni Tensei suru",
"animeImg": "https://cdnimg.xyz/cover/sekai-saikou-no-ansatsusha-isekai-kizoku-ni-tensei-suru.png",
"latestEp": "Episode 9",
"animeUrl": "https://www1.AnbuAnime.cm//category/sekai-saikou-no-ansatsusha-isekai-kizoku-ni-tensei-suru",
"genres": ["Action", "Drama", "Fantasy", "Mystery", "Romance"]
}
{...},
...
]
```
### Get Anime Genres
| Parameter | Description |
| ----------------- | ------------------------------------- |
| `:genre` (string) | [Genres are avaliable below](#genres) |
| `page` (int) | The page limit varies by genre. |
#### Genres
Genres list
| Genre |
| --------------- |
| `action` |
| `adventure` |
| `cars ` |
| `comedy` |
| `crime` |
| `dementia` |
| `demons` |
| `drama` |
| `dub` |
| `ecchi` |
| `family` |
| `fantasy` |
| `game` |
| `gourmet` |
| `harem` |
| `historical` |
| `horror` |
| `josei` |
| `kids` |
| `magic` |
| `martial-arts` |
| `mecha` |
| `military` |
| `Mmusic` |
| `mystery` |
| `parody` |
| `police` |
| `psychological` |
| `romance` |
| `samurai` |
| `school` |
| `sci-fi` |
| `seinen` |
| `shoujo` |
| `shoujo-ai` |
| `shounen` |
| `shounen-ai` |
| `slice-of-Life` |
| `space` |
| `sports` |
| `super-power` |
| `supernatural` |
| `suspense` |
| `thriller` |
| `vampire` |
| `yaoi` |
| `yuri` |
```js
fetch("https://anbuanime.onrender.com/genre/action")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
[
{
"animeId": "isekai-meikyuu-de-harem-wo",
"animeTitle": "Isekai Meikyuu de Harem wo",
"animeImg": "https://gogocdn.net/cover/isekai-meikyuu-de-harem-wo.png",
"releasedDate": "2022",
"animeUrl": "https://www1.AnbuAnime.cm//category/isekai-meikyuu-de-harem-wo"
},
{...},
...
```
### Get Anime Details
| Parameter | Description |
| -------------- | ------------------------------------------------------------------------------------ |
| `:id` (string) | **animeId can be found in every response body as can be seen in the above examples** |
```js
fetch("https://anbuanime.onrender.com/anime-details/naruto")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
{
"animeTitle": "Naruto",
"type": "TV Series",
"releasedDate": "2002",
"status": "Completed",
"genres": ["Action", "Comedy", "Martial Arts", "Shounen", "Super Power"],
"otherNames": "ナルト",
"synopsis": "...",
"animeImg": "https://gogocdn.net/images/anime/N/naruto.jpg",
"episodesAvaliable": "220",
"episodesList": [
{
"episodeId": "naruto-episode-220",
"episodeNum": "220",
"episodeUrl": "https://www1.AnbuAnime.cm//naruto-episode-220"
},
{...},
...
]
}
```
### Get Streaming URLs
You might need the referer url to bypass 403 (Forbidden) HTTP code.
| Parameter | Description |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `:id` (string) | episodeId. **To verify the id of each episode, look at the episodesList property in the [example above](#get-anime-details).** |
#### VIDCDN
```js
fetch("https://anbuanime.onrender.com/vidcdn/watch/naruto-episode-220")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
{
"headers": {
"Referer": "https://gogoplay.io/"
},
"data": [
{
"file": "https://vidstreamingcdn.com/cdn34/a96411258da4b8a75319906d0cc507f7/EP.18.v0.1644104042.360p.mp4?mac=7GmeilE5nn5L7xGZqxt4YNTnzQ53eEazGha0ZBD15WU%3D&vip=&expiry=1644122389382",
"label": "360 P",
"type": "mp4"
},
{
"file": "https://vidstreamingcdn.com/cdn34/a96411258da4b8a75319906d0cc507f7/EP.18.v0.1644104042.480p.mp4?mac=JBKmkO3IViHhGVSsXLekTDjhGICtfkmvXPuW7wEPGuw%3D&vip=&expiry=1644122389440",
"label": "480 P",
"type": "mp4"
},
...
]
}
```
#### StreamSB
```js
fetch("https://anbuanime.onrender.com/streamsb/watch/naruto-episode-220")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
{
"headers": {
"Referer": "https://sbplay2.xyz/e/84ob4f649y3j"
},
"data": [
{
"file": "https://delivery412.akamai-cdn-content.com/hls2/01/02251/84ob4f649y3j_,n,h,.urlset/master.m3u8?t=W6w3DBAuEd6Xc3cYAQiEy5rYqeqY84IBs1XeDkhdYxQ&s=1652035632&e=21600&f=11258098&srv=sto066"
},
{
"backup": "https://delivery412.akamai-cdn-content.com/hls2/01/02251/84ob4f649y3j_,n,h,.urlset/master.m3u8?t=W6w3DBAuEd6Xc3cYAQiEy5rYqeqY84IBs1XeDkhdYxQ&s=1652035632&e=21600&f=11258098&srv=sto066"
}
]
}
```
#### ~~Fembed~~ (DEPRECATED)
**Note: This is not available for all anime(s), so you might need to use another provider instead. VIDCDN and StreamSB are the most reliable**
```js
fetch("https://anbuanime.onrender.com/fembed/watch/spy-x-family-episode-5")
.then((response) => response.json())
.then((animelist) => console.log(animelist));
```
Output >>
```json
{
"headers": {
"Referer": "https://fembed-hd.com/v/nd27xs2gjrpjle8"
},
"data": [
{
"file": "https://fvs.io/redirector?token=aHp4NVZDV3FZcStXQlFsOFNFQ3VvQWhRNXlpVlFUNlNaZWFOTTVpb0FWZ3FKMEtRL25qTXQ1UCtqNi9DRENJTXA1dWFVSUJrRkNQMnVnd1FQcXBrYXR4T2F6U2ZZdXIrNkx2bEh5TjBjZEZmd3JQandURzJrMTIyQitjR3dyYTJYYkI4OXZXRVlqd2QwbkFhVVdLYzdHdkZJV2RYMHNTYjpua3lLQ2lrSGw4dXFob0I0WmtoYkxBPT01iA4",
"label": "480p",
"type": "mp4"
},
{
"file": "https://fvs.io/redirector?token=Tkc1dHYvcTI5bFFwekcyZjVoWXRsa2VSd1lwOEVtMGNXbStMdUxWWWZNcHJaK3FvazhQMWhKelFmTWNMZEZlQVhLbGt1d3dTMXZiNkQ5WEdjdlhaSEE5dFVyR2diQkgvcjhxcVdkb2haa3B2a2NZNDQ3eW9RZyttU0REVW1kbXMwdDhLQ0RkSFovellYcmxjZHdyVm54NkJtTm5ZRmlncjp0ODdVNG01dDVyeFZMKzBjZ2N6WWVnPT0eCGY",
"label": "720p",
"type": "mp4"
}
]
}
```
### ~~Get Download URLs~~ (DEPRECATED)
```js
fetch("https://anbuanime.onrender.com/download-links/spy-x-family-episode-9")
.then((response) => response.json())
.then((links) => console.log(links));
```
Output >>
```json
{
"headers": {
"Referer": "https://goload.pro/"
},
"sources": [
{
"quality": "360p",
"link": "https://cdn32.anicache.net/user1342/eb0fc5c2a93ecb60b19b4d5802b578b3/EP.9.v0.1654358471.360p.mp4?token=EVLs0upbYa_U4gWKhjpMXQ&expires=1654561056&id=187373"
},
{
"quality": "480p",
"link": "https://cdn32.anicache.net/user1342/eb0fc5c2a93ecb60b19b4d5802b578b3/EP.9.v0.1654358471.480p.mp4?token=Zp7sVEbb-JOYFBMEtJ_AzA&expires=1654561056&id=187373"
},
{
"quality": "720p",
"link": "https://cdn32.anicache.net/user1342/eb0fc5c2a93ecb60b19b4d5802b578b3/EP.9.v0.1654358471.720p.mp4?token=vyq9wSLYVq_u8sWtLd7vkA&expires=1654561056&id=187373"
},
{
"quality": "1080p",
"link": "https://cdn32.anicache.net/user1342/eb0fc5c2a93ecb60b19b4d5802b578b3/EP.9.v0.1654358471.1080p.mp4?token=2JKC_e7s5qc7fh1Yso94jA&expires=1654561056&id=187373"
}
]
}
```
you can use the headers.referer to bypass the 403 error and download the file.
Or you can use the [download route](#download) to download the file.
#### Download
**Make sure to add `downloadLink` header to the headers**, which should contain the link received from the response above.
```js
fetch("https://anbuanime.onrender.com/download", {
method: "GET",
headers: {
"downloadLink": "https://cdn34.anicache.net/user1342/eb0fc5c2a93ecb60b19b4d5802b578b3/EP.9.v0.1654358471.360p.mp4?token=-Dgjd_aQz6aIQKwY7hZyLQ&expires=1654562557&id=187373",
}
})
```
Then it will start downloading the file.
### Get Episode Thread
| Parameter | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `:episodeId` | episodeId. **To verify the id of each episode, look at the episodesList property in the [example above](#get-anime-details).** |
| `page` (optional) | page number. Default is 0. |
```js
fetch("https://anbuanime.onrender.com/thread/spy-x-family-episode-9?page=1")
.then((response) => response.json())
.then((thread) => console.log(thread));
```
Output >>
```json
{
"threadId": "9201260224",
"currentPage": "1",
"hasNextPage": true,
"comments": [
{
"editableUntil": "2022-06-11T15:50:14",
"dislikes": 0,
"thread": "9201260224",
"numReports": 0,
"likes": 75,
"message": "Like brother, like sister I guess. Neither of them could handle the kiss, but Yuri was the one to suffer for it. Poor guy looked like he needed a trip to the ER, lol
",
"id": "5878499824", // comment id
"createdAt": "2022-06-04T15:50:14",
"author": {
"username": "Judgment526",
"about": "",
"name": "Judgment526",
"disable3rdPartyTrackers": false,
"isPowerContributor": false,
"joinedAt": "2016-03-01T19:52:06",
"profileUrl": "https://disqus.com/by/Judgment526/",
"url": "https://myanimelist.net/profile/Judgment526",
"location": "",
"isPrivate": false,
"signedUrl": "https://disq.us/?url=https%3A%2F%2Fmyanimelist.net%2Fprofile%2FJudgment526&key=1_hPDEw0NPhrhEqk1en2nA",
"isPrimary": true,
"isAnonymous": false,
"id": "198796971",
"avatar": {
"permalink": "https://disqus.com/api/users/avatars/Judgment526.jpg",
"xlarge": {
"permalink": "https://disqus.com/api/users/avatars/Judgment526.jpg",
"cache": "https://c.disquscdn.com/uploads/users/19879/6971/avatar200.jpg?1649817631"
},
"cache": "https://c.disquscdn.com/uploads/users/19879/6971/avatar92.jpg?1649817631",
"large": {
"permalink": "https://disqus.com/api/users/avatars/Judgment526.jpg",
"cache": "https://c.disquscdn.com/uploads/users/19879/6971/avatar92.jpg?1649817631"
},
"small": {
"permalink": "https://disqus.com/api/users/avatars/Judgment526.jpg",
"cache": "https://c.disquscdn.com/uploads/users/19879/6971/avatar32.jpg?1649817631"
},
"isCustom": true
}
},
"media": [],
"isSpam": false,
"isDeletedByAuthor": false,
"isHighlighted": false,
"hasMore": false,
"parent": null,
"isApproved": true,
"isNewUserNeedsApproval": false,
"isDeleted": false,
"isFlagged": false,
"raw_message": "Like brother, like sister I guess. Neither of them could handle the kiss, but Yuri was the one to suffer for it. Poor guy looked like he needed a trip to the ER, lol",
"isAtFlagLimit": false,
"canVote": false,
"forum": "AnbuAnimetv",
"depth": 0, // comment depth. 0 means top level comment (root)
"points": 75,
"moderationLabels": [],
"isEdited": false,
"sb": false
},
{...},
]
}
```
The `id`, `parent` and `depth` keys on the comments list can be used to determine the comment structure in your app.
## Contributing
1. [Fork the repository](https://github.com/anbuinfosec/anbuanime)
2. Clone your fork to your local machine using the following command **(make sure to change `` to your GitHub username)**:
```sh
git clone https://github.com//AnbuAnime.git
```
3. Create a new branch: `git checkout -b ` (e.g. `git checkout -b my-new-branch`)
4. Make your changes.
5. Stage the changes: `git add .`
6. Commit the changes: `git commit -m "My commit message"`
7. Push the changes to GitHub: `git push origin ` (e.g. `git push origin my-new-branch`)
8. Open a pull request.
### ❤️ Thanks for stars and forks
[![Forkers repo roster for @anbuinfosec/anbuanime](https://reporoster.com/forks/dark/anbuinfosec/anbuanime)](https://github.com/anbuinfosec/anbuanime/network/members)
[![Stargazers repo roster for @anbuinfosec/anbuanime](https://reporoster.com/stars/dark/anbuinfosec/anbuanime)](https://github.com/anbuinfosec/anbuanime/stargazers)