D
anidubEN-DUB · TRACKER
HomeBrowseScheduleExtensionAPI
REST API · v1

Dub data for your app.

A simple JSON REST API. No auth needed for the first 100 requests per day. Batch up to 50 titles in one call.

BASE URL

https://api.anidub.dev

AUTHENTICATION

All endpoints work anonymously up to 100 requests per day (IP-based). For higher limits, include your API key in the X-Api-Key header.

Request
curl https://api.anidub.dev/v1/anime/21 \
  -H "X-Api-Key: your_key_here"

ENDPOINTS

GET/v1/anime/:anilist_id
200 OK

Returns full dub status for a single title by its AniList numeric ID.

PARAMETERS
anilist_idPATH
AniList numeric ID
languageQUERY
ISO 639-1 code. Default: "en"optional
ERROR RESPONSES
400INVALID_IDanilist_id is not a positive integer
404NOT_FOUNDNo title with that ID in the database
Request
curl "https://api.anidub.dev/v1/anime/21?language=en"
Response200 OK
{
  "animeId": "550e8400-e29b-41d4-a716-446655440000",
  "anilistId": 21,
  "anidubId": 10482,
  "malId": 21,
  "kitsuId": 12,
  "titleEnglish": "One Piece",
  "titleRomaji": "One Piece",
  "coverImage": "https://cdn.anilist.co/img/...",
  "dub": {
    "language": "en",
    "status": "dubbed",
    "confidence": 0.95,
    "lastVerifiedAt": "2024-12-01T00:00:00.000Z",
    "dubbedEpisodes": 1120
  }
}
GET/v1/anime/by-anidub/:anidub_id
200 OK

Returns full dub status for a single title by its anidub ID — the 5-digit number used in anidub.dev/anime/:id URLs.

PARAMETERS
anidub_idPATH
anidub public ID (10000–99999)
languageQUERY
ISO 639-1 code. Default: "en"optional
ERROR RESPONSES
400INVALID_IDanidub_id is not a valid 5-digit number (10000–99999)
404NOT_FOUNDNo title with that anidub ID in the database
Request
curl "https://api.anidub.dev/v1/anime/by-anidub/10482"
Response200 OK
{
  "animeId": "550e8400-e29b-41d4-a716-446655440000",
  "anilistId": 21,
  "anidubId": 10482,
  "malId": 21,
  "titleEnglish": "One Piece",
  "dub": {
    "language": "en",
    "status": "dubbed",
    "confidence": 0.95,
    "lastVerifiedAt": "2024-12-01T00:00:00.000Z",
    "dubbedEpisodes": 1120
  }
}
POST/v1/anime/lookup
200 OK

Batch lookup — resolve up to 50 AniList IDs in a single request.

PARAMETERS
idsBODY
Array of AniList IDs (1–50 items)
languageBODY
ISO 639-1 code. Default: "en"optional
ERROR RESPONSES
400BAD_REQUESTRequest body is not valid JSON
400VALIDATION_ERRORids is missing, empty, or exceeds 50 items
Request
curl https://api.anidub.dev/v1/anime/lookup \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"ids": [21, 11061, 1535]}'
Response200 OK
{
  "results": [
    {
      "anilistId": 21,
      "anidubId": 10482,
      "titleEnglish": "One Piece",
      "dub": { "language": "en", "status": "dubbed", "confidence": 0.95, "dubbedEpisodes": 1120 }
    }
  ],
  "notFound": [1535]
}
POST/v1/anime/lookup-mal
200 OK

Batch lookup by MyAnimeList ID — resolve up to 50 MAL IDs in a single request.

PARAMETERS
idsBODY
Array of MAL IDs (1–50 items)
languageBODY
ISO 639-1 code. Default: "en"optional
ERROR RESPONSES
400BAD_REQUESTRequest body is not valid JSON
400VALIDATION_ERRORids is missing, empty, or exceeds 50 items
Request
curl https://api.anidub.dev/v1/anime/lookup-mal \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"ids": [21, 11061]}'
Response200 OK
{
  "results": [
    {
      "anilistId": 21,
      "malId": 21,
      "anidubId": 10482,
      "titleEnglish": "One Piece",
      "dub": { "language": "en", "status": "dubbed", "confidence": 0.95 }
    }
  ],
  "notFound": []
}
GET/v1/anime/search
200 OK

Full-text search across English, romaji, native titles, and known aliases. Returns lightweight result cards with dub status.

PARAMETERS
qQUERY
Search query (min 2 characters)
limitQUERY
Max results (1–50). Default: 20optional
languageQUERY
Dub language filter. Default: "en"optional
ERROR RESPONSES
400VALIDATION_ERRORq is missing or shorter than 2 characters
Request
curl "https://api.anidub.dev/v1/anime/search?q=one%20piece&limit=10"
Response200 OK
{
  "query": "one piece",
  "results": [
    {
      "anilistId": 21,
      "anidubId": 10482,
      "malId": 21,
      "titleEnglish": "One Piece",
      "titleRomaji": "One Piece",
      "coverImage": "https://cdn.anilist.co/img/...",
      "format": "TV",
      "dubStatus": "dubbed",
      "dubConfidence": 0.95
    }
  ]
}
GET/v1/anime/browse
200 OK

Paginated browse with optional filters — genre, format, season year, season, and dub status.

