Documentation Python quickstart Blog Free tools hello@quanticdata.ioLog in

Bilibili Proxies: 158 Bytes Per Follower Count

What Bilibili costs in bytes, measured on 28 September 2026: 158 bytes for a follower count from the keyless relation endpoint, 230,769 bytes for a server-rendered video page over plain HTTP, and 1,696,995 bytes for the same page rendered in a browser
What Bilibili costs in bytes, measured on 28 September 2026: 158 bytes for a follower count from the keyless relation endpoint, 230,769 bytes for a server-rendered video page over plain HTTP, and 1,696,995 bytes for the same page rendered in a browser

Bilibili is China's YouTube for the under-35s, and it is the most readable social platform we have measured. On 28 September 2026 we fetched it 21 times through residential exits in Singapore, the United States and Germany. A public video page answers a plain HTTP client with 230,769 bytes, a VideoObject JSON-LD block, a canonical, an h1 and a hydration state carrying the exact view, like, coin and favourite counts. Rendering it costs 1,696,995 bytes, 7.35 times more, and from the United States the render added not one word. Three keyless API endpoints returned JSON from every country, the smallest a follower count in 158 bytes.

The keyword is shopping agents and a reverse proxy, not data

Bilibili proxies has no autocomplete. The United States SERP for it is Reddit users looking for an agent to buy digital items on Bilibili for them, a GitHub gist that reverse-proxies the live-stream API for a home server, a Go package from Bilibili's own engineering, two VPN pages for watching from abroad, the overseas bilibili.tv site and the investor relations page. The data reader is under bilibili api, whose autocomplete lists a community documentation project, python, github and an error code, and under bilibili scraper: github, comment scraper, video scraper. This page is for that reader: public video metrics, creator statistics and trend monitoring, with the platform's rules read as far as they can be read.

The video page is server-rendered, counters included

We audited bilibili.com/video/BV14Baa6JENd, the anniversary song video from Genshin Impact's official account, which was ranked first on the site's own popular list that afternoon. Over plain HTTP with no JavaScript, from three countries:

ExitNo-JS wordsRendered wordsJSON-LDAudit time
Singapore158325WebPage, VideoObject, BreadcrumbList19.5 s
United States154158WebPage, VideoObject, BreadcrumbList10.1 s
Germany157341WebPage, VideoObject, BreadcrumbList14.0 s

The title, description, canonical and h1 were present without JavaScript from every exit. The audit's word count is low because Chinese has no spaces; the markdown conversion of the same 230,769-byte response came to 963 words and 6,631 characters in 3.0 seconds. The rendered page produced 962 words from 1,696,995 bytes in 9.5 seconds, and from the United States the rendered audit returned 158 words, the same as the no-JS pass: the browser added the comment scaffold and the recommendation rail and nothing you would parse.

The part that makes this platform different is inside the plain HTML. Bilibili embeds its hydration state in the page, and we mined it from the no-JS response: 226,564 bytes of JSON carrying the exact counters.

"stat": {
  "view": 1859557, "danmaku": 35770, "reply": 16506,
  "favorite": 90176, "coin": 185836, "share": 37474,
  "like": 295569, "his_rank": 1
}

The visible page prints the same view count as 185.9万, rounded to a tenth of ten thousand. The state has the integer. On Instagram and Facebook the counters live in a meta description and are rounded or formatted by locale; on Bilibili they live in a JSON object with seven exact fields, plus the owner's follower count, 20,871,893, in the same blob. No render, no API call, one request.

Removed videos are a classifier problem, as everywhere. A video that no longer exists returned HTTP 200 with the title "where did the video go", 15 words without JavaScript and 41 rendered, and a meta description with unfilled template placeholders and the literal string undefined. Classify on the presence of a VideoObject block and a filled description, never on the status code.

Three endpoints answer without a key, and one answers with HTML

Bilibili's web API on api.bilibili.com is undocumented by the company and thoroughly documented by its community. We called four endpoints over plain HTTP with no cookie and no signature:

EndpointExitBytesTimeWhat it returns
/x/relation/stat?vmid=Singapore1581.7 sfollower 20,871,893, following 60
/x/web-interface/card?mid=United States2,4960.94 sname, verification, fans 20,871,897, 742 videos, 286,304,702 likes
/x/web-interface/popular?ps=5Singapore, US, Germany9,086 / 9,086 / 9,0980.9 / 0.9 / 0.46 s5 videos with full stat objects and upload region
/x/web-interface/view?bvid=Singapore, US3,4002.2 / 1.5 san HTML page, not JSON

