AniDB

AniDB records, keyed by AniDB's own aid (anidb_id). The one upstream here whose original XML we keep as well as the JSON.

To go from an AniDB id to the other services, read a mal_ids entry off /api/anidb/{id} and hand it to /api/map/{mal_id}, or skip straight to the verified cross-reference with /api/map/anidb/{id}.

Want full and fresh AniDB XML dump? Got you there: https://static.animap.id/anidb_dump.zip

Routes

GET/api/anidb/schedule

Episodes for an ISO week, Monday through Sunday, grouped into seven days. Supply week=YYYY-Www, or omit it for the current week in UTC. This is the only parameter. Invalid weeks, empty or repeated parameters, and unknown parameters return 400. All seven dates must fit years 0001–9999.

curl 'https://animap.id/api/anidb/schedule?week=2026-W37'
curl 'https://animap.id/api/anidb/schedule'
{
  "period": {
    "week": "2026-W37",
    "start_date": "2026-09-07",
    "end_date": "2026-09-13"
  },
  "days": [
    {
      "date": "2026-09-07",
      "episodes": [
        {
          "anidb_id": 18188,
          "anidb_episode_id": 315386,
          "anime_title": "Azur Lane: Bisoku Zenshin! Ni!!",
          "episode_number": "10",
          "episode_type": "regular",
          "episode_title": "Let`s Enjoy Some Delicious Sweets.",
          "image_url": "https://cdn.anidb.net/images/main/327460.jpg",
          "adult_only": false
        }
      ]
    },
    {"date": "2026-09-08", "episodes": []},
    {"date": "2026-09-09", "episodes": []},
    {"date": "2026-09-10", "episodes": []},
    {"date": "2026-09-11", "episodes": []},
    {"date": "2026-09-12", "episodes": []},
    {"date": "2026-09-13", "episodes": []}
  ]
}

Example with one episode. Period dates are inclusive. Empty days contain [], and an empty week returns 200. Within each day, entries sort by anime title with nulls last, then anime ID and episode ID. All anime and episode types are included. adult_only is AniDB's adult/18+ flag; adult entries are included and clients can filter them locally.

Anime titles use the main title. Episode titles prefer English, then romaji, Japanese, then another available title. Episode numbers preserve prefixes such as S1; types are regular, special, credits, trailer, parody, or other. Missing optional metadata is null. Images are the anime's full picture.

Results use stored episode dates and metadata. Unknown dates are excluded, and no airing times or future episodes are estimated. Responses can differ from AniDB's website. Server caching defaults to 15 minutes and includes empty weeks; cached responses support gzip, ETags, and conditional 304. Client caching is 60 seconds.

GET/api/anidb/file

Find file, anime, episode, and group IDs, hashes, and available names by exactly one file hash: md5 or ed2k (32 hexadecimal characters), sha1 (40), or crc32 (8). Either letter case is accepted. Supply size in bytes with CRC32; size is optional for other hashes.

curl 'https://animap.id/api/anidb/file?md5=08fc1477e60066e99ca0df9e070b81cc'
curl 'https://animap.id/api/anidb/file?crc32=301940bd&size=169142272'
[
  {
    "anidb_file_id": 1,
    "anidb_id": 1,
    "anidb_episode_id": 1,
    "anidb_group_id": 1,
    "group_name": "Animehaven",
    "group_short_name": "AH",
    "size": 169142272,
    "length": 1505,
    "filetype": "avi",
    "md5": "08fc1477e60066e99ca0df9e070b81cc",
    "ed2k": "a62c68d5961e4c601fcf73624b003e9e",
    "sha1": "7f58cc6ed3e5ef02e5615bceba208aef3fb2d962",
    "crc32": "301940bd",
    "tth": "766406cd77dff4f58195677eabb8f6b8aa44f9b51f17a28c",
    "episode_number": "1",
    "anime_name": "Seikai no Monshou",
    "episode_name": "Invasion"
  }
]

Returns all distinct file/anime/episode matches, ordered by anime, episode, then file ID. anidb_file_id is AniDB's file ID (fid). Different files remain separate matches even for the same episode. A file can cover several episodes, including episodes of different anime. Invalid parameters return 400. No match, including before the first successful import, returns 404. Results come from the latest successfully imported dump; lookups never contact AniDB.

anidb_group_id is the file's release group ID (gid), repeated for every episode match. Zero or blank source values and group IDs not yet imported are null.

group_name and group_short_name come from the active GROUP record's name and shortname, matched by the file's group ID. They repeat for every episode match. Blank names and missing or removed groups produce null names while preserving the file match and its group ID.

size is the file size in bytes. length is the whole file's duration in seconds; zero or blank source values are null. filetype is the dump's file type string, such as mkv, mp4, or avi, with surrounding whitespace removed and blank values returned as null. Length and file type are null until imported. These fields repeat on every episode match; duration is not split by episode.

All five hashes are lowercase hexadecimal strings; TTH uses 48 characters. Missing hashes and names are null. Anime names use the dump's primary title, and episode names use the matching episode record. Episode numbers are strings: 1 for a regular episode, S1 for a special, C1 for credits, T1 for a trailer, P1 for a parody, and O1 for other episodes. Missing number/type information is null.

GET/api/anidb/ids

Every aid animap has actually fetched, with its main title, ordered by anidb_id. This is a subset of AniDB's full aid space and grows over time. Every id it returns resolves on /api/anidb/{id}. An empty dataset returns [], never null. title may be null.

curl https://animap.id/api/anidb/ids
[
  {"anidb_id": 1, "title": "Seikai no Monshou"},
  {"anidb_id": 2, "title": "Seikai no Senki"},
  {"anidb_id": 5, "title": "Cowboy Bebop: Tengoku no Tobira"}
]