PARAMETERS
genreQUERY
Genre name, e.g. "Action"optional
formatQUERY
Format, e.g. "TV", "MOVIE", "OVA"optional
yearQUERY
Season year, e.g. 2024optional
seasonQUERY
Season, e.g. "WINTER", "SPRING"optional
dubStatusQUERY
dubbed | in_production | announced | noneoptional
pageQUERY
Page number (24 results/page). Default: 1optional
languageQUERY
Dub language filter. Default: "en"optional
ERROR RESPONSES
400VALIDATION_ERRORInvalid year or dubStatus value
Request
curl "https://api.anidub.dev/v1/anime/browse?genre=Action&dubStatus=dubbed&page=1"
Response200 OK
{
  "results": [
    {
      "anilistId": 16498,
      "anidubId": 23841,
      "titleEnglish": "Attack on Titan",
      "format": "TV",
      "seasonYear": 2013,
      "genres": ["Action", "Drama"],
      "dubStatus": "dubbed",
      "dubConfidence": 0.95
    }
  ],
  "page": 1,
  "hasMore": true
}
GET/v1/anime/trending
200 OK

Most-searched titles over the past 7 days, ranked by search volume across the web app, extension, and API.

PARAMETERS
limitQUERY
Max results (1–50). Default: 10optional
languageQUERY
Dub language filter. Default: "en"optional
Request
curl "https://api.anidub.dev/v1/anime/trending?limit=7"
Response200 OK
{
  "period": "7d",
  "results": [
    {
      "anilistId": 21,
      "anidubId": 10482,
      "titleEnglish": "One Piece",
      "coverImage": "https://cdn.anilist.co/img/...",
      "dubStatus": "dubbed",
      "searchCount": 842
    }
  ]
}
GET/v1/health
200 OK

Health check. Returns service status, current API version, and timestamp.

Request
curl https://api.anidub.dev/v1/health
Response200 OK
{
  "status": "ok",
  "version": "0.1.0",
  "timestamp": "2024-12-01T12:00:00.000Z"
}

RESPONSE SCHEMA

DubStatusResponse
FIELDTYPEDESCRIPTION
FIELDDESCRIPTION
animeId(string)string
Internal database UUID
anilistId(number)number
AniList title ID
anidubId(number | null)number | null
anidub public ID (10000–99999), used in anidub.dev/anime/:id URLs
malId(number | null)number | null
MyAnimeList ID
kitsuId(number | null)number | null
Kitsu ID
titleEnglish(string | null)string | null
Official English title
titleRomaji(string | null)string | null
Romanized Japanese title
coverImage(string | null)string | null
Cover image URL (AniList CDN)
dub(DubInfo | null)DubInfo | null
null when no dub is tracked for the requested language
DubInfo
FIELDTYPEDESCRIPTION
FIELDDESCRIPTION
language(string)string
ISO 639-1 language code (e.g. "en")
status(DubStatus)DubStatus
One of the four status values — see below
confidence(number)number
Source confidence score, 0–1
lastVerifiedAt(string | null)string | null
ISO 8601 timestamp of last verification
dubbedEpisodes(number | null)number | null
Number of dubbed episodes available, when known
SearchResult
FIELDTYPEDESCRIPTION
FIELDDESCRIPTION
anilistId(number)number
AniList title ID
anidubId(number | null)number | null
anidub public ID
malId(number | null)number | null
MyAnimeList ID
titleEnglish(string | null)string | null
Official English title
titleRomaji(string | null)string | null
Romanized Japanese title
coverImage(string | null)string | null
Cover image URL
format(string | null)string | null
Media format (TV, MOVIE, OVA, etc.)
dubStatus(DubStatus | null)DubStatus | null
Resolved dub status for the requested language
dubConfidence(number)number
Source confidence score, 0–1

STATUS VALUES

dubbed
Full dub is available on streaming platforms
in_production
Studio confirmed; dubbing is actively in progress
announced
Dub is greenlit but recording has not started yet
none
No dub exists or has been confirmed

ERROR CODES

STATUSCODEDESCRIPTION
400
INVALID_IDPath param is not a valid ID (AniList or anidub)
400
BAD_REQUESTJSON body could not be parsed
400
VALIDATION_ERRORQuery or body schema failed — see error.message for detail
404
NOT_FOUNDAnime ID not present in the database
500
INTERNAL_ERRORUnexpected server error

All error responses share the shape: { error: string, code: string }

RATE LIMITS

TIERLIMITAPI KEYNOTES
Anonymous
Limit100 req / day
API KeyNone
NoteIP-based
Free key
Limit1,000 req / day
API KeyRequired
Noteanidub.dev/keys
Pro
Limit100,000 req / day
API KeyRequired
Note$5 / month
Scale
LimitUnlimited
API KeyRequired
NoteContact us
anidub

Built by two dub-watchers who got tired of refreshing reddit. Data aggregated from AniList, Crunchyroll, ANN, and AnimeNewsNetwork.

Product
HomeBrowse allScheduleAPI docsSubmit dubChangelog
Extension
ChromeFirefoxSafariEdgeSource
About
MethodologyStatus pageChangelogSettingsContactDiscord
© 2026 ANIDUB · NOT AFFILIATED WITH ANY STREAMING PLATFORMv0.4.0 · ALL SYSTEMS GREEN