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.