AniWatchTV APIaniwatchtv.to ↗
Access AniWatchTV anime data via API: search, episode lists, streaming servers, genres, top charts, and more across 26 endpoints.
What is the AniWatchTV API?
The AniWatchTV API exposes 26 endpoints covering the full content catalog at aniwatchtv.to, from homepage spotlight and top-10 charts to per-episode streaming server resolution. The get_anime_detail endpoint returns metadata fields including type, studios, year, status, genre, scores, premiered, duration, quality, and view count, alongside a list of suggested similar titles. Streaming playback flows are supported through a three-step chain: episode list, server selection, and streaming link retrieval.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/86e505d0-4fb9-4264-8711-7a317091e2bb/get_home' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace aniwatchtv-to-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""AniWatch API — search anime, browse top charts, drill into episodes and streaming."""
from parse_apis.aniwatch_api import AniWatch, Period, AnimeNotFound
client = AniWatch()
# Browse today's Top 10 anime using the Period enum.
for ranked in client.rankedanimes.list_top10(period=Period.DAY, limit=5):
print(ranked.rank, ranked.title, ranked.poster)
# Search for anime by keyword, take the first result.
hit = client.animesummaries.search(keyword="one piece", limit=1).first()
if hit:
# Drill into full detail via .details()
detail = hit.details()
print(detail.title, detail.info.status, detail.info.genre)
# List episodes (capped at 3)
for ep in detail.episodes(limit=3):
print(ep.number, ep.title)
# Get recommendations from this anime
for rec in detail.recommendations.list(limit=3):
print(rec.title, rec.sub)
# Fetch a specific anime by slug and handle not-found error.
try:
show = client.animes.get(slug="naruto-eybxz")
print(show.title, show.description[:80])
except AnimeNotFound as exc:
print(f"Anime not found: {exc.slug}")
print("exercised: rankedanimes.list_top10 / animesummaries.search / details / episodes / recommendations.list / animes.get")
Get home page content including spotlight anime, top viewed charts (day/week/month), and recently updated anime listings.
No input parameters required.
{
"type": "object",
"fields": {
"spotlight": "array of featured anime with slug, title, description, poster",
"top_viewed": "object with day, week, month arrays of ranked anime",
"recently_updated": "array of recently updated anime items"
},
"sample": {
"data": {
"spotlight": [
{
"slug": "yona-of-the-dawn-6w06l",
"title": "Yona of the Dawn",
"poster": "https://s4.anilist.co/file/anilistcdn/media/anime/banner/20770-tZZMsglzAUAe.jpg",
"description": "Princess Yona lives a life of luxury..."
}
],
"top_viewed": {
"day": [
{
"rank": "1",
"slug": "yona-of-the-dawn-6w06l",
"title": "Yona of the Dawn",
"poster": "https://i2.wp.com/cdn.anipixcdn.co/thumbnail/eed5af6add95a9a6f1252739b1ad8c24.jpg?w=142&resize=100,142"
}
],
"week": [],
"month": []
},
"recently_updated": [
{
"id": "7317",
"dub": null,
"sub": "SUB",
"slug": "tales-of-herding-gods-sqxzr",
"title": "Tales of Herding Gods",
"poster": "https://cdn.anipixcdn.co/thumbnail/3cb7820f34d947f7c4c3531ed72254b0.jpg",
"episodes": "Ep 72"
}
]
},
"status": "success"
}
}About the AniWatchTV API
Browse and Search
The get_home endpoint returns three data structures in one call: a spotlight array of featured anime, a top_viewed object with day, week, and month sub-arrays, and a recently_updated listing. For targeted discovery, search_anime accepts a keyword string and an optional page integer, returning paginated items with per-anime slug, title, poster, and sub/dub availability flags. Dedicated category endpoints — get_movies, get_tv_series, get_ovas, get_onas, and get_specials — all follow the same paginated shape (page, items, total_pages), making uniform iteration straightforward.
Anime Detail and Episode Data
get_anime_detail takes a slug (e.g. naruto-eybxz, obtainable from any listing endpoint) and returns a rich info object covering type, studios, year, status, genre, scores, premiered, duration, quality, and views, plus a full description and a suggestions array. From the numeric id returned here, get_anime_episodes retrieves the full episode list for that title — each episode carries a token id, an episode number, and a title.
Streaming Resolution
Streaming follows a deliberate two-step handoff. get_episode_servers accepts an episode token from get_anime_episodes and returns a servers array where each entry includes a server token, a server_id, a type (sub or dub), and a display name. That server token is then passed to get_episode_streaming_links, which returns the link, type (e.g. iframe), server identifier, and arrays for tracks (subtitles) and sources. Server tokens may expire, so fresh tokens should be fetched from get_episode_servers immediately before calling the streaming links endpoint.
Charts, Genres, and Filters
get_top10 accepts a period parameter (day, week, or month) and returns a ranked list with rank, slug, title, and poster per entry. get_genre_anime filters by genre_slug, supporting values such as action, adventure, comedy, romance, fantasy, sci-fi, horror, and drama. Separate endpoints for get_subbed_anime, get_dubbed_anime, and get_most_popular allow filtering by audio type or popularity without combining with a keyword search.
The AniWatchTV API is a managed, monitored endpoint for aniwatchtv.to — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when aniwatchtv.to changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official aniwatchtv.to API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build an anime discovery app that surfaces spotlight titles and top-10 charts by day, week, or month using
get_homeandget_top10. - Create a genre-filtered anime browser using
get_genre_animewith slugs like action, romance, or sci-fi. - Aggregate anime metadata (studios, scores, status, duration) from
get_anime_detailinto a personal or community catalog. - Implement a sub/dub preference toggle by querying
get_subbed_animeandget_dubbed_animeseparately. - Resolve full episode playback by chaining
get_anime_episodes,get_episode_servers, andget_episode_streaming_linksfor a given anime. - Track recently updated anime by polling the
recently_updatedfield inget_homefor watchlist notification systems. - Populate a related-titles recommendation widget using the
suggestionsarray returned byget_anime_detail.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does AniWatchTV have an official developer API?+
How does the streaming link retrieval flow work, and do tokens expire?+
get_anime_episodes with a numeric anime_id to get episode tokens. Pass an episode token to get_episode_servers to retrieve server tokens with sub/dub type labels. Finally, pass a server token to get_episode_streaming_links to get the link, sources, and tracks arrays. Server tokens can expire, so you should fetch a fresh server token from get_episode_servers immediately before calling get_episode_streaming_links rather than caching it.What does `get_top10` return, and how does it differ from the top_viewed data in `get_home`?+
get_top10 accepts a period parameter (day, week, or month) and returns a dedicated ranked list with rank, slug, title, and poster per item. get_home also returns top_viewed with day/week/month sub-arrays, but in a combined home-page response alongside spotlight and recently_updated. Use get_top10 when you only need the chart data without the rest of the home page payload.