ビスたん配信一覧API リファレンス
スパチャデータが保存されている配信の一覧をページネーション付きで取得する公開 API です。
配信日 (stream_date) 順にソートされます。
配信開始当初にメンバーシップ限定配信だった配信は本 API のレスポンスから除外されます。
エンドポイント概要
| URL | https://bistan-tool.com/api/saved_live_stream.php |
|---|---|
| Method | GET |
| Content-Type | application/json; charset=utf-8 |
| CORS | ブラウザからのクロスオリジンアクセスを許可 (Access-Control-Allow-Origin: *) |
| Preflight | OPTIONS メソッドに対応 (HTTP 204 を返却、ボディなし) |
| レート制限 | なし (運用状況に応じて将来追加する場合あり) |
クエリパラメータ
| 名前 | 型 | 既定値 | 必須 | 説明 |
|---|---|---|---|---|
page |
integer | 1 |
No |
ページ番号 (1 始まり)。1 ページあたり 20 件固定。
1 未満の値 ( 0, -1 等) や非数値文字列 (abc 等) は自動的に 1 に丸められる。
totalPages を超える値を指定した場合は空配列が返る。
|
sort |
string | "desc" |
No |
asc (古い順) または desc (新しい順)。配信日 (stream_date) でソート。
大文字・小文字を問わない ( ASC / DESC / Desc 等も有効)。
上記以外の不正値はすべて desc 扱いになる。
|
レスポンス (成功時 HTTP 200)
JSON
{
"status": "success",
"data": {
"streams": [
{
"video_id": "dQw4w9WgXcQ",
"nth_time": "\u7b2c42\u56de",
"title": "Morning broadcast #42",
"scheduled_start_time": "2026-04-10 12:00:00",
"is_members_only": 0,
"stream_date": "2026-04-10"
}
],
"totalCount": 247,
"totalPages": 13
}
}
レスポンスフィールド: トップレベル
| フィールド | 型 | 説明 |
|---|---|---|
status |
string | 成功時は "success"、エラー時は "error" を返す (エラー時は message フィールドも付属、下記「エラーレスポンス」参照)。 |
data |
object | 配信一覧データ。内訳は下記「data オブジェクト」参照。 |
data オブジェクト
| フィールド | 型 | 説明 |
|---|---|---|
streams |
array | スパチャ保存済み配信の配列。各要素のフィールドは下記「data.streams 配列の各要素」参照。 |
totalCount |
integer | メンバーシップ限定配信を除いた総件数 (全ページ合計)。 |
totalPages |
integer | 総ページ数 (totalCount を 20 で割って切り上げた値)。 |
data.streams 配列の各要素
| フィールド | 型 | 説明 |
|---|---|---|
video_id |
string | YouTube 動画 ID |
nth_time |
string | null | 「第 n 回」等の便宜的な回数表記 (ソート非依存)。タイトルから自動抽出、該当なしの場合は null。 |
title |
string | null | 配信タイトル |
scheduled_start_time |
string | null | 配信予定時刻 (YYYY-MM-DD HH:MM:SS 形式)。2026/02/27 以前に登録された過去配信では null の場合あり。 |
is_members_only |
integer | 常に 0。本公開 API は、配信開始当初に非メンバー限定配信だった配信のみを対象とするため、この値が 1 になることはない。 |
stream_date |
string | 配信日 (YYYY-MM-DD 形式) |
エラーレスポンス
サーバー内部でエラーが発生した場合、HTTP 500 と共に以下の形式の JSON を返します。
JSON
{
"status": "error",
"message": "Internal Server Error"
}
使用例
Bash (curl)
curl "https://bistan-tool.com/api/saved_live_stream.php?page=1&sort=desc"
JavaScript (fetch)
const params = new URLSearchParams({
page: "1",
sort: "desc",
});
const res = await fetch(`https://bistan-tool.com/api/saved_live_stream.php?${params}`);
const json = await res.json();
if (json.status === "success") {
console.log(`全 ${json.data.totalCount} 配信 / ${json.data.totalPages} ページ`);
for (const stream of json.data.streams) {
console.log(`[${stream.stream_date}] ${stream.title} (${stream.video_id})`);
}
}
Python (requests)
import requests
res = requests.get(
"https://bistan-tool.com/api/saved_live_stream.php",
params={"page": 1, "sort": "desc"},
)
res.raise_for_status()
body = res.json()
if body["status"] == "success":
print(f'全 {body["data"]["totalCount"]} 配信 / {body["data"]["totalPages"]} ページ')
for stream in body["data"]["streams"]:
print(f'[{stream["stream_date"]}] {stream["title"]} ({stream["video_id"]})')
注意事項
- 配信開始当初にメンバーシップ限定配信だった配信はレスポンスにも
totalCountにも含まれません。 - 配信開始当初にメンバーシップ限定配信だった配信のスパチャは収集対象外のため、ビスたん配信スパチャ検索API からも取得できません。
nth_time/title/scheduled_start_timeは過去に登録された配信ではnullの場合があります。- 本 API にはレート制限は設定されていません (運用状況に応じて将来追加する場合があります)。
- CORS について
ブラウザ文脈において任意オリジンからのクロスオリジンアクセスを許可しています (Access-Control-Allow-Origin: *)。curl や Python スクリプト、サーバー間通信など非ブラウザクライアントは、そもそもブラウザの同一オリジンポリシーの対象外のため、CORS 設定の有無に関係なく利用可能です。