Bilibili APIs - User Published Videos (V2)
Retrieve a list of videos published by a specific Bilibili user, including video metadata, cover images, and engagement metrics.
Typical use cases:
- Monitoring creator's content updates and publishing patterns.
- Building user-specific video catalogs for analysis.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
token | query | string | Yes | Access token for the API. |
uid | query | string | Yes | Bilibili User ID (UID). |
param | query | string | No | Pagination parameter from previous response. |
Code Samples
💡 Environment Note
Default samples use https://api.justoneapi.com (prod-global). For users in Mainland China, it is recommended to replace it with http://47.117.133.51:30015 (prod-cn) for better performance. See Environment Guide.
bash
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
curl -X GET "https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE"text
I want to use the "User Published Videos (V2)" API from Just One API.
API Endpoint: https://api.justoneapi.com/api/bilibili/get-user-video-list/v2
HTTP Method: GET
Authentication: Append "?token=YOUR_API_KEY" to the URL.
OpenAPI Definition: https://docs.justoneapi.com/openapi/bilibili-apis/user-published-videos-v2-en.json
Parameters:
- token (query): Access token for the API. (Required)
- uid (query): Bilibili User ID (UID). (Required)
- param (query): Pagination parameter from previous response.
Return format: JSON
Response Handling & Error Codes:
1. Business results should be determined by the "code" field in the response body (code 0 means success).
2. Timeout Recommendation: Set request timeout to at least 60 seconds.
3. Business Code Reference:
- 0: Success
- 100: Invalid or Inactive Token
- 301: Collection Failed. Please Retry.
- 302: Rate Limit Exceeded
- 303: Daily Quota Exceeded
- 400: Invalid Parameters
- 500: Internal Server Error
- 600: Permission Denied
- 601: Insufficient Balance
Please help me write a script in my preferred programming language to call this API and handle the response.python
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import requests
url = "https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE"
response = requests.get(url)
print(response.json())js
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
const response = await fetch("https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE", {
method: "GET"
});
const data = await response.json();
console.log(data);java
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}go
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
client := &http.Client{}
url := "https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE"
req, _ := http.NewRequest("GET", url, nil)
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}php
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.justoneapi.com/api/bilibili/get-user-video-list/v2?token=YOUR_API_KEY&uid=VALUE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
curl_close($ch);
echo $response;Responses
json
{
"code": 0,
"data": {
"code": 0,
"message": "OK",
"ttl": 1,
"data": {
"episodic_button": {
"text": "播放全部",
"uri": "bilibili://music/playlist/spacepage/472747194?desc=1&offset=0&oid=0&order=time&page_type=1&playlist_..."
},
"order": [
{
"title": "最新发布",
"value": "pubdate"
}
],
"count": 91,
"item": [
{
"title": "【巫师】美国干伊朗02,藏着对我们的资本阴招儿",
"translated_title": "",
"translate_status": "",
"subtitle": "",
"tname": "财经商业",
"cover": "http://i0.hdslb.com/bfs/archive/ee2702eb7b94310391bc0a71a4112ece2f35ffe5.jpg",
"cover_icon": "",
"uri": "bilibili://video/116176164232467?cid=36474193273&history_progress=0&player_height=1080&player_preloa...",
"param": "116176164232467",
"goto": "av",
"length": "",
"duration": 474,
"is_popular": false,
"is_steins": false,
"is_ugcpay": false,
"is_cooperation": false,
"is_pgc": false,
"is_live_playback": false,
"is_pugv": false,
"is_fold": false,
"is_oneself": false,
"view_self_type": 0,
"play": 480257,
"danmaku": 705,
"ctime": 1772707693,
"ugc_pay": 0,
"author": "巫师财经",
"state": false,
"bvid": "BV1CYPCzWEi4",
"videos": 1,
"three_point": [
{
"type": "addtoview",
"icon": "https://i0.hdslb.com/bfs/activity-plat/static/0X5s0d3xaY.png",
"text": "添加至稍后再看",
"translate": null
}
],
"first_cid": 36474193273,
"cursor_attr": {
"is_last_watched_arc": false,
"rank": 0
},
"view_content": "48万",
"icon_type": 0,
"publish_time_text": "3月5日",
"cover_left_icon": "",
"cover_left_text": "",
"sub_title_icon": ""
}
],
"last_watched_locator": {
"display_threshold": 10,
"insert_ranking": 6,
"text": "定位至上次观看"
},
"has_next": true,
"has_prev": false
}
}
}💡 Note: For list data, the example shows only 1-2 items for simplicity. The actual count depends on the API response.
