Anime API endpoint
Returns an anime by AniList id: titles (romaji/english/native), MyAnimeList id, scores, popularity, favourites, format, status, season, episodes, duration, genres, ranked tags, studios, dates, description, images, and next-airing countdown. Pass mal=true to additionally enrich the response with the MyAnimeList community score (mal block: score on a 0-10 scale, plus scored-by count).
/anime/title/{id}Returns an anime by AniList id. AniList data (anilist.co).
Path parameters:
id (required) — AniList anime id (numeric), e.g. 154587.Query parameters:
mal (optional, default false) — when true/1, enrich the response with a mal block: the MyAnimeList community score. The mal block has score (0–10 scale, complementary to AniList's average_score which is 0–100), max, scored_by, and url. Omitted when the title has no MAL id or the score is unavailable (best-effort).Response includes id, id_mal (MyAnimeList cross-reference), title, format, status, average_score, mean_score, popularity, favourites, season, season_year, episodes, duration, start_date/end_date, genres, tags[] (name, rank, category), studios, description, cover_image, banner_image, site_url, and next_airing_episode when the anime is currently releasing.
With ?mal=true, data.mal is added, e.g. {"score":9.26,"max":10,"scored_by":911901,"url":"https://myanimelist.net/anime/52991"}.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| id_mal | Has a value | |
| type | Has a value | “ANIME” |
| title.romaji | Has a value | “Sousou no Frieren” |
| title.english | Has a value | “Frieren: Beyond Journey’s End” |
| title.native | Has a value | “葬送のフリーレン” |
| format | Has a value | “TV” |
| status | Has a value | “FINISHED” |
| description | Has a value | 592 characters |
| season | Has a value | “FALL” |
| season_year | Has a value | 2,023 |
| start_date.year | Has a value | 2,023 |
| start_date.month | Has a value | 9 |
| start_date.day | Has a value | 29 |
| end_date.year | Has a value | 2,024 |
| end_date.month | Has a value | 3 |
| end_date.day | Has a value | 22 |
| episodes | Has a value | 28 |
| duration | Has a value | 24 |
| average_score | Has a value | 91 |
| mean_score | Has a value | 91 |
| popularity | Has a value | 489,460 |
| favourites | Has a value | 56,297 |
| trending | Has a value | 46 |
| genres | Has a value | 3 entries |
| tags | Has a value | 28 entries |
| studios | Has a value | 7 entries |
| country_of_origin | Has a value | “JP” |
| cover_image | Has a value | s4.anilist.co |
| banner_image | Has a value | s4.anilist.co |
| site_url | Has a value | anilist.co |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id (path) | string | Yes | AniList anime id | 154587 | |
| mal | boolean | No | Enrich with the MyAnimeList community score (adds one fetch; omitted when the title has no MAL id) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/anime/title/154587?mal=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": 154587,
"id_mal": 52991,
"type": "ANIME",
"title": {
"romaji": "Sousou no Frieren",
"english": "Frieren: Beyond Journey's End",
"native": "葬送のフリーレン"
},
"format": "TV",
"status": "FINISHED",
"average_score": 91,
"mean_score": 91,
"popularity": 456965,
"favourites": 54038,
"season": "FALL",
"season_year": 2023,
"episodes": 28,
"duration": 24,
"genres": [
"Adventure",
"Drama",
"Fantasy"
],
"tags": [
{
"name": "Elf",
"rank": 91,
"category": "Cast-Main Cast"
}
],
"studios": [
"MADHOUSE"
],
"site_url": "https://anilist.co/anime/154587"
}
}Request schema
No body schema
Response schema
#/definitions/anime.mediaResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | anime.Media | No | ||||
| data.average_score | integer | No | 91 | Average user score on AniList, from 0 to 100. | ||
| data.banner_image | string | No | URL of the banner image. | |||
| data.chapters | integer | No | Number of chapters, for manga. | |||
| data.country_of_origin | string | No | JP | Two-letter code of the country the title comes from, for example `JP`. | ||
| data.cover_image | string | No | URL of the cover image. | |||
| data.description | string | No | Synopsis of the title. | |||
| data.duration | integer | No | 24 | Length of one episode in minutes. | ||
| data.end_date | object | No | Date the title finished airing or publishing. | |||
| data.end_date.day | integer | No | 29 | Day of the month. Omitted when AniList does not know it. | ||
| data.end_date.month | integer | No | 9 | Month of the date, 1 to 12. Omitted when AniList does not know it. | ||
| data.end_date.year | integer | No | 2023 | Year of the date. Omitted when AniList does not know it. | ||
| data.episodes | integer | No | 28 | Number of episodes. | ||
| data.favourites | integer | No | 54038 | Number of AniList users who marked the title as a favourite. | ||
| data.format | string | No | TV | Release format, for example `TV`, `MOVIE` or `OVA`. | ||
| data.genres | array | No | Adventure,Drama,Fantasy | Genres of the title. | ||
| data.id | integer | No | 154587 | AniList id of the title. | ||
| data.id_mal | integer | No | 52991 | MyAnimeList id of the same title. | ||
| data.is_adult | boolean | No | True when AniList marks the title as adult content. | |||
| data.mal | object | No | MyAnimeList community score. Present only when requested and the title has a MyAnimeList entry. | |||
| data.mal.max | integer | No | 10 | Highest possible score on MyAnimeList. | ||
| data.mal.score | number | No | 9.26 | MyAnimeList community score, on a 0 to 10 scale. | ||
| data.mal.scored_by | integer | No | 911901 | Number of MyAnimeList users who scored the title. | ||
| data.mal.url | string | No | Link to the title's page on MyAnimeList. | |||
| data.mean_score | integer | No | 91 | Mean user score on AniList, from 0 to 100. | ||
| data.next_airing_episode | object | No | Countdown to the next episode. Present only while the title is releasing. | |||
| data.next_airing_episode.airing_at | integer | No | 1704900600 | Time the next episode airs, in Unix seconds. | ||
| data.next_airing_episode.episode | integer | No | 13 | Episode number that airs next. | ||
| data.next_airing_episode.time_until_airing | integer | No | 259200 | Seconds until the next episode airs. | ||
| data.popularity | integer | No | 456965 | Number of AniList users who have the title in their lists. | ||
| data.season | string | No | FALL | Season the title aired in: `WINTER`, `SPRING`, `SUMMER` or `FALL`. | ||
| data.season_year | integer | No | 2023 | Year of the season the title aired in. | ||
| data.site_url | string | No | https://anilist.co/anime/154587 | Link to the title's page on AniList. | ||
| data.start_date | object | No | Date the title started airing or publishing. | |||
| data.start_date.day | integer | No | 29 | Day of the month. Omitted when AniList does not know it. | ||
| data.start_date.month | integer | No | 9 | Month of the date, 1 to 12. Omitted when AniList does not know it. | ||
| data.start_date.year | integer | No | 2023 | Year of the date. Omitted when AniList does not know it. | ||
| data.status | string | No | FINISHED | Release status, for example `FINISHED` or `RELEASING`. | ||
| data.studios | array | No | MADHOUSE | Names of the animation studios. | ||
| data.tags | array | No | Community tags of the title, each with a relevance rank. | |||
| data.tags[].category | string | No | Cast-Main Cast | Group the tag belongs to, for example `Cast-Main Cast`. | ||
| data.tags[].is_spoiler | boolean | No | True when the tag is a spoiler. | |||
| data.tags[].name | string | No | Elf | Tag name, for example `Elf`. | ||
| data.tags[].rank | integer | No | 91 | How strongly the tag applies to the title, from 0 to 100. | ||
| data.title | object | No | Title in romaji, English and native script. | |||
| data.title.english | string | No | Frieren: Beyond Journey's End | Official English title. | ||
| data.title.native | string | No | 葬送のフリーレン | Title in its original language and script. | ||
| data.title.romaji | string | No | Sousou no Frieren | Title in Latin script (romaji). | ||
| data.trending | integer | No | 120 | AniList trending score of the title. | ||
| data.type | string | No | ANIME | Kind of title: `ANIME` or `MANGA`. | ||
| data.volumes | integer | No | Number of volumes, for manga. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/anime/title/154587?mal=true" \
-H "x-api-key: $CRAWLORA_API_KEY"