Anime News Network
Anime News Network
encyclopedia records, keyed by ann_id.
ANN publishes no cross-reference to MyAnimeList and MAL publishes none to ANN, so an ANN id is
reachable only through
the map — and ann_id is the map's weakest side (~80%
agreement) precisely because most of its edges are inferred rather than declared. The one
first-party route in is AniDB's ann_id, on
/api/anidb/{id}.
ANN requires attribution. Any page that displays their encyclopedia details
must credit Anime News Network and link the entry — every /api/ann/{id} response
carries that link as url. See the callout at the foot of this page.
Routes
GET/api/ann/ids
Every ann_id animap has actually fetched, with its main title, ordered by
ann_id. Every id it returns resolves on /api/ann/{id}. An empty
dataset returns [], never null. title may be
null.
curl https://animap.id/api/ann/ids
[
{"ann_id": 1, "title": "Angel Links"},
{"ann_id": 2, "title": "Apocalypse Zero"},
{"ann_id": 4658, "title": "Jinki:Extend"}
]
GET/api/ann/{id}
The parsed record for one ann_id. 404 if that id not exist.
ANN's vote-based ratings are not in this projection — they change
constantly, so they are served only by /api/ann/{id}/raw.
curl https://animap.id/api/ann/1
{
"ann_id": 1,
"type": "TV",
"precision": "TV",
"title": "Angel Links",
"alternative_titles": ["Seihō Tenshi Angel Links", "星方天使エンジェルリンクス"],
"genres": ["action", "drama", "science fiction"],
"themes": ["pirates", "space"],
"plot_summary": "Li Meifon is the head of a free protection/security agency…",
"episodes": 13,
"running_time": "half hour",
"vintage": ["1999-04-07 to 1999-06-30"],
"start_year": 1999,
"objectionable_content": "TA",
"official_websites": ["http://www.sunrise-inc.co.jp/seihou/ANGEL-LINKS/story.html"],
"picture": "https://cdn.animenewsnetwork.com/thumbnails/max500x600/encyc/A1-51.jpg",
"url": "https://www.animenewsnetwork.com/encyclopedia/anime.php?id=1",
"absent": false,
"absent_at": null,
"related": {
"prev": [
{"ann_id": 2433, "relation": "adapted from", "is_anime": false, "title": null, "url": null}
],
"next": [
{"ann_id": 36, "relation": "sequel", "is_anime": true, "title": "Lady Blue",
"url": "https://www.animenewsnetwork.com/encyclopedia/anime.php?id=36"}
]
}
}
GET/api/ann/{id}/raw
The full Anime News Network encyclopedia record for this id, served
verbatim as stored — ANN's api.xml converted to JSON
(attributes become @-prefixed keys, text is #text, repeated
siblings become arrays). Much richer than the parsed record: this is where
ratings, cast, staff, credit,
episode, release and the related-prev /
related-next links live. 404 if the id is unknown or its payload
has not been fetched yet. There is no /api/ann/{id}/raw/xml — the XML is
converted at fetch time, so JSON is what we hold.
curl https://animap.id/api/ann/1/raw
{"anime": {
"@id": "1",
"@type": "TV",
"@precision": "TV",
"@name": "Angel Links",
"info": [
{"@type": "Main title", "#text": "Angel Links"},
{"@type": "Genres", "#text": "action"},
{"@type": "Picture", "@src": "https://cdn.animenewsnetwork.com/…/A1-51.jpg"}
],
"ratings": {"@nb_votes": "352", "@bayesian_score": "5.85776", "@weighted_score": "5.8028"},
"cast": [{"@lang": "JA", "role": "Li Meifon", "person": {"#text": "Yuko Miyamura"}}]
}}
Field reference — /api/ann/{id}
| Field | Type | Notes |
|---|---|---|
| ann_id | integer |
The Anime News Network encyclopedia id. Stable primary key. Unrelated to
anidb_id, mal_id and anilist_id.
|
| type | string · null |
TV, OAV, movie, ONA,
special or omnibus.
|
| precision | string · null |
ANN's disambiguation label — TV, TV 2,
movie series, meta, … — which separates entries
that share a title. Distinct from type.
|
| title | string · null | The ANN main title. |
| alternative_titles | array of string |
Other titles ANN lists (across languages). Empty
[] rather than null.
|
| genres themes |
array of string |
ANN's genre and theme tags (lowercase). Empty
[] rather than null.
|
| plot_summary | string · null | Plot summary, as written on ANN. null when ANN records none. |
| episodes | integer · null |
null when unknown, or when ANN writes a non-numeric count (a few
entries say e.g. 12 (+ 2 specials)). The raw text is in
/raw.
|
| running_time | string · null |
Free-form upstream text, not a number: half hour,
30 minutes. Parse it yourself if you need minutes.
|
| vintage | array of string |
Release dates/periods, free-form and multi-valued: a full date, a range
A to B, a bare year, or any of those with a parenthetical region.
Empty [] rather than null. See
start_year for a filterable year.
|
| start_year | integer · null |
Convenience: the leading 4-digit year of the first vintage.
null when it does not begin with a year. Not a substitute for
vintage.
|
| objectionable_content | string · null |
ANN's content code — TA, OC, AO,
AA, MA (upstream casing varies). null when
ANN records none.
|
| official_websites | array of string |
Official site URLs ANN lists. Empty [] rather than null.
|
| picture | string · null |
A full cover-art URL on
cdn.animenewsnetwork.com. Fetch it from there, not
through this API. null when ANN has no picture.
|
| url | string | The Anime News Network encyclopedia entry for this id (animenewsnetwork.com/encyclopedia/anime.php?id=<ann_id>). Always present. Keep it visible when you display the record — see the callout below. |
| absent | boolean |
true when ANN no longer serves this id. The record is kept and still
served — that is when this mirror is most useful. The flag clears if the entry
reappears.
|
| absent_at | string · null |
RFC 3339 timestamp of when the entry was first observed missing.
null whenever absent is false.
|
| related | object |
ANN's own relation edges for this entry, split by the element that carried them:
prev is <related-prev> (what this work came from),
next is <related-next> (what came from it). Both
are always present, empty [] rather than null.
|
| related[].relation | string |
How the target connects, verbatim as ANN labels it —
sequel, prequel, side story,
spinoff, part, compilation,
remake, adapted from, adaptation,
serialized and others. Not an enum: treat an unfamiliar value as
data, not an error.
|
| related[].is_anime | boolean |
Read this before following an edge. ANN keeps manga in the same
encyclopedia id space and the relation element carries no type, so an
ann_id here is not necessarily an anime — adapted from,
adaptation and serialized point outside it almost by
definition, and some targets are ids ANN has since retired.
false means /api/ann/{that id} will 404.
|
| related[].title | string · null |
The target's main title, saving a second request.
null whenever is_anime is false — we hold
no record to read it from.
|
| related[].url | string · null |
The target's encyclopedia entry, on the same terms as the top-level
url. null whenever is_anime is
false: the id resolves somewhere on ANN, but not under
anime.php.
|
Anime News Network requires attribution. ANN's
terms of use
ask that any page showing their encyclopedia details credit Anime News Network as the
source and link the relevant entry. Every
/api/ann/{id} response carries that link as url; if you display
ANN data, surface it. The vote-based ratings (in /raw) are a
snapshot from our last fetch, not a live figure.