datagrit

datagrit › Data › Bilibili Anime Catalog, Rankings & Calendar

Data

Bilibili Anime Catalog, Rankings & Calendar

Bilibili anime, Chinese animation, film, documentary and TV series: filterable catalog, Top 100 rankings, release calendar and season details with ratings and follower counts.

Run it on Apify StoreUse the APIfrom $3.50 per 1,000 results + $10 per run · no code needed
from $3.50 per 1,000 results + $10 per runpay only for results you get
JSON · CSV · Excelexport or call via API
Scheduled runsdaily or weekly feeds with Apify schedules
v0.1updated 2026-10-05

Bilibili Anime Catalog, Rankings & Calendar reads the licensed-series section of Bilibili (anime, Chinese animation "guochuang", films, documentaries and TV) and returns one clean row per series, ranking entry or episode release. You get play, follower, danmaku (comment), coin, like and share counts, the rating with its vote count, production regions, release status and paid-membership flag. No login and no cookies are needed. Use it for anime market research, licensing and streaming analysis, fan-community trackers and AI agents that need to know what is popular on Bilibili right now.

Why use this Actor?

What is different here?

Most Bilibili scrapers collect videos, comments or creator profiles. This one covers the series layer: Top 100 rankings, a filterable catalog of every licensed title, the release calendar and season details with the real rating count. Filters are applied by Bilibili itself, so every row really matches the filters you set; a combination that Bilibili does not offer for a content type is skipped with a log line instead of being silently ignored. Every row says how it was sorted (sortedBy) and which filters matched (matchedFilters).

Sample output

recordTypetitleseasonIdratingScoreratingCountfollowsviewsareas
catalog我们仍未知道那天所看见的花的名字。8359.653783552910897780235日本

{
  "recordType": "catalog",
  "contentType": "anime",
  "seasonId": 835,
  "mediaId": 835,
  "title": "我们仍未知道那天所看见的花的名字。",
  "subtitle": "难忘的催泪夏天",
  "url": "https://www.bilibili.com/bangumi/play/ss835",
  "sortedBy": "follows",
  "matchedFilters": ["contentType=anime", "sortedBy=follows"],
  "ratingScore": 9.6,
  "ratingCount": 53783,
  "views": 97780235,
  "follows": 5529108,
  "seriesFollows": 5803863,
  "danmaku": 4710640,
  "coins": 884981,
  "likes": 907862,
  "shares": 244868,
  "episodeText": "全11话",
  "isFinished": true,
  "accessLevel": "member",
  "areas": ["日本"],
  "found": true,
  "scrapedAt": "2026-10-05T20:27:51.725Z"
}

Titles and subtitles are returned in the language Bilibili shows them in, usually Chinese.

Output fields

Every record carries recordType (ranking, catalog, calendar or season), contentType, seasonId, title, url, the count fields above, scrapedAt and found. Ranking rows add rank and rankingWindowDays; calendar rows add calendarDate, episodeId, episodeLabel, episodePublishAt, episodePublished and episodeDelayed; season rows add the synopsis, cast, staff, genres, series, publish time and episode count. Fields a source does not provide for a record are null, never zero. When a query has no results you get one row with found: false.

Is it legal to scrape this data?

The Actor reads public series information that Bilibili shows to every visitor, without logging in or bypassing access controls. It does not download or stream video. You are responsible for using the data in line with applicable laws and the terms of the source. Found an issue? Open it in the Issues tab and it will be answered.

Support

Found a bug or a missing field? Open an issue on the Actor page and describe the input you used. Issues are answered in English, usually within a day.

Output fields

Every result is one flat record, so it drops straight into a spreadsheet, a database or a CRM.