The first three are the working set. The relation endpoint is the cheapest structured fact we have measured on any social platform: 158 bytes for an exact follower count, about 6.3 million reads per gigabyte. The card endpoint adds the display name, the official verification title, the video count and the lifetime like total. The popular endpoint is a ready-made trend feed: each of its rows carries the same seven-field stat object as the page, the creator's id and name, and a pub_location field naming the province or region the video was uploaded from, which is a signal no Western platform exposes.

The view endpoint is the one to avoid from a bare client: it answered a plain TLS request from both Singapore and the United States with a 3,400-byte HTML page instead of JSON. You do not need it. The video page itself carries the same stat object in its hydration state, and the popular list carries it for trending videos, so a per-video job reads the page and a per-creator job reads relation and card.

The exit region is acknowledged in a header and changes nothing

Every popular-list response carried a header, x-bili-metadata-ip-region, reading SG, US or DE to match the exit we used. The payload was 9,086 bytes from Singapore and the United States and 9,098 bytes from Germany, a 12-byte difference in the same five rows. The video page was 230,769 bytes with identical head and JSON-LD from all three. So Bilibili sees where you are, tells you so, and serves the same public data anyway. That is the opposite of TikTok, where the exit picks a different backend, and it means the country parameter on this platform is for your own bookkeeping, not for the result. Use a rotating exit for volume and pin nothing.

The creator space page, space.bilibili.com/ plus the id, is the one surface that is browser-only: title and description are server-rendered, the body is 0 words without JavaScript and 28 words after an 8.0-second render. Do not fetch it. The card and relation endpoints hold everything the space page shows, in 2,654 bytes between them.

The most open robots.txt of any platform we have measured

bilibili.com/robots.txt is 65 bytes:

User-agent: *
Disallow: /medialist/detail/
Disallow: /index.html

Two paths, no named crawlers, no AI block, nothing about video, space or API. By contrast TikTok's file names 25 AI crawlers with a flat disallow, Naver's carries an all-caps notice against AI training, and Kuaishou's closes with a wildcard disallow. Bilibili's user agreement is the counterweight: the page at /protocal/licence.html is 2,850 bytes and renders 0 words without JavaScript, so we could not read it as a plain client, and we do not claim to know what it says. The line we can state is the usual one for this family: public video and creator metrics are readable as above; anything that touches accounts, votes, coins or comments on the logged-in side is not something we help automate.

What it costs, and what to stop paying for

Because the exit region changes nothing, this is a platform for the cheapest line. Our rotating proxies start at $0.50/GB; the residential Basic line is $0.80/GB. Counting a gigabyte as 10^9 bytes:

JobBytes per requestRequests per GBAt $0.50/GBAt $0.80/GB
Follower count, relation endpoint1586,329,114$0.00000008$0.00000013
Creator card2,496400,641$0.0000012$0.0000020
Popular list, 5 videos with stats9,086110,059$0.0000045$0.0000073
Video page, plain HTTP, exact counters230,7694,333$0.00012$0.00018
Video page, rendered1,696,995589$0.00085$0.0014

One million follower reads through the relation endpoint is 158 MB, about 8 cents at $0.50/GB. The same million creators through the card endpoint is 2.5 GB, about $1.25. A million video pages over plain HTTP is 231 GB, about $115; rendered, 1,697 GB, about $848, for 167 extra words per page and no extra counters. Skip the browser on this platform entirely.

The setting that works on Bilibili

  • Network: rotating, from $0.50/GB. Twenty-one fetches from three countries returned the same public data with a header confirming the region; the network type is not examined on any surface we touched. Residential Basic at $0.80/GB is the fallback if a job also touches surfaces that are.
  • Fetch mode: engine: tls, plain HTTP. The video page returns 963 markdown words and a seven-field stat object from 230,769 bytes; rendered it is 1,696,995 bytes for 962 words, and from the United States the render added zero words to the audit.
  • Country: any. The popular list was 9,086 bytes from Singapore and the United States and 9,098 from Germany with the same five rows, and the header x-bili-metadata-ip-region is the platform telling you it noticed and did not care.
  • Endpoints: /x/relation/stat for followers at 158 bytes, /x/web-interface/card for the creator at 2,496 bytes, /x/web-interface/popular for trends at 9,086 bytes. Read per-video counters from the page's hydration state, not from the view endpoint, which answered HTML.
  • When the proxy is not enough: to find the videos to read, our video search collector returned 10 rows for the anniversary song query in 6.76 seconds, with the video we audited at rank 1 and eight other bilibili.com URLs with duration and date. For pages you want as clean markdown or JSON, the web scraping API is $0.0002 per page without rendering.
  • Every account gets $2 of free API usage per month.

