Overview
This REST API provides search, browse, and detail endpoints for anime series, movies, episodes and related categories by scraping data from watchanimeworld.in.
Base URL
Production: ${BASE_URL}/anime
Errors
| Status | When | Body |
|---|---|---|
| 400 | Missing required parameter(s) | { "error": "Missing <param> parameter" } |
| 500 | Upstream page layout changed or request failed | { "error": "Failed to scrape data" } |
GET /search and /search/:page
Search for series and movies by name.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| query | query | string | true | Search text |
| page | path | integer | false | Page number (defaults to 1 when omitted) |
Response
200 OK
{
"totalPage": 12,
"currentPage": 1,
"data": [
{
"postId": "12345",
"id": "pokemon",
"title": "Pokemon",
"image": "https://.../poster.jpg",
"type": "series" | "movie"
}
]
}
curl "${BASE_URL}/anime/search?query=pokemon"
curl "${BASE_URL}/anime/search/2?query=pokemon"
fetch("${BASE_URL}/anime/search?query=pokemon").then(r => r.json())
GET /letter/:letter and /letter/:letter/:page
Search for series and movies by letter.
Parameters
Available letters: A to Z and "0-9" only.
Note: using digit is restricted as letter like 0 or 1 etc.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| letter | path | string | true | Letter |
| page | path | integer | false | Page number (defaults to 1 when omitted) |
Response
200 OK
{
"totalPage": 12,
"currentPage": 1,
"data": [
{
"postId": "1201",
"id": "a-condition-called-love",
"title": "A Condition Called Love",
"image": "https://image.tmdb.org/t/p/w500/e1ao8YAdgbN0wCUSatCESTPwaAh.jpg",
"type": "series"
}
]
}
curl "${BASE_URL}/anime/letter/A"
curl "${BASE_URL}/anime/letter/0-9"
curl "${BASE_URL}/anime/letter/A/2"
fetch("${BASE_URL}/anime/letter/A").then(r => r.json())
GET /category/:category and /category/:category/:page
Browse by category slug as used on the source site (e.g., action, comedy).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| category | path | string | true | Category slug |
| page | path | integer | false | Page number (default 1) |
| type | query | string | false | Filter by content type; commonly series or movies |
Available Categories
| ID | Example |
|---|---|
| anime | /category/anime |
| cartoon | /category/cartoon |
Response
{
"header": "Action",
"totalPage": 34,
"currentPage": 1,
"data": [
{
"postId": "45678",
"id": "one-piece",
"title": "One Piece",
"image": "https://.../image.jpg",
"type": "series"
}
]
}
curl "${BASE_URL}/anime/category/action?type=series"
curl "${BASE_URL}/anime/category/action/2?type=movies"
GET /franchise/:franchise and /franchise/:franchise/:page
Browse by franchise slug as used on the source site (e.g., naruto, pokemon).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| franchise | path | string | true | Franchise slug |
| page | path | integer | false | Page number (default 1) |
| type | query | string | false | Filter by content type; commonly series or movies |
Available Franchises
| ID | Example |
|---|---|
| naruto | /franchise/naruto |
| ben-10 | /franchise/ben-10 |
| pokemon | /franchise/pokemon |
| dragon-ball | /franchise/dragon-ball |
| shinchan | /franchise/shinchan |
| transformers | /franchise/transformers |
Response
{
"header": "Naruto",
"totalPage": 34,
"currentPage": 1,
"data": [
{
"postId": "45678",
"id": "naruto",
"title": "Naruto",
"image": "https://.../image.jpg",
"type": "series"
}
]
}
curl "${BASE_URL}/anime/franchise/pokemon?type=series"
curl "${BASE_URL}/anime/franchise/pokemon/2?type=movies"
GET /genre/:genre and /genre/:genre/:page
Browse by genre slug.
Genres list are not available on the source site, so search it by yourself from series or movies of the source site.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| genre | path | string | true | Genre slug |
| page | path | integer | false | Page number (default 1) |
| type | query | string | false | Filter by content type; commonly series or movies |
Response
{
"header": "Adventure",
"totalPage": 12,
"currentPage": 1,
"data": [ { "postId": "...", "id": "...", "title": "...", "image": "...", "type": "series|movie" } ]
}
curl "${BASE_URL}/anime/genre/adventure?type=series"
GET /network/:network and /network/:network/:page
Browse by network slug (as labeled on the source site).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| network | path | string | true | Network slug |
| page | path | integer | false | Page number (default 1) |
| type | query | string | false | Filter by content type |
Available Networks
| ID | OTT Platform |
|---|---|
| crunchyroll | Crunchyroll |
| disney | Disney+ |
| netflix | Netflix |
| prime-video | Prime Video |
| cartoon-network | Cartoon Network |
| sony-yay | Sony YAY |
| hungama-tv | Hungama |
Response
{ "header": "Network: ...", "totalPage": 1, "currentPage": 1, "data": [ /* items */ ] }
GET /language/:language and /language/:language/:page
Browse by language slug.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| language | path | string | true | Language slug |
| page | path | integer | false | Page number (default 1) |
| type | query | string | false | Filter by content type |
Available Languages
| ID | Language |
|---|---|
| english | English |
| japanese | Japanese |
| hindi | Hindi |
| tamil | Tamil |
| telugu | Telugu |
| malayalam | Malayalam |
| bengali | Bengali |
| kannada | Kannada |
Response
{ "header": "Language: ...", "totalPage": 1, "currentPage": 1, "data": [ /* items */ ] }
GET /type/:type and /type/:type/:page
List by top-level type. Typical values: series, movies.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| type | path | string | true | Top-level type |
| page | path | integer | false | Page number (default 1) |
Available Types
| ID | Type |
|---|---|
| series | Series |
| movies | Movies |
Response
Note: this endpoint returns pagination numbers as strings.
{
"totalPage": "15",
"currentPage": "1",
"data": [ { "postId": "...", "id": "...", "title": "...", "image": "...", "type": "series|movie" } ]
}
curl "${BASE_URL}/anime/type/series"
GET /series/:id
Fetch series details including seasons and episodes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Series slug (e.g., solo-leveling) |
Response
{
"postId": "12345",
"id": "solo-leveling",
"title": "Solo Leveling",
"image": "https://.../poster.jpg",
"cover": "https://.../cover.jpg",
"overview": "...",
"genres": ["Action", "Adventure"],
"languages": ["Japanese"],
"duration": "24m",
"year": "2002",
"network": "crunchyroll",
"recentEp": "2x13",
"seasons": [
{
"season": 1,
"episodes": [
{ "id": "solo-leveling-1x1", "episode": 1, "title": "...", "cover": "https://..." }
]
}
],
"recommendedSeries": [ { "id": "...", "title": "...", "year": "...", "image": "..." } ]
}
curl "${BASE_URL}/anime/series/solo-leveling"
GET /movies/:id
Fetch movie details.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Movie slug (e.g., spirited-away) |
Response
{
"postId": "67890",
"id": "spirited-away",
"title": "Spirited Away",
"image": "https://.../poster.jpg",
"cover": "https://.../cover.jpg",
"overview": "...",
"genres": ["Fantasy"],
"languages": ["Japanese"],
"duration": "125m",
"year": "2001",
"network": "netflix",
"streamLink": ["https://.../embed", "https://.../embed"],
"recommendedMovies": [ { "id": "...", "title": "...", "year": "...", "image": "..." } ]
}
curl "${BASE_URL}/anime/movies/spirited-away"
GET /episode/:id
Fetch episode playback info by slug.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | true | Episode slug (e.g., my-dress-up-darling-2x1) |
Response
Note: includes an iframe source URL for streaming and recommendations.
{
"id": "my-dress-up-darling-2x1",
"title": "...",
"cover": "https://.../cover.jpg",
"streamLink": ["https://.../embed", "https://.../embed"],
"seasons": [
{ "season": 2, "episodes": [ { "id": "...", "episode": 1, "title": "...", "cover": "..." } ] }
],
"recommendedSeries": [ { "id": "...", "title": "...", "year": "...", "image": "..." } ]
}
curl "${BASE_URL}/anime/episode/my-dress-up-darling-2x1"
GET /main and /main/:type
Fetch main page data.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| type | path | string | false | Type of data to fetch (e.g., newestDrop, mostWatchedSeries, mostWatchedMovies, newAnimeSeries, newAnimeMovies, newCartoonSeries, newCartoonMovies) |
Response with type
{
"newestDrop": [ { "id": "...", "title": "...", "image": "...", "type": "series|movie" } ],
"mostWatchedSeries": [ { "id": "...", "title": "...", "image": "...", "type": "series" } ],
"mostWatchedMovies": [ { "id": "...", "title": "...", "image": "...", "type": "movie" } ],
"newAnimeSeries": [ { "id": "...", "title": "...", "image": "...", "type": "series" } ],
"newAnimeMovies": [ { "id": "...", "title": "...", "image": "...", "type": "movie" } ],
"newCartoonSeries": [ { "id": "...", "title": "...", "image": "...", "type": "series" } ],
"newCartoonMovies": [ { "id": "...", "title": "...", "image": "...", "type": "movie" } ]
}
curl "${BASE_URL}/anime/main"
curl "${BASE_URL}/anime/main/newestDrop"
curl "${BASE_URL}/anime/main/mostWatchedSeries"
curl "${BASE_URL}/anime/main/mostWatchedMovies"
curl "${BASE_URL}/anime/main/newAnimeSeries"
curl "${BASE_URL}/anime/main/newAnimeMovies"
curl "${BASE_URL}/anime/main/newCartoonSeries"
curl "${BASE_URL}/anime/main/newCartoonMovies"
Examples: Minimal Client
async function searchAnime(q) {
const res = await fetch(`${BASE_URL}/anime/search?query=${encodeURIComponent(q)}`);
if (!res.ok) throw new Error("Request failed");
return res.json();
}
searchAnime("pokemon").then(console.log).catch(console.error);