API

Watch Anime World API

v1

Overview

This REST API provides search, browse, and detail endpoints for anime series, movies, episodes and related categories by scraping data from watchanimeworld.in.

The API is read-only, requires no authentication, and returns JSON.

Base URL

Production: ${BASE_URL}/anime

Visit watchanimeworld.in for categories, genres, networks, languages, and types.

Errors

StatusWhenBody
400 Missing required parameter(s) { "error": "Missing <param> parameter" }
500 Upstream page layout changed or request failed { "error": "Failed to scrape data" }

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.

NameInTypeRequiredDescription
letterpathstringtrueLetter
pagepathintegerfalsePage 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

NameInTypeRequiredDescription
categorypathstringtrueCategory slug
pagepathintegerfalsePage number (default 1)
typequerystringfalseFilter by content type; commonly series or movies

Available Categories

IDExample
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

NameInTypeRequiredDescription
franchisepathstringtrueFranchise slug
pagepathintegerfalsePage number (default 1)
typequerystringfalseFilter by content type; commonly series or movies

Available Franchises

IDExample
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

NameInTypeRequiredDescription
genrepathstringtrueGenre slug
pagepathintegerfalsePage number (default 1)
typequerystringfalseFilter 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

NameInTypeRequiredDescription
networkpathstringtrueNetwork slug
pagepathintegerfalsePage number (default 1)
typequerystringfalseFilter by content type

Available Networks

IDOTT Platform
crunchyrollCrunchyroll
disneyDisney+
netflixNetflix
prime-videoPrime Video
cartoon-networkCartoon Network
sony-yaySony YAY
hungama-tvHungama

Response

{ "header": "Network: ...", "totalPage": 1, "currentPage": 1, "data": [ /* items */ ] }

GET /language/:language and /language/:language/:page

Browse by language slug.

Parameters

NameInTypeRequiredDescription
languagepathstringtrueLanguage slug
pagepathintegerfalsePage number (default 1)
typequerystringfalseFilter by content type

Available Languages

IDLanguage
englishEnglish
japaneseJapanese
hindiHindi
tamilTamil
teluguTelugu
malayalamMalayalam
bengaliBengali
kannadaKannada

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

NameInTypeRequiredDescription
typepathstringtrueTop-level type
pagepathintegerfalsePage number (default 1)

Available Types

IDType
seriesSeries
moviesMovies

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

NameInTypeRequiredDescription
idpathstringtrueSeries 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

NameInTypeRequiredDescription
idpathstringtrueMovie 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

NameInTypeRequiredDescription
idpathstringtrueEpisode 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

NameInTypeRequiredDescription
typepathstringfalseType 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);