Manga API endpoint
Returns a manga by AniList id: titles, MyAnimeList id, scores, popularity, favourites, format, status, chapters, volumes, genres, ranked tags, dates, description, and images. 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).
/manga/title/{id}Path parameters:
id (required) — AniList manga id (numeric), e.g. 30002.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 page is unavailable (best-effort).Response includes id, id_mal, title, format, status, average_score, mean_score, popularity, favourites, chapters, volumes, start_date/end_date, genres, tags[], description, cover_image, banner_image, site_url.
With ?mal=true, data.mal is added, e.g. {"score":9.46,"max":10,"scored_by":320000,"url":"https://myanimelist.net/manga/2"}.
| Field | In the sample | Value in the sample |
|---|---|---|
| id | Has a value | |
| id_mal | Has a value | |
| type | Has a value | “MANGA” |
| title.romaji | Has a value | “Berserk” |
| title.english | Has a value | “Berserk” |
| title.native | Has a value | “ベルセルク” |
| format | Has a value | “MANGA” |
| status | Has a value | “RELEASING” |
| description | Has a value | 1,017 characters |
| start_date.year | Has a value | 1,989 |
| start_date.month | Has a value | 8 |
| start_date.day | Has a value | 25 |
| average_score | Has a value | 92 |
| mean_score | Has a value | 92 |
| popularity | Has a value | 246,987 |
| favourites | Has a value | 40,893 |
| trending | Has a value | 9 |
| genres | Has a value | 6 entries |
| tags | Has a value | 66 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 manga id | 30002 | |
| 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/manga/title/30002?mal=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": 30002,
"id_mal": 2,
"type": "MANGA",
"title": {
"romaji": "Berserk",
"native": "ベルセルク"
},
"format": "MANGA",
"status": "RELEASING",
"average_score": 92,
"favourites": 60000,
"genres": [
"Action",
"Adventure",
"Drama",
"Fantasy",
"Horror",
"Psychological"
],
"site_url": "https://anilist.co/manga/30002"
}
}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/manga/title/30002?mal=true" \
-H "x-api-key: $CRAWLORA_API_KEY"