FieldTypeDescriptionExample
recordTypestringWhat the row is: ranking, catalog, calendar or season. Rows for IDs that were not found carry found = false.catalog
contentTypestringBilibili section: anime, guochuang (Chinese animation), movie, documentary, tv or variety.anime
seasonIdintegerBilibili season ID (the number after ss in the play-page URL). Stable key for a series season.33415
mediaIdintegerBilibili media ID (the number after md in the media-page URL). Empty in ranking and calendar rows.28228813
episodeIdintegerBilibili episode ID (the number after ep). Set on calendar rows, empty elsewhere.6291972
titlestringSeries or season title as shown on Bilibili, usually Chinese.Detective Conan
subtitlestringShort tagline shown under the title in catalog lists.Unforgettable summer
urlstringBilibili page of the series, season or episode.https://www.bilibili.com/bangumi/play/ss33415
coverUrlstringPoster image on Bilibili's image host.https://i0.hdslb.com/bfs/bangumi/image/38e2a273f528fd01c34f1fc4df0f69c64487efad.
rankintegerPosition in the Top 100 ranking (1 = best). Ranking rows only.1
rankingWindowDaysintegerLength of the ranking window, 3 or 7 days. Ranking rows only.7
sortedBystringSort order actually used for a catalog row (follows, views, rating, updated, airDate, danmaku); differs from your choice only when the content type does not offer it.follows
sortMetricTextstringThe figure Bilibili shows for the sort order, for example 552.9万追番 (5.529 million followers).552.9万追番
matchedFiltersarrayThe filters that were applied to produce this catalog row, such as contentType=anime or isFinished=finished.["contentType=anime","sortedBy=follows"]
ratingScorenumberBilibili audience rating out of 10. Empty when the title has too few ratings.9.6
ratingCountintegerNumber of audience ratings behind the score. Catalog rows with statistics and season rows only.53783
viewsintegerTotal plays across the season. Catalog rows without statistics hold it only when sorted by play count.97780233
followsintegerNumber of users following the season (追番 / 追剧).5529108
seriesFollowsintegerFollowers of the whole series across all its seasons.5803863
danmakuintegerNumber of on-screen danmaku comments.4710640
coinsintegerBilibili coins viewers gave to the season.884981
likesintegerNumber of likes.907862
sharesintegerNumber of shares.244868
repliesintegerNumber of comment replies. Season rows only.1203456
episodeTextstringLatest-episode text, for example "Updated to episode 1275" or "11 episodes".全11话
isFinishedbooleanTrue when the series has finished airing.true
accessLevelstringfree when everyone can watch, member when a paid Bilibili membership is required. Empty for other states.member
accessBadgestringBadge text on the poster, for example 大会员 (members only).大会员
seasonStatusintegerRaw Bilibili status code of the season (2 = free, 13 = members only).13
copyrightstringRights label published by Bilibili, bilibili or dujia. Ranking and season rows.bilibili
publishedAtstringPremiere date and time in ISO 8601 (Beijing time). Season rows only.2011-04-16T00:00:00+08:00
areasarrayProduction regions as named by Bilibili, for example 日本 (Japan).["日本"]
genresarrayGenre tags of the season. Season rows only.["推理","热血"]
synopsisstringPlot summary as published on Bilibili. Season rows only.A high school detective is shrunk to a child by a mysterious drug.
caststringVoice cast, one role per line. Season rows only.Conan Edogawa: Li Shirong
staffstringProduction staff, one role per line. Season rows only.Director: Kenji Kodama
seriesIdintegerID of the series the season belongs to. Season rows only.1273
seriesTitlestringTitle of the whole series. Season rows only.Detective Conan
totalEpisodesintegerNumber of episodes in the season listing. Season rows only.1275
seasonsInSeriesintegerHow many seasons the series has on Bilibili. Season rows only.4
calendarDatestringRelease date (Beijing time, YYYY-MM-DD). Calendar rows only.2026-10-06
episodeLabelstringLabel of the episode that is released, for example 第15话. Calendar rows only.第15话
episodePublishAtstringScheduled release time in ISO 8601 UTC. Calendar rows only.2026-10-06T02:00:00.000Z
episodePublishedbooleanTrue when the episode is already available. Calendar rows only.false
episodeDelayedbooleanTrue when Bilibili marked the release as delayed. Calendar rows only.false
delayReasonstringReason Bilibili gives for a delayed release. Empty when not delayed.Broadcaster schedule change
foundbooleanFalse only for rows that mark a requested ID that does not exist or an empty result.true
scrapedAtstringISO 8601 timestamp of extraction.2026-10-06T03:00:00.000Z

