AnimeAPI (also known as aniApi) is a RESTful API that provides anime relation mapping across multiple anime databases. It mainly focuses on providing relations between anime titles from different databases.
This project is mainly derived on anime-offline-database by manami-project and arm by kawaiioverflow, while adding support for more databases.
Important
AnimeAPI in general is dual-licensed:
- Software Code (Server & Scrapers): MIT License
- Database & Data: ODbL v1.0 + DbCL v1.0
For full usage and attribution terms, see Licensing.
Click to expand
- Why use AnimeAPI?
- Licensing
- Limitation
- Featured on
- Supported Platforms and Aliases
- Statistic
- Usage
- Schema
- Acknowledgements
Compared to other relation mapping API, AnimeAPI provides more databases yet it's still easy to use. It also provides more data than other relation mapping API, such as the anime title itself.
Below is the comparison between AnimeAPI and other relation mapping API.
| Project | License | Access & Rate Limits | Formats | Title | Supported Platforms |
|---|---|---|---|---|---|
| AnimeAPI | MIT, ODbL, DbCL, CC0 | Public / No limits | REST, JSON, TSV | ✔ | (All 24+ platforms) |
| manami-project/anime-offline-database | ODbL, DbCL | Public Dump | JSON | ✔ | |
| kawaiioverflow/arm | MIT | Public / No limits | Node Package, REST, JSON | ❌ | |
| Fribb/anime-lists | Unknown | Public Dump | JSON | ❌ | |
| beeequeue/arm-server | AGPL-3.0 | Public / No limits | REST | ❌ | |
| Atelier-Shiori/Hato | Apache-2.0 | Paid (API Key) / No limits | REST | ❌ | |
| SIMKL | Proprietary | API Key / 1k reqs/day | REST | ✔ | Result-only: |
| Trakt | Proprietary | API Key / 1k reqs/5 mins | REST | ✔ | |
| Anime-Lists/anime-lists | Unknown | Public / No limits | XML, XLSX | ✔ | |
| rensetsu/db.trakt.extended-anitrakt | MIT | Public Dump | JSON | ✔ |
This project uses a dual-licensing structure to separate the database data from the software code:
The codebase (including the REST API server and scraper/generator scripts) is licensed under the MIT License (see LICENSE).
You are free to use, modify, and distribute this software for any purpose.
The generated relation mapping database (found in database/) is licensed under
the Open Database License (ODbL) v1.0 (see LICENSE-ODbL)
and the Database Contents License (DbCL) v1.0 (see LICENSE-DbCL).
In short, you must:
- Share-Alike: Under the ODbL, if you publicly use or distribute a modified version of this database, or another database derived from it, you must also release that database under the ODbL.
- Credits: If you use this database in your projects, you must attribute the source (AnimeAPI and Anime Offline Database).
The raw JSON files generated by the scrapers for Kaize, Nautiljon,
Otak-Otaku, and SilverYasha (found under database/raw/)
are dedicated to the public domain under the CC0-1.0 license (see
LICENSE-CC0). This allows you to build your own databases using
these specific raw relation mappings without database-license restrictions.
For a detailed list of these files, refer to database/raw/README.md.
Because AnimeAPI uses a flat, 1-to-1 mapping model (allowing only a single ID per provider per entry), it cannot natively represent 1-to-many or many-to-many relationships across different databases.
This leads to mapping discrepancies in several common scenarios:
- Specials, OVAs, and Movies: Side stories or prequel films may be cataloged as special episodes within a main entry on one platform (like AniDB or TVDB), but split into standalone entries on others. By default, AnimeAPI conforms to MyAnimeList's entry structure to achieve compatibility across different databases.
- Split-cours: Shows broadcast in two separate parts may be merged under one entry or split depending on the database's moderation policies.
Do you want to integrate AnimeAPI into your project? Or do you want to see how AnimeAPI is used in other projects and their use cases? Check out the list below!
Tip
If you want to add your project to this list, please open a pull request adding your project to the table below. Please make sure to add a short description of your project and a link to your project's homepage.
| Package Name | Language | Package Link | Description |
|---|---|---|---|
animeapi-py |
Python | pypi | A Python wrapper for AnimeAPI with type hinting and additional async support |
| Name | Language | Homepage | Description |
|---|---|---|---|
| animeManga-autoBackup | Powershell, Python | GitHub | A script that uses AnimeAPI to get info one of your anime/manga lists and save it to a file |
| Bokusu | Python | GitHub | Rewrite of animeManga-autoBackup in Python |
| Ryuuzaki Ryuusei | Python | GitHub | A Discord bot that uses AnimeAPI to fetch anime maps |
| TsukiHime | - | Webpage | Modern Anime Tracking & Releases |
AnimeAPI supported following sites for media lookup. You can use this as an alias cheatsheet as well.
Important
- The aliases are case-insensitive. You can use any of the aliases to get the data you want.
- 2K is the two-letter abbreviation for the platform.
So far, AnimeAPI has indexed data from 19 databases, with details as follows:
Last updated: 09 June 2026 21:37:32 UTC
| Platform | Count |
|---|---|
| aniDB | 14380 |
| AniList | 22370 |
| Anime News Network | 12260 |
| Anime-Planet | 26635 |
| aniSearch | 20684 |
| Annict | 12799 |
| Hikka | 28563 |
| IMDb | 7559 |
| Kaize | 24575 |
| Kitsu | 21896 |
| Letterboxd | 1874 |
| LiveChart | 12199 |
| MyAnimeList | 30514 |
| Nautiljon | 9231 |
| Notify.moe | 16965 |
| Otak Otaku | 3043 |
| Shikimori | 30514 |
| Shoboi/Syobocal | 5992 |
| Silver Yasha | 5288 |
| SIMKL | 14348 |
| The Movie Database | 8822 |
| The TVDB | 5345 |
| Trakt | 7253 |
| Total | 40123 |
To use this API, you can access the following base URLs:
-
Latest/v3:
GET https://animeapi.my.id
All requests must be GET, and response always will be in JSON format.
Important
This feature was added in Oct 29, 2025. Make sure your program/custom library supports this to avoid errors.
All API responses include the following custom headers:
| Header | Description | Example Value |
|---|---|---|
X-ANIMEAPI-VERSION |
Current API version | v3 |
X-ANIMEAPI-UPDATED |
Database last update timestamp (Unix epoch) | 1761714944 |
X-ANIMEAPI-SERVER-UPDATED |
API server code last update timestamp (Unix epoch, tracks changes to api/ folder) |
1761762026 |
These headers are useful for:
- Cache invalidation: Use
X-ANIMEAPI-UPDATEDto detect when the database has been updated - Version checking: Ensure your application is compatible with the current API version
- Server monitoring: Track when the API server code was last modified
Example:
GET /status HTTP/1.1
Host: animeapi.my.id
HTTP/1.1 200 OK
X-ANIMEAPI-VERSION: v3
X-ANIMEAPI-UPDATED: 1761714944
X-ANIMEAPI-SERVER-UPDATED: 1761762026
Content-Type: application/jsonMIME Type: application/json
GET /statusResponse example
{
"mainrepo": "https://github.com/nattadasu/animeApi/tree/v3",
"updated": {
"timestamp": 1781041052,
"iso": "2026-06-09T21:37:32.081247+00:00"
},
"contributors": [
"nattadasu",
"Copilot",
"github-actions[bot]"
],
"sources": [
"gh:kawaiioverflow/arm",
"gh:manami-project/anime-offline-database",
"gh:rensetsu/db.rensetsu.public-dump",
"gh:rensetsu/db.trakt.extended-anitrakt",
"gh:Fribb/anime-lists",
"https://kaize.io",
"https://nautiljon.com",
"https://otakotaku.com",
"https://livechart.me",
"https://shikimori.one"
],
"license": "MIT AND ODbL-1.0 AND DbCL-1.0 AND CC0-1.0",
"website": "https://animeapi.my.id",
"counts": {
"anidb": 14380,
"anilist": 22370,
"animenewsnetwork": 12260,
"animeplanet": 26635,
"anisearch": 20684,
"annict": 12799,
"hikka": 28563,
"imdb": 7559,
"kaize": 24575,
"kitsu": 21896,
"letterboxd": 1874,
"livechart": 12199,
"myanimelist": 30514,
"nautiljon": 9231,
"notify": 16965,
"otakotaku": 3043,
"shikimori": 30514,
"shoboi": 5992,
"silveryasha": 5288,
"simkl": 14348,
"themoviedb": 8822,
"thetvdb": 5345,
"trakt": 7253,
"total": 40123
},
"endpoints": {
"$comment": "The endpoints are stated in Python regex format. Platform aliases supported for direct lookup for platform specific endpoints (see ?P<alias> in regex).",
"anidb": "/(?P<alias>anidb)/(?P<media_id>\\d+)",
"anilist": "/(?P<alias>anilist)/(?P<media_id>\\d+)",
"animeapi_dump": "/(anime(?:a|A)pi|aa)(?:\\\\\\.json)?",
"animeapi_tsv": "/(anime(?:a|A)pi|aa).tsv",
"animenewsnetwork": "(?P<alias>animenewsnetwork)/(?P<media_id>\\d+)",
"animeplanet": "/(?P<alias>animeplanet)/(?P<media_id>[\\w\\-]+)",
"anisearch": "/(?P<alias>anisearch)/(?P<media_id>\\d+)",
"annict": "/(?P<alias>annict)/(?P<media_id>\\d+)",
"heartbeat": "/(heartbeat|ping)",
"hikka": "/(?P<alias>hikka)/(?P<media_id>\\d+)",
"imdb": "/(?P<alias>imdb)/(?P<media_id>tt[\\d]+)",
"kaize": "/(?P<alias>kaize)/(?P<media_id>[\\w\\-]+)",
"kitsu": "/(?P<alias>kitsu)/(?P<media_id>\\d+)",
"letterboxd": "/(?P<alias>letterboxd)/(?P<media_id>[\\w\\-]+)",
"livechart": "/(?P<alias>livechart)/(?P<media_id>\\d+)",
"myanimelist": "/(?P<alias>myanimelist)/(?P<media_id>\\d+)",
"nautiljon": "/(?P<alias>nautiljon)/(?P<media_id>[\\w\\+!\\-_\\(\\)\\[\\]]+)",
"notify": "/(?P<alias>notify)/(?P<media_id>[\\w\\-_]+)",
"otakotaku": "/(?P<alias>otakotaku)/(?P<media_id>\\d+)",
"redirect": "/(redirect|rd)",
"repo": "/",
"schema": "/schema(?:\\\\\\.json)?",
"shikimori": "/(?P<alias>shikimori)/(?P<media_id>\\d+)",
"shoboi": "/(?P<alias>shoboi)/(?P<media_id>\\d+)",
"silveryasha": "/(?P<alias>silveryasha)/(?P<media_id>\\d+)",
"simkl": "/(?P<alias>simkl)/(?P<media_id>\\d+)",
"status": "/status",
"syobocal": "/(?P<alias>syobocal)/(?P<media_id>\\d+)",
"themoviedb": "/(?P<alias>themoviedb)/(?P<media_type>movie|tv)/(?P<media_id>\\d+)(?:/seasons?/(?P<season_id>\\d+))?",
"thetvdb": "/(?P<alias>thetvdb)/series/(?P<media_id>\\d+)(?:/seasons?/(?P<season_id>\\d+))?",
"trakt": "/(?P<alias>trakt)/(?P<media_type>show|movie)(s)?/(?P<media_id>\\w\\-+)(?:/seasons?/(?P<season_id>\\d+))?",
"updated": "/updated"
}
}MIME Type: application/json
GET /heartbeatResponse example
{
"status": "OK",
"code": 200,
"response_time": "0.000s",
"request_time": "0.000s",
"request_epoch": 1626682566.0,
}MIME Type: text/plain
GET /updatedResponse example
Updated on 06/09/2026 21:37:32 UTCHTTP Status Code: 302 (redirect to GitHub raw file URL)
MIME Type: application/json
GET /animeApi.jsonor
GET /aa.jsonTip
Use this endpoint if you want to import the data to spreadsheet.
MIME Type: text/tab-separated-values
GET /animeApi.tsvor
GET /aa.tsvMIME Type: application/json
GET /:platform/:mediaid:platformcan be one of the following listed in Supported Platforms and Aliases.:mediaidis the ID of the anime in the platform.- To use
kitsu,simkl,shikimori,themoviedb, andtraktpath, please read additional information in # Provider exclusive rules before proceeding to avoid unwanted error.
Response example
GET https://animeapi.my.id/myanimelist/1{}kitsu IDs must be numerical. If your application only store the id as slug,
you can convert it to the numerical ID using the Kitsu API:
- Endpoint:
GET https://kitsu.app/api/edge/anime?filter[slug]=<SLUG> - Example:
GET https://kitsu.app/api/edge/anime?filter[slug]=cowboy-bebop - Parsing: The numerical ID is found at
data[0].idin the JSON response.
letterboxd supports multiple ID formats with priority-based lookup.
The API automatically tries these formats in order:
- Slug (
letterboxd_slug) — Primary format (e.g.,your-name) - Letter ID (
letterboxd_lid) — Fallback format (e.g.,cUqs), useful if you iterate from Letterboxd's official API directly. - Unique ID (
letterboxd_uid) — Alternative fallback (e.g.,307684), used internally by Letterboxd (not available/accessible publicly).
Supported endpoints:
GET https://animeapi.my.id/letterboxd/your-name # Slug lookup
GET https://animeapi.my.id/letterboxd/cUqs # Letter ID lookup
GET https://animeapi.my.id/letterboxd/307684 # Unique ID lookupNote
Also applicable to AnimeCountdown.
simkl ID is only applicable for media entries in the Anime category.
shikimori IDs are identical to myanimelist IDs.
If you encounter a 404 error:
- Remove any alphabetical prefix from the ID.
- Example: Convert
z218to218and retry the query.
For The Movie DB (TMDB), the path format requires the media type:
:provider/:mediatype/:mediaid (where :mediatype is either movie or tv).
For TV shows, you can also specify a season:
:provider/:mediatype/:mediaid/seasons/:seasonid (supports Trakt season index
or TMDB internal season ID).
Supported endpoints:
GET https://animeapi.my.id/themoviedb/tv/30991 # TV show
GET https://animeapi.my.id/themoviedb/movie/60669 # Movie
GET https://animeapi.my.id/themoviedb/tv/30991/seasons/1 # TV show with seasonFor The TVDB, the path format requires the series prefix:
:provider/series/:mediaid or :provider/series/:mediaid/seasons/:season_id.
When querying season data, you can use either the season number (trakt_season)
or the TVDB season ID (thetvdb_season_id). Season 1 entries can also be accessed
using the base series URL.
Supported endpoints:
GET https://animeapi.my.id/thetvdb/series/12345
GET https://animeapi.my.id/thetvdb/series/12345/seasons/2
GET https://animeapi.my.id/thetvdb/series/12345/seasons/789012For Trakt, the path format is :provider/:mediatype/:mediaid
(where :mediatype is either movies or shows). The :mediaid can be a
numeric ID or a slug.
Supported endpoints:
GET https://animeapi.my.id/trakt/movies/224301 # Numeric ID
GET https://animeapi.my.id/trakt/movies/your-name-2016 # Slug
GET https://animeapi.my.id/trakt/shows/152334/seasons/3 # With season (numeric)
GET https://animeapi.my.id/trakt/shows/cowboy-bebop/seasons/1 # With season (slug)The API will first attempt to parse :mediaid as a numeric ID. If that fails, it
will fall back to slug lookup using the trakt_slug field.
Note
While you can now use slugs directly, numeric IDs are still recommended for better compatibility. If you need to convert a slug to numeric ID externally, you can use the Trakt API:
GET https://api.trakt.tv/search/trakt/<ID>?type=<movie|show>Note: Trakt API requires an API key to access this endpoint.
To get exact season mapping, append /seasons/:season_inc to the end of the ID,
where :season_inc is the season number of the title in the provider.
Caution
/seasons/0 is invalid, and will return 400 status code.
Important
Since Oct 19, 2025, AnimeAPI now features a split cour flag, where
trakt_may_invalid indicates whether a season mapping may be unreliable:
none: The entry is either a special, or a moviefalse: Season found on Trakt and mapping is reliable.true: Season not found separately on Trakt (split cour). Season fields on Trakt, TMDB, and TVDB will benull.
MAL may list split cours as separate seasons while Trakt/TMDB combines them
into one continuous season. When true, episodes are likely in the previous
season on Trakt.
For more information, head to db.trakt.extended-anitrakt.
For example, to get the ID of Mairimashita Iruma-kun Season 3, you can use:
GET https://animeapi.my.id/trakt/shows/152334/seasons/3Response example from Trakt
{}HTTP Status Code: 302 OR 200 (if required)
MIME Type: None OR text/plain (if required)
GET /redirect?platform=:platform&mediaid=:mediaid&target=:platformor
GET /rd?from=:platform&id=:mediaid&to=:platform-
:platformcan be one of the following listed in Supported Platforms and Aliases.Additionally, on
target/toparameter, there are additional supported platforms, and can't be used as source/fromdue to some limitations:Platform 2K Aliases Additional Notes kurozorakrkrz,kurozora.appRequires Kurozora+ subscription and MAL ID myanilimymyani.liRequires MAL ID; a web app to manage list -
:mediaidis the ID of the anime in the platform. Please follow the instruction written in Provider exclusive rules to avoid any conflict during redirection.
In AnimeAPI, we use query parameters to specify the output of the API. The query parameters are as follows:
| Parameter | Aliases | Is Required | Description |
|---|---|---|---|
platform |
from, f |
Yes | The platform you want to get the data from. |
mediaid |
id, i |
Yes | The ID of the anime in the platform. |
target |
to, t |
No | The platform you want to redirect to. If you don't specify this parameter, the API will redirect to specified platform's homepage. |
israw |
raw, r |
No | As long as this parameter is present, the API will return the raw URL instead of redirecting. |
GET https://animeapi.my.id/redirect?platform=myanimelist&mediaid=1&target=trakt
HTTP/1.1 302 Found
Location: https://trakt.tv/shows/30857/seasons/1GET https://animeapi.my.id/rd?from=al&id=154587&to=shk
HTTP/1.1 302 Found
Location: https://shikimori.io/animes/52991There is no exclusive rule in this, as AnimeAPI will automatically understand your query
GET https://animeapi.my.id/redirect?platform=trakt&mediaid=shows/152334/seasons/3&target=myanimelist
HTTP/1.1 302 Found
Location: https://myanimelist.net/anime/49784GET https://animeapi.my.id/redirect?platform=animeplanet&mediaid=cells-at-work&target=simkl&israw
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
https://simkl.com/anime/757695If you want to validate the response from the API, you can use the following schema in JSON Schema, TypeScript, or Python Dataclass.
Add the following schema URI to your JSON file.
{ "$schema": "https://animeapi.my.id/schema.json" }Click to expand, if you want to see the content of the schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"anime": {
"$comment": "Interface: Anime",
"additionalProperties": false,
"dependencies": {
"themoviedb_type": {
"properties": {
"themoviedb_season_id": {
"type": "number"
}
},
"required": [
"themoviedb_season_id"
]
},
"trakt_type": {
"properties": {
"trakt_season": {
"type": "number"
}
},
"required": [
"trakt_season"
]
}
},
"description": "Schema for anime",
"properties": {
"anidb": {
"$ref": "#/definitions/numbernull",
"description": "aniDB ID, website: https://anidb.net/",
"title": "aniDB"
},
"anilist": {
"$ref": "#/definitions/numbernull",
"description": "AniList ID, website: https://anilist.co/",
"title": "AniList"
},
"animenewsnetwork": {
"$ref": "#/definitions/numbernull",
"description": "Anime News Network, website: https://animenewsnetwork.com",
"title": "Anime News Network"
},
"animeplanet": {
"$ref": "#/definitions/stringnull",
"description": "Anime-Planet slug, website: https://www.anime-planet.com/",
"pattern": "^[a-z0-9\\-]+$",
"title": "Anime-Planet"
},
"anisearch": {
"$ref": "#/definitions/numbernull",
"description": "AniSearch ID, website: https://www.anisearch.com/, https://anisearch.de, https://anisearch.it, https://anisearch.es, https://anisearch.fr, https://anisearch.jp",
"title": "AniSearch"
},
"annict": {
"$ref": "#/definitions/numbernull",
"description": "Annict ID, website: https://annict.com/, https://en.annict.com/, https://annict.jp/",
"title": "Annict"
},
"hikka": {
"$ref": "#/definitions/stringnull",
"description": "Hikka slug + hash, website: https://hikka.io/",
"title": "Hikka"
},
"imdb": {
"$ref": "#/definitions/stringnull",
"description": "IMDb ID, website: https://www.imdb.com/",
"pattern": "^tt[\\d]+$",
"title": "IMDb"
},
"kaize": {
"$ref": "#/definitions/stringnull",
"description": "Kaize slug, website: https://kaize.io/",
"pattern": "^[a-z0-9\\-]+$",
"title": "Kaize"
},
"kaize_id": {
"$ref": "#/definitions/numbernull",
"description": "Kaize ID in integer format, not recommended as some entry can't be found its ID compared to slug",
"title": "Kaize ID"
},
"kitsu": {
"$ref": "#/definitions/numbernull",
"description": "Kitsu ID in integer, slug not suppported, website: https://kitsu.app/",
"title": "Kitsu"
},
"letterboxd_slug": {
"$ref": "#/definitions/stringnull",
"description": "Letterboxd slug, website: https://letterboxd.com/",
"pattern": "^[a-z0-9\\-]+",
"title": "Letterboxd Slug"
},
"letterboxd_lid": {
"$ref": "#/definitions/stringnull",
"description": "Letterboxd Letter ID, only being used on 1st party API requests",
"title": "Letterboxd ID"
},
"letterboxd_uid": {
"$ref": "#/definitions/numbernull",
"description": "Letterboxd General ID, internally used",
"title": "Letterboxd General ID"
},
"livechart": {
"$ref": "#/definitions/numbernull",
"description": "LiveChart ID, website: https://www.livechart.me/",
"title": "LiveChart"
},
"myanimelist": {
"$ref": "#/definitions/numbernull",
"description": "MyAnimeList ID, website: https://myanimelist.net/",
"title": "MyAnimeList"
},
"nautiljon": {
"$ref": "#/definitions/stringnull",
"description": "Nautiljon slug, website: https://www.nautiljon.com/",
"pattern": "^[a-z0-9\\-]+",
"title": "Nautiljon"
},
"nautiljon_id": {
"$ref": "#/definitions/numbernull",
"description": "Nautiljon ID in integer format, not recommended as some entry can't be found its ID compared to slug",
"title": "Nautiljon ID"
},
"notify": {
"$ref": "#/definitions/stringnull",
"description": "Notify.moe slug, website: https://notify.moe/",
"pattern": "^[a-zA-Z0-9]+$",
"title": "Notify.moe"
},
"otakotaku": {
"$ref": "#/definitions/numbernull",
"description": "Otak Otaku ID, website: https://otakotaku.com/",
"title": "Otak Otaku"
},
"shikimori": {
"$ref": "#/definitions/numbernull",
"description": "Shikimori ID, website: https://shikimori.io/",
"title": "Shikimori"
},
"shoboi": {
"$ref": "#/definitions/numbernull",
"description": "Shoboi/Syobocal ID, website: http://cal.syoboi.jp/",
"title": "Shoboi/Syobocal"
},
"silveryasha": {
"$ref": "#/definitions/numbernull",
"description": "Silver Yasha ID, website: https://db.silveryasha.id/",
"title": "Silver Yasha"
},
"simkl": {
"$ref": "#/definitions/numbernull",
"description": "SIMKL ID, website: https://simkl.com/",
"title": "SIMKL"
},
"themoviedb": {
"$ref": "#/definitions/numbernull",
"description": "The Movie Database ID, can be used for movie or tv, website: https://www.themoviedb.org/",
"title": "The Movie Database"
},
"themoviedb_season_id": {
"$ref": "#/definitions/numbernull",
"description": "The Movie Database internal season ID, only available for TV shows",
"title": "The Movie Database season ID"
},
"themoviedb_type": {
"$ref": "#/definitions/stringnull",
"description": "The Movie Database media type, can be movie or tv",
"enum": [
"movie",
"tv"
],
"title": "The Movie Database type"
},
"thetvdb": {
"$ref": "#/definitions/numbernull",
"description": "The TVDB ID, website: https://thetvdb.com/, only to be prefixed with series/ to deep link",
"title": "The TVDB"
},
"thetvdb_season_id": {
"$ref": "#/definitions/numbernull",
"description": "The TVDB internal season ID, can be used to build URL",
"title": "The TVDB season ID"
},
"title": {
"type": "string",
"description": "Title of the anime in English or Romaji",
"title": "Title"
},
"trakt": {
"$ref": "#/definitions/numbernull",
"description": "Trakt ID, can be used for movie or show, website: https://trakt.tv/",
"title": "Trakt"
},
"trakt_may_invalid": {
"$ref": "#/definitions/booleannull",
"description": "Whether the entry is actually a split cour, which both Trakt and TMDB merge it into one",
"title": "Trakt May Invalid"
},
"trakt_season": {
"$ref": "#/definitions/numbernull",
"description": "Trakt season number, only available for shows",
"title": "Trakt season"
},
"trakt_season_id": {
"$ref": "#/definitions/numbernull",
"description": "Trakt season ID",
"title": "Trakt Season ID"
},
"trakt_slug": {
"$ref": "#/definitions/stringnull",
"description": "Trakt slug",
"pattern": "^[a-z0-9\\-]+",
"title": "Trakt Slug"
},
"trakt_type": {
"$ref": "#/definitions/stringnull",
"description": "Trakt media type, can be movie or show",
"enum": [
"movies",
"shows"
],
"title": "Trakt type"
}
},
"required": [
"title"
],
"title": "Anime",
"type": "object"
},
"numbernull": {
"type": [
"number",
"null"
]
},
"stringnull": {
"type": [
"string",
"null"
]
},
"booleannull": {
"type": [
"boolean",
"null"
]
}
},
"properties": {
"data": {
"items": {
"$ref": "#/definitions/anime"
},
"type": "array"
}
},
"title": "anime-api",
"type": "object"
}You can also read human-readable schema in JSON Schema if you want to create your own wrapper.
This project uses multiple sources to compile the data, including:
- gh:kawaiioverflow/arm
- gh:manami-project/anime-offline-database
- gh:rensetsu/db.trakt.extended-anitrakt, which an automatic parser of AniTrakt index page.
- gh:Fribb/anime-lists
- Hikka
- LiveChart
- Nautiljon
- Notify.moe through Rensetsu's data dump
- Kaize
- Otak Otaku
- Shikimori
- Silver-Yasha