Anime API with discover filters
amodb has no separate anime endpoint. List anime with /3/discover/tv or /3/discover/movie using genre 16 and with_original_language=ja, then narrow it with the anime keyword id from /3/search/keyword. Japanese is not a served interface language, but original_name keeps the Japanese title.
Find anime with genre 16 and original language ja
amodb has no separate anime endpoint. Anime is a filter on GET /3/discover/tv and GET /3/discover/movie: with_genres=16 (Animation) plus with_original_language=ja. Add the id of the anime keyword, which you look up with GET /3/search/keyword, to keep only titles tagged as anime.
One honest limit: Japanese is not one of the 14 interface languages amodb serves. Titles and overviews come back in the language you request, or in English. The Japanese title stays in original_name for series and original_title for movies.
What you get:
- Anime series and anime films from the same discover filters.
- Original Japanese titles next to the localized ones.
- Season and episode lists for every series you pick.
- Posters and backdrops from
https://img.amodb.dev/t/p/{size}/{file}.
What data you get
| You need | Call or field | Notes |
|---|---|---|
| Anime series | GET /3/discover/tv with with_genres=16 and with_original_language=ja | results carry name, original_name, first_air_date, genre_ids |
| Anime films | GET /3/discover/movie with the same two filters | title, original_title, release_date |
| The anime keyword id | GET /3/search/keyword?query=anime | results array of id and name |
| Episode list | GET /3/tv/{series_id}/season/{season_number} | One call per season |
| Japanese title | original_name or original_title | Original script, as stored |
| Poster | poster_path | Append to the image host, no key needed |
Start in 3 steps
- Pick a plan on pricing. All data is on every plan, only the rate differs: 20, 40 or 120 requests per minute.
- Create a key in your account dashboard.
- Look up the keyword id once, then call discover with it and the two filters.
Example request
The Python script finds the anime keyword id, then lists the most popular Japanese animated series tagged with it. The curl call below it skips the keyword and lists a single broadcast season by date window.
curl -s "https://api.amodb.dev/3/discover/tv?with_genres=16&with_original_language=ja&first_air_date.gte=2026-10-01&first_air_date.lte=2026-12-31&sort_by=popularity.desc" \
-H "Authorization: Bearer $AMODB_KEY"import os
import requests
BASE = "https://api.amodb.dev/3"
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['AMODB_KEY']}"
def get(path, **params):
r = session.get(BASE + path, params=params, timeout=10)
r.raise_for_status()
return r.json()
keywords = get("/search/keyword", query="anime")["results"]
anime_id = next((k["id"] for k in keywords if k["name"].lower() == "anime"), None)
if anime_id is None:
raise SystemExit("anime keyword not found")
page = get(
"/discover/tv",
with_genres=16,
with_original_language="ja",
with_keywords=anime_id,
sort_by="popularity.desc",
language="en-US",
page=1,
)
for show in page["results"]:
print(show.get("first_air_date"), show["name"], "/", show["original_name"])A trimmed reply for the Python call above: 2 of the 19 results on page 1, with arrays cut to 2 items.
{
"page": 1,
"results": [
{
"adult": false,
"backdrop_path": "/dmptwhmqxcMrCKgyvBlTt18PgDu.jpg",
"first_air_date": "2005-04-22",
"genre_ids": [
10759,
16
],
"id": 65733,
"name": "Doraemon",
"origin_country": [
"JP"
],
"original_language": "ja",
"original_name": "ドラえもん",
"overview": "Robotic cat Doraemon is sent back in time from the 22nd century to protect 10-year-old...",
"popularity": 301.2214,
"poster_path": "/9ZN1P32SHviL3SV51qLivxycvcx.jpg",
"vote_average": 8.089,
"vote_count": 252
},
{
"adult": false,
"backdrop_path": "/mFKys64gbDQrFqwUheGwXQwo2JK.jpg",
"first_air_date": "2004-10-05",
"genre_ids": [
10759,
16
],
"id": 30984,
"name": "Bleach",
"origin_country": [
"JP"
],
"original_language": "ja",
"original_name": "BLEACH",
"overview": "For as long as he can remember, Ichigo Kurosaki has been able to see ghosts. But when h...",
"popularity": 190.3257,
"poster_path": "/2EewmxXe72ogD0EaWM8gqa0ccIw.jpg",
"vote_average": 8.4,
"vote_count": 2295
}
],
"total_pages": 216,
"total_results": 4302
}Filters that shape an anime list
| Filter | Value | Effect |
|---|---|---|
with_genres | 16 | Animation. A comma means AND, so 16,35 is animation and comedy. |
without_genres | genre id | Drops titles that carry that genre. |
with_original_language | ja | Japanese originals only. |
with_keywords | keyword id | Only titles tagged with the keyword. Titles without the tag are missed. |
first_air_date.gte, first_air_date.lte | YYYY-MM-DD | A broadcast window for series. Movies use primary_release_date.gte and .lte. |
sort_by | popularity.desc, vote_average.desc, first_air_date.desc | Order. Pair vote_average.desc with vote_count.gte so tiny samples do not rank first. |
page | 1 to 500 | Up to 20 results per page. |
Keyword tagging is partial. If a list looks short, drop with_keywords and keep the genre and language filters for a wider net. The full filter list is on discover, and keyword ids are explained on keywords.
Anime films and long series
Films use the same two filters on the movie endpoint. This call lists well rated Japanese animated films, and vote_count.gte keeps out titles with a handful of votes.
curl -s "https://api.amodb.dev/3/discover/movie?with_genres=16&with_original_language=ja&sort_by=vote_average.desc&vote_count.gte=200" \
-H "Authorization: Bearer $AMODB_KEY"Each result has title, original_title, release_date and poster_path. Long running series are often split into several seasons in the catalog. GET /3/tv/{series_id}/episode_groups lists other orderings with their names and episode counts where they are known, but amodb does not serve the groups themselves, and number_of_episodes on the series gives the total. Season calls are described on TV show API.
Titles and languages
Anime is the case where the original title matters most, so keep both fields.
| Field | Holds | Use |
|---|---|---|
name | Title in the language you requested | Main label in your UI |
original_name | Title in the original language, Japanese script for Japanese originals | Secondary label, useful for fans who know the Japanese title |
original_language | ja | Filter on your side if you mix sources |
overview | Localized text, empty when no translation exists | Re-request with language=en-US when empty |
GET /3/tv/{series_id}/alternative_titles lists other titles by country where known. The 14 served languages are listed on languages.
How it compares
| Capability | Scrape fan sites | Anime-only database API | amodb |
|---|---|---|---|
| Scope | Whatever the site covers | Anime only, check the docs for depth | Movies and TV in one catalog, anime chosen by filters |
| Anime selection | Site categories | Check the docs | Genre 16, with_original_language=ja, anime keyword |
| Original-language title | Varies | Check the docs | original_name and original_title |
| Episode lists | Parsed from pages | Check the docs | Season call with an episodes array |
| Japanese interface language | Depends on the site | Check the docs | Not served, original titles only |
| Access terms | The terms of each site | Free and paid tiers vary | Paid, prepaid, no free tier |
Pricing
An anime list is a few discover calls, and discover results stay in the edge cache for 30 minutes, so 20 requests per minute is enough for many apps. Plans come as 20, 40 or 120 requests per minute with the same data. Pay for 1, 3, 6, 12 or 24 months, with 0, 10, 20, 30 and 40 percent off, and no automatic renewal. There is no free tier. Choose a plan on pricing.
Questions and answers
Does amodb have a dedicated anime endpoint?
No. Anime is a filter on the normal discover endpoints: with_genres=16 for Animation and with_original_language=ja for Japanese originals. Add the anime keyword id for a tighter list.
Can I get Japanese titles and overviews?
Japanese originals keep their Japanese title in original_name for series and original_title for movies. Japanese is not one of the 14 served interface languages, so name and overview follow your language tag or English.
How do I find the anime keyword id?
Call /3/search/keyword?query=anime and read the id of the result named anime. Pass it as with_keywords on discover. Store the id after the first lookup, because keyword searches are cached for 10 minutes only.
Does genre 16 return only anime?
No. Genre 16 is Animation, which also covers cartoons from other countries. Adding with_original_language=ja removes most of them, and the anime keyword narrows the list further.
How deep can I page an anime list?
Pages run from 1 to 500 with up to 20 results each, so one query reaches about 10,000 results. Split larger lists into first_air_date.gte and first_air_date.lte windows. Discover results are cached for 30 minutes.