Sample record

{
  "recordType": "catalog",
  "contentType": "anime",
  "seasonId": 33415,
  "mediaId": 28228813,
  "episodeId": 6291972,
  "title": "Detective Conan",
  "subtitle": "Unforgettable summer",
  "url": "https://www.bilibili.com/bangumi/play/ss33415",
  "coverUrl": "https://i0.hdslb.com/bfs/bangumi/image/38e2a273f528fd01c34f1fc4df0f69c64487efad.png",
  "rank": 1,
  "rankingWindowDays": 7,
  "sortedBy": "follows",
  "sortMetricText": "552.9万追番",
  "matchedFilters": [
    "contentType=anime",
    "sortedBy=follows"
  ],
  "ratingScore": 9.6,
  "ratingCount": 53783,
  "views": 97780233,
  "follows": 5529108,
  "seriesFollows": 5803863,
  "danmaku": 4710640,
  "coins": 884981,
  "likes": 907862,
  "shares": 244868,
  "replies": 1203456,
  "episodeText": "全11话",
  "isFinished": true,
  "accessLevel": "member",
  "accessBadge": "大会员",
  "seasonStatus": 13,
  "copyright": "bilibili",
  "publishedAt": "2011-04-16T00:00:00+08:00",
  "areas": [
    "日本"
  ],
  "genres": [
    "推理",
    "热血"
  ],
  "synopsis": "A high school detective is shrunk to a child by a mysterious drug.",
  "cast": "Conan Edogawa: Li Shirong",
  "staff": "Director: Kenji Kodama",
  "seriesId": 1273,
  "seriesTitle": "Detective Conan",
  "totalEpisodes": 1275,
  "seasonsInSeries": 4,
  "calendarDate": "2026-10-06",
  "episodeLabel": "第15话",
  "episodePublishAt": "2026-10-06T02:00:00.000Z",
  "episodePublished": false,
  "episodeDelayed": false,
  "delayReason": "Broadcaster schedule change",
  "found": true,
  "scrapedAt": "2026-10-06T03:00:00.000Z"
}

Input

FieldNameTypeWhat it does
modeModestringranking = Top 100 charts (follower and play counts); catalog = filterable list of all titles with statistics; calendar = upcoming and recent episode releases; details = full record for the season IDs or URLs you list.
contentTypesContent typesarrayWhich Bilibili sections to read. Allowed values: anime, guochuang (Chinese animation), movie, documentary, tv, variety. Rankings exist for all but variety; the calendar only for anime and guochuang. Not used in details mode.
rankingWindowDaysRanking windowstringRanking mode: rank by the last 3 days or the last 7 days.
sortBySort catalog bystringCatalog mode: sort order. If a content type does not offer the chosen order, the Actor sorts by play count and records this in the sortedBy field.
isFinishedAiring statusstringCatalog mode: only finished series, only series still airing, or both.
accessAccessstringCatalog mode: titles free to watch, or titles that need a paid Bilibili membership.
yearRelease yearstringCatalog mode: premiere year (anime and guochuang from 2015, movies, documentaries and TV from 2016), a multi-year range or decade for older titles, or any. Years a content type does not offer are skipped with a log warning.
quarterSeason of the yearstringCatalog mode: premiere quarter (winter = January, spring = April, summer = July, fall = October).
areaCountry or regionstringCatalog mode: production region. Each content type offers its own regions (anime: Japan, USA, other); combinations Bilibili does not offer are skipped with a log warning.
genresGenresarrayCatalog mode: one or more genre names in English (for example comedy, isekai, mecha, romance, slice of life, school, sports, idol) or in Chinese as shown on Bilibili. Each genre is read separately and a title is listed once.
includeStatsAdd statistics to catalog and details rowsbooleanCatalog mode: add play, follower, danmaku, coin, like and share counts, the rating count and the production regions to every row (two extra requests per title). Details mode: use the dedicated statistics endpoint. Turn off for the fastest listing.
calendarDaysBeforeCalendar: days before todayintegerCalendar mode: how many past days to include (0 to 7).
calendarDaysAfterCalendar: days after todayintegerCalendar mode: how many upcoming days to include (0 to 7).
seasonsSeasons (details mode)arrayDetails mode: Bilibili season IDs, episode IDs or media IDs, or full URLs. Accepted forms: 33415, ss33415, ep323085, md28228813, https://www.bilibili.com/bangumi/play/ss33415.
maxItemsMaximum resultsintegerStop after this many results in total. This also caps what a run can cost.
proxyConfigurationProxy configurationobjectOptional proxy. Leave disabled unless Bilibili answers with errors from datacenter addresses; an Apify proxy in Asia raises the platform cost of the run.