GET/api/anidb/{id}

The parsed record for one aid. 404 if that aid has not been fetched. See the field reference below.

curl https://animap.id/api/anidb/1
{
  "anidb_id": 1,
  "title": "Seikai no Monshou",
  "title_english": "Crest of the Stars",
  "title_native": "星界の紋章",
  "synonyms": ["CotS", "Hvězdný erb"],
  "type": "TV Series",
  "restricted": false,
  "picture": "224210.jpg",
  "url": "http://www.sunrise-inc.co.jp/seikai/",
  "startdate": "1999-01-03",
  "startyear": 1999,
  "enddate": "1999-03-28",
  "episodecount": 13,
  "description": "In the future, mankind ...",
  "mal_ids": [290],
  "ann_ids": [14],
  "imdb_ids": ["tt0286390"],
  "tmdb_ids": [{"id": 26209, "type": "tv"}],
  "tags": [{"anidb_tag_id": 2626, "name": "future", "weight": 600}],
  "relatedanime": [{"anidb_id": 2, "type": "Sequel"}]
}

GET/api/anidb/{id}/raw

The AniDB HTTP-API response for this aid converted to JSON, served verbatim as stored. Richer and more deeply nested than the parsed record (attributes become @-prefixed keys). 404 if the aid is unknown or its payload has not been fetched yet.

curl https://animap.id/api/anidb/1/raw
{"anime": {
  "@id": "1",
  "@restricted": "false",
  "type": "TV Series",
  "episodecount": "13",
  "startdate": "1999-01-03",
  "enddate": "1999-03-28",
  "titles": {"title": [
    {"@xml:lang": "x-jat", "@type": "main", "#text": "Seikai no Monshou"}
  ]},
  "picture": "224210.jpg"
}}

GET/api/anidb/{id}/raw/xml

The original AniDB XML, served verbatim as application/xml. 404 if the aid is unknown or the XML has not been fetched yet. AniDB is the only service with this route — the other four are fetched as JSON, or converted to it before storage.

curl https://animap.id/api/anidb/1/raw/xml
<?xml version="1.0" encoding="UTF-8"?>
<anime id="1" restricted="false">
  <type>TV Series</type>
  <episodecount>13</episodecount>
  <startdate>1999-01-03</startdate>
  <enddate>1999-03-28</enddate>
  <titles>
    <title xml:lang="x-jat" type="main">Seikai no Monshou</title>
  </titles>
  <picture>224210.jpg</picture>
</anime>

Field reference — /api/anidb/{id}

Field Type Notes
anidb_id integer The AniDB aid. Stable primary key.
title string · null The AniDB main title (usually romaji / x-jat).
title_english string · null The official English title, when AniDB has one (null for most entries).
title_native string · null The official native (Japanese) title. Distinct from title, which is the romaji.
synonyms array of string Alternative/synonym titles across languages. Empty [] when none, never null.
type string · null e.g. TV Series, Movie, OVA, Web.
restricted boolean AniDB's adult / 18+ flag. true for restricted entries, else false.
picture string · null A bare cover-art filename, not a URL. Build the image URL yourself: https://cdn.anidb.net/images/main/<picture> (e.g. https://cdn.anidb.net/images/main/224210.jpg). null when the anime has no picture.
url string · null The anime's official website, when AniDB records one. null otherwise.
startdate string · null Full air-start date as YYYY-MM-DD. See the note on partial dates below.
startyear integer · null The air-start year on its own. Populated even when startdate is null.
enddate string · null Full air-end date as YYYY-MM-DD; same partial-date caveat as startdate.
episodecount integer · null Planned/known episode count. null when unknown.
description string · null The AniDB synopsis, kept verbatim including AniDB's own markup. null when absent.
mal_ids array The matching MyAnimeList ids from AniDB's cross-reference block — join one to /api/mal/{mal_id}, or to /api/map/{mal_id} for every other service at once. AniDB often groups a franchise's entries under a single record, so this can hold several. Empty [] when AniDB has no MAL link, never null. This is AniDB's raw assertion; for the verified, de-franchised cross-reference use /api/map/anidb/{id}.
ann_ids array The matching Anime News Network encyclopedia ids — join one to /api/ann/{ann_id}. Holds all ids for a franchise-grouped entry; empty [] when AniDB has no ANN link, never null.
imdb_ids array The matching IMDb title ids (tt-prefixed), from AniDB's cross-reference block — e.g. https://www.imdb.com/title/tt0388629/. Often more than one, as AniDB groups a franchise's films and specials under one entry. Empty [] when AniDB has no IMDb link, never null.
tmdb_ids array The matching TMDB (themoviedb.org) ids, each {"id": <int>, "type": "tv"|"movie"}. The type matters — TMDB's TV and movie id spaces are separate — and the pair maps directly onto its URLs: https://www.themoviedb.org/<type>/<id>. Empty [] when AniDB has no TMDB link, never null.
tags array AniDB tags, each {"anidb_tag_id": <int>, "name": "<tag>", "weight": <int|null>}, ordered by descending weight (relevance). Empty [] or null when there are none.
relatedanime array Related entries, each {"anidb_id": <int>, "type": "<relation>"} where the relation is AniDB's own (Sequel, Prequel, Side story, Parent story, …). Empty [] or null when there are no relations.

startdate vs. startyear. AniDB sometimes knows only a partial date — a bare year, or a year and month — for when a show aired. A partial date cannot be expressed as a real YYYY-MM-DD, so startdate (and enddate) collapse to null in those cases, while startyear keeps the year. So: prefer startdate for a precise date, but fall back to startyear when it is null. The same holds for enddate.