For the two sibling platforms measured the same week, where the picture is the reverse, read Douyin, whose user page is a 72,914-byte shell and whose render finished from one exit in three, and Kuaishou, whose profile is server-rendered but whose head lies about what page you are on.

Sources & further reading

FAQ

Quick answers on bilibili proxies.

Something else? Ask us →

Do I need a proxy to read Bilibili video statistics?

Not for a handful of requests: every one of our 21 fetches on 28 September 2026 returned the same public data from Singapore, the United States and Germany, with a header naming the exit region. You need a pool for volume, not a country. The cheapest line is the right one here: one million follower reads through the relation endpoint is 158 MB, about 8 cents at $0.50/GB.

Which Bilibili API endpoints work without a key?

Three that we measured: /x/relation/stat?vmid= returned an exact follower count in 158 bytes, /x/web-interface/card?mid= returned the creator name, verification, video count and lifetime likes in 2,496 bytes, and /x/web-interface/popular returned five trending videos with full stat objects in 9,086 bytes. All three answered identical JSON from three countries with no cookie or signature. The view endpoint answered a bare client with a 3,400-byte HTML page instead, so read per-video counters from the page.

Are the view and like counts on a Bilibili page exact?

In the hydration state, yes; on screen, no. The rendered page prints 185.9万 for views, while the JSON embedded in the plain-HTTP response carries view 1,859,557, like 295,569, coin 185,836, favorite 90,176, share 37,474, danmaku 35,770 and reply 16,506. Parse the state object, not the visible text, and you get integers without a browser.

Does rendering a Bilibili page add anything?

Words, not data. The rendered video page was 1,696,995 bytes against 230,769 over plain HTTP, 7.35 times more, and the extra content was the comment scaffold and recommendation rail. From the United States the rendered audit counted 158 words, identical to the no-JS pass. The counters, the VideoObject JSON-LD, the canonical and the h1 were all in the plain HTML from every exit.

Does the exit country change what Bilibili returns?

It changes one header and nothing else that we measured. Every popular-list response carried x-bili-metadata-ip-region set to SG, US or DE to match our exit, and the payload was 9,086 bytes from two of them and 9,098 from the third for the same five rows. The video page was 230,769 bytes with the same head and JSON-LD from all three countries. Pin nothing.

Does Bilibili allow scraping in its robots.txt?

It is the most permissive file we have measured on a social platform: 65 bytes, two disallowed paths (/medialist/detail/ and /index.html) and no named crawlers. The user agreement at /protocal/licence.html is browser-only, 2,850 bytes and 0 words without JavaScript, so we make no claim about its terms. Public video and creator metrics are readable as measured; account-side actions are not something we help automate.

Read Bilibili at 6.3 million follower counts per gigabyte

Rotating exits from $0.50/GB return the 158-byte relation object and the server-rendered video page with exact counters from any country over plain HTTP, and the video search collector finds the videos to read at 10 rows in 6.76 seconds. Every account gets $2 of free API usage per month.

Related reading

Social proxiesKuaishou Proxies: 1,009 Words, Zero Browser

Thirteen fetches of Kuaishou on 28 September 2026. A public profile answers a plain HTTP client with 341,397 bytes, 1,009 words and 31 video cards from Singapore, 341,309 bytes and 1,010 words from the United States. Rendered it is 606,175 bytes, 39.7 seconds and the same 1,009 words. The head is generic on every profile, the video page is the one surface that needs a browser, and robots.txt allows fourteen named crawlers, GPTBot included, and nobody else.

Read →
Social proxiesNaver Proxies: 768 Words Without a Browser

Twenty fetches of Naver on 28 September 2026. The desktop blog is a frame that returns 0 words with or without JavaScript; the same post on the mobile subdomain returns 768 words in 155,493 bytes over plain HTTP, identical from Korea, the United States and Germany. The blog RSS hands over 50 posts in 99,632 bytes, a public cafe serves 8,280 words in a 1990s Korean charset, and the Open API answers a keyless request with 113 bytes and a documented quota of 25,000 calls a day.

Read →
Social proxiesXiaohongshu Proxies: 70 KB a Note, No Browser

Twenty-four fetches of Xiaohongshu on 28 September 2026. A public note requested with the token the feed hands out answers a plain HTTP client with 70,499 bytes, the full note text in the meta description and an Article JSON-LD block; rendered, the same note weighs 2,475,522 bytes. The explore feed is 186,518 bytes of server-rendered cards. The exit country changes the feed, not the note.

Read →