Поиск аниме по жанру 16 и языку оригинала ja

В amodb нет отдельного эндпоинта для аниме. Аниме задается фильтром на GET /3/discover/tv и GET /3/discover/movie: with_genres=16 (анимация) плюс with_original_language=ja. Добавьте id ключевого слова anime, которое вы находите через GET /3/search/keyword, чтобы оставить только тайтлы с пометкой аниме.

Одно честное ограничение: японский не входит в 14 языков интерфейса, которые поддерживает amodb. Названия и описания приходят на запрошенном вами языке или на английском. Японское название остается в original_name для сериалов и в original_title для фильмов.

Что вы получаете:

  • Аниме-сериалы и аниме-фильмы с одними и теми же фильтрами discover.
  • Оригинальные японские названия рядом с локализованными.
  • Списки сезонов и серий для каждого выбранного сериала.
  • Постеры и фоны (backdrop) с https://img.amodb.dev/t/p/{size}/{file}.

Какие данные вы получаете

Что нужноВызов или полеПримечания
Аниме-сериалыGET /3/discover/tv с with_genres=16 и with_original_language=jaresults содержит name, original_name, first_air_date, genre_ids
Аниме-фильмыGET /3/discover/movie с теми же двумя фильтрамиtitle, original_title, release_date
Id ключевого слова animeGET /3/search/keyword?query=animeМассив results с id и name
Список серийGET /3/tv/{series_id}/season/{season_number}Один вызов на сезон
Японское названиеoriginal_name или original_titleОригинальное написание, как хранится
Постерposter_pathДобавьте к хосту изображений, ключ не нужен

Начало работы в 3 шага

  1. Выберите тариф на странице цены. Все данные доступны на каждом тарифе, различается только лимит: 20, 40 или 120 запросов в минуту.
  2. Создайте ключ в личном кабинете.
  3. Один раз найдите id ключевого слова, затем вызывайте discover с ним и двумя фильтрами.

Пример запроса

Скрипт на Python находит id ключевого слова anime, затем выводит самые популярные японские анимационные сериалы с этим ключевым словом. Вызов curl обходится без ключевого слова и показывает один сезон трансляции по окну дат.

bashpy
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"])

Сокращенный ответ для вызова на Python выше: 2 из 19 результатов на странице 1, массивы урезаны до 2 элементов.

JSON
{
  "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
}

Фильтры, формирующие список аниме

ФильтрЗначениеЭффект
with_genres16Анимация. Запятая означает логическое И, поэтому 16,35 дает анимацию и комедию.
without_genresid жанраИсключает тайтлы с этим жанром.
with_original_languagejaТолько японские оригиналы.
with_keywordsid ключевого словаТолько тайтлы с этим ключевым словом. Тайтлы без метки пропускаются.
first_air_date.gte, first_air_date.lteYYYY-MM-DDОкно трансляции для сериалов. Для фильмов используются primary_release_date.gte и .lte.
sort_bypopularity.desc, vote_average.desc, first_air_date.descПорядок. Сочетайте vote_average.desc с vote_count.gte, чтобы мелкие выборки не оказывались первыми.
pageот 1 до 500До 20 результатов на странице.

Разметка ключевыми словами неполная. Если список выглядит коротким, уберите with_keywords и оставьте фильтры по жанру и языку, чтобы охватить больше. Полный список фильтров есть на странице discover, а id ключевых слов описаны на странице ключевые слова.

Аниме-фильмы и длинные сериалы

Для фильмов действуют те же два фильтра на эндпоинте фильмов. Этот вызов выводит высоко оцененные японские анимационные фильмы, а vote_count.gte отсекает тайтлы с горсткой голосов.

curl
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"

У каждого результата есть title, original_title, release_date и poster_path. Длинные сериалы в каталоге часто разбиты на несколько сезонов. GET /3/tv/{series_id}/episode_groups перечисляет другие порядки серий с названиями и числом серий, где они известны, но сами группы amodb не отдает, а number_of_episodes у сериала дает общее число. Вызовы сезонов описаны на странице API сериалов.

Названия и языки

Для аниме оригинальное название важнее всего, поэтому храните оба поля.

ПолеЧто содержитПрименение
nameНазвание на запрошенном языкеОсновная подпись в вашем интерфейсе
original_nameНазвание на языке оригинала, японская письменность для японских оригиналовДополнительная подпись, полезна фанатам, которые знают японское название
original_languagejaФильтруйте на своей стороне, если смешиваете источники
overviewЛокализованный текст, пустой при отсутствии переводаПри пустом значении повторите запрос с language=en-US

GET /3/tv/{series_id}/alternative_titles перечисляет другие названия по странам, где они известны. 14 поддерживаемых языков перечислены на странице языки.

Сравнение

ВозможностьПарсинг фан-сайтовAPI базы только по анимеamodb
ОхватВсе, что покрывает сайтТолько аниме, глубину смотрите в документацииФильмы и сериалы в одном каталоге, аниме выбирается фильтрами
Выбор анимеКатегории сайтаСмотрите документациюЖанр 16, with_original_language=ja, ключевое слово anime
Название на языке оригиналаПо-разномуСмотрите документациюoriginal_name и original_title
Списки серийРазбор страницСмотрите документациюВызов сезона с массивом episodes
Японский язык интерфейсаЗависит от сайтаСмотрите документациюНе поддерживается, только оригинальные названия
Условия доступаУсловия каждого сайтаБесплатные и платные тарифы различаютсяПлатно, предоплата, без бесплатного тарифа

Цены

Список аниме собирается из нескольких вызовов discover, а результаты discover хранятся в edge-кэше 30 минут, поэтому 20 запросов в минуту хватает многим приложениям. Тарифы рассчитаны на 20, 40 или 120 запросов в минуту с одними и теми же данными. Оплатите 1, 3, 6, 12 или 24 месяца со скидкой 0, 10, 20, 30 и 40 процентов, автоматического продления нет. Бесплатного тарифа нет. Выберите тариф на странице цены.