Call it from your code

Run the Actor and get the results in one request. Replace YOUR_APIFY_TOKEN with the token from your Apify account settings.

curl -X POST "https://api.apify.com/v2/acts/datagrit~bilibili-anime-series-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode":"catalog","contentTypes":["anime"],"sortBy":"follows","includeStats":true,"maxItems":20}'
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('datagrit/bilibili-anime-series-tracker').call({
  "mode": "catalog",
  "contentTypes": [
    "anime"
  ],
  "sortBy": "follows",
  "includeStats": true,
  "maxItems": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0]);

Install with npm i apify-client.

from apify_client import ApifyClient
import os

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("datagrit/bilibili-anime-series-tracker").call(run_input={
  "mode": "catalog",
  "contentTypes": [
    "anime"
  ],
  "sortBy": "follows",
  "includeStats": True,
  "maxItems": 20
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(len(items), items[0] if items else None)

Install with pip install apify-client.

Frequently asked questions

How fresh is the data?

Every run reads Bilibili live; counts are the ones shown on the site at that moment.

Why are some play or follower counts missing?

The release calendar reports "-" for series without a count yet. Those fields are `null`. The status message at the end of a run states on how many results both counts were present.

Why was a filter combination skipped?

Bilibili offers different filters per content type. For example the anime section has the regions Japan, USA and other, and the movie section cannot be sorted by followers (it is sorted by plays and `sortedBy` says so). The log lists what was skipped and the options Bilibili does offer.

Does the catalog contain every title I see on bilibili.com?

Bilibili decides which titles it lists for the region a request comes from. A run from outside mainland China sees a smaller catalog than a browser in China (about 950 anime titles in our test from Southeast Asia), and very recent mainland-only releases can be missing. A filter that matches nothing returns one row with `found: false`.

Do I need a proxy?

Usually not. If Bilibili answers with errors from datacenter addresses, enable the proxy option and pick an Asian country; the Actor retries throttled requests and respects the wait time Bilibili sends.

Can I schedule runs?

Yes. A daily ranking or calendar run gives you a time series of follower growth and upcoming releases.

Try Bilibili Anime Catalog, Rankings & Calendar on Apify

Guide

How to track Bilibili anime rankings, follower counts and release dates with Python — Pull Bilibili's Top 100 anime ranking, a filterable catalog with follower and rating counts, and the release calendar as clean JSON using Python or cURL.

Related Actors

Public procurement

UK Contract Expiry Radar - Recompete Leads

UK public contracts ending soon with incumbent supplier, buyer, value and contact - recompete leads from Contracts Finder award notices.

from $3.50 / 1,000 results