EasyDown API Docs
Platform Video Downloader APIs

Bilibili Video Downloader API

Use EasyDown's Bilibili (mainland China) video downloader API for supported public URLs. Return downloadable video, images, audio, and sanitized platform data.

Several Bilibili URL families are normalized into one selected video item. The REST response keeps available video, separate audio, thumbnail, duration, and quality data.

Use it to build a Bilibili video downloader for mainland China video, bangumi, cheese, and b23.tv links.

Use this endpoint when you need platform-specific fields in addition to stable downloadable media.

Endpoints

POST https://api.easydown.org/api/v1/platforms/bilibili/parse

Supported URL formats

  • bilibili.com/video/BV{id}
  • bilibili.com/video/av{id}
  • b23.tv/{code}
  • bilibili.com/bangumi/play/{id}
  • bilibili.com/cheese/play/{id}

Accepted examples

  • https://www.bilibili.com/video/BV1sW4y197cE/
  • https://www.bilibili.com/video/av45306969/
  • https://b23.tv/INJgdai

Bilibili support is limited to mainland China URLs. bilibili.tv and bili.im (Bstation / international) are not supported.

What the platform response contains

Some qualities use DASH with separate videos[] and audios[] entries. Download both selected streams and merge them with FFmpeg without re-encoding when compatible.

Published platform data fields

The API preserves additional public fields from the final target object after recursive sensitive-field filtering. The documented fields below remain stable for this platformDataVersion.

FieldTypeDescription
data.mediaobjectNormalized images, videos, audios, title, thumbnail, and duration.
data.platformDataVersionstringPublished data contract version for Bilibili (mainland China); currently 1.
data.platformData.titlestringPublic video title.
data.platformData.picstringPublic cover image URL.
data.platformData.timelengthnumberDuration in milliseconds.
data.platformData.dashobjectSeparate DASH video and audio renditions.
data.platformData.support_formatsarrayQuality labels and supported playback formats.
data.platformData.qualitynumberSelected quality identifier when exposed.
data.platformData.formatstringSelected playback format when exposed.
{
  "status": 200,
  "data": {
    "media": {
      "platform": "bilibili",
      "title": "Example public post",
      "thumbnail": "https://public-cdn.example/cover.jpg",
      "duration": 18,
      "images": [],
      "videos": [
        {
          "url": "https://public-cdn.example/video.mp4",
          "quality": "1080p",
          "mimeType": "video/mp4",
          "width": 1920,
          "height": 1080,
          "hasAudio": true,
          "source": "direct"
        }
      ],
      "audios": []
    },
    "platformData": {
      "title": "Example public Bilibili video",
      "pic": "https://media.example/cover.jpg",
      "timelength": 65000,
      "dash": {
        "video": [
          {
            "id": 80,
            "width": 1920,
            "height": 1080,
            "mimeType": "video/mp4",
            "baseUrl": "https://media.example/video.m4s"
          }
        ],
        "audio": [
          {
            "id": 30280,
            "bandwidth": 128000,
            "mimeType": "audio/mp4",
            "baseUrl": "https://media.example/audio.m4s"
          }
        ]
      },
      "support_formats": [
        {
          "quality": 80,
          "new_description": "1080P"
        }
      ]
    },
    "platformDataVersion": "1"
  },
  "msg": "success"
}

Download and proxy guidance

Send Referer: https://www.bilibili.com/, a browser User-Agent, and forwarded Range headers. Signed stream URLs expire and must be refreshed by parsing the original page again.

Limits and behavior

Profiles, favorites, watch-later lists, list pages without one video ID, paid content, DRM media, and region-restricted items are unsupported.

Only public content is supported. Private, deleted, age-restricted, region-restricted, live, or otherwise unavailable content can fail without a credit charge.

A response is charged only after downloadable media is returned. Each successful parse costs 1 credit. Authentication, validation, permission, unavailable-content, no-media, and upstream failures are not charged.

Troubleshooting

  • Merge selected DASH video and audio streams before delivery to users.
  • Always include the Bilibili Referer when fetching signed streams.
  • Re-parse when a stream returns 403 or its signature expires.

Common questions

Does a failed request consume credits?

No. A credit is charged only after the API returns downloadable media.

The post can be deleted, private, region-restricted, live, missing media, or temporarily unavailable upstream.

Interactive API reference

The curl, JavaScript, and Python examples and schemas below are rendered from the production OpenAPI 3.1 contract.

The Try it panel sends requests directly to api.easydown.org. Its token is held in React memory only and disappears on reload.

POST

Try it

A successful response with downloadable media costs 1 credit. Failed requests are not charged.

The token stays only in this page memory and is cleared when the page is closed or reloaded.

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/v1/platforms/bilibili/parse" \  -H "Content-Type: application/json" \  -d '{}'
{  "status": 200,  "data": {    "media": {      "platform": "tiktok",      "title": "string",      "thumbnail": "string",      "duration": 0,      "images": [        {          "url": "http://example.com",          "width": 0,          "height": 0        }      ],      "videos": [        {          "url": "http://example.com",          "quality": "string",          "mimeType": "string",          "width": 0,          "height": 0,          "hasAudio": true,          "source": "direct",          "headers": {            "property1": "string",            "property2": "string"          }        }      ],      "audios": [        {          "url": "http://example.com",          "quality": "string",          "mimeType": "string",          "bitrate": 0,          "source": "direct",          "headers": {            "property1": "string",            "property2": "string"          }        }      ]    },    "platformData": {      "title": "string",      "pic": "string",      "timelength": 0,      "dash": {},      "support_formats": [        null      ],      "quality": 0,      "format": "string"    },    "platformDataVersion": "1"  },  "msg": "success"}