集保戶股權分散
取得指定個股在日期區間內、每期集保戶股權分散資料,含各持股級距的股東人數、持股股數與佔集保庫存比例。
GET /ownership/tdcc-distribution/{symbol}
版本資訊
v2.4.0 起新增功能
Parameters
| Name | Type | Description |
|---|---|---|
symbol* | string | 個股代號(如 2330),路徑參數 |
from | string | 開始日期(格式:yyyy-MM-dd);與 to 皆省略時回最新一期 |
to | string | 結束日期(格式:yyyy-MM-dd);僅提供 from 或 to 其一時,視同以該日查詢單日 |
sort | string | 依日期排序,預設 desc 降冪;可選 asc 升冪 |
Response
| Name | Type | Description |
|---|---|---|
type* | string | 證券類型 |
exchange* | string | 交易所 |
market* | string | 市場別 |
symbol* | string | 個股代號 |
data* | object[] | 每期一筆 |
data.date* | string | 公布基準日 |
data.distributions* | object[] | 各持股級距明細 |
data.distributions.range* | string | 持股級距(股),15 個固定級距;另含「合計」列,部分期別含「異動」(差異數調整)列 |
data.distributions.holders* | number | 股東人數 |
data.distributions.shares* | number | 持股股數(股) |
data.distributions.proportion* | number | 佔集保庫存比例(百分比值,84.67 即 84.67%) |
資料說明
- 資料來源:整理自臺灣集中保管結算所公開之集保戶股權分散表。
- 資料頻率:每週公布一次,
date為公布基準日(多為週五,遇假日可能提前);2015-05-08 以前之歷史資料為每月一筆。 - 歷史涵蓋:自 2013-07-01 起;涵蓋上市、上櫃、興櫃個股。
- 單日查詢:資料僅落在公布基準日;僅提供
from或to其一(視同單日查詢)且該日非公布基準日時,回傳data: []。 - 查詢區間:單次查詢
from與to的間隔須小於 1 年,超過會回傳400;日期不合法或from晚於to亦回傳400。 - 查無資料:代號不存在或該區間無資料時,皆回傳
200與data: [](不回404);此時type/exchange/market為預設值,不代表該代號的真實屬性。
Example
- Python
- Node.js
- C#
from fubon_neo.sdk import FubonSDK, Order
sdk = FubonSDK()
accounts = sdk.login("Your ID", "Your password", "Your cert path", "Your cert password") # 需登入後,才能取得行情權限
sdk.init_realtime() # 建立行情連線
reststock = sdk.marketdata.rest_client.stock
## 2.2.6 及以後版本使用更簡化 (使用 Exception 進行例外處理)
from fubon_neo.sdk import FugleAPIError
try:
response = reststock.ownership.tdcc_distribution(**{"symbol": "2330", "from": "2026-08-07", "to": "2026-08-07"})
except FugleAPIError as e:
print(f"Error: {e}")
print("------------")
print(f"Status Code: {e.status_code}") # 例: 429
print(f"Response Text: {e.response_text}") # 例: {"statusCode":429,"message":"Rate limit exceeded"}
print(response)
const { FubonSDK } = require('fubon-neo');
const sdk = new FubonSDK();
const accounts = sdk.login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
sdk.initRealtime(); // 建立行情連線
const client = sdk.marketdata.restClient
client.stock.ownership.tdccDistribution({ symbol: '2330', from: '2026-08-07', to: '2026-08-07' })
.then(data => console.log(data));
using FubonNeo.Sdk;
using FugleMarketData.QueryModels.Stock.Ownership;
var sdk = new FubonSDK();
var result = sdk.Login("Your ID", "Your Password", "Your Cert Path", "Your Cert Password");
sdk.InitRealtime(); // 建立行情連線
var rest = sdk.MarketData.RestClient.Stock;
var tdccDistribution = await rest.Ownership.TdccDistribution("2330", new()
{
From = new DateTime(2026, 8, 7),
To = new DateTime(2026, 8, 7)
});
var tdccDistribution_cont = tdccDistribution.Content.ReadAsStringAsync().Result;
Console.WriteLine(tdccDistribution_cont);
Response Body(以 2026-08-07 期別的資料為例,一期共 15 個固定級距,本期另含「異動」與「合計」列):
{
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"symbol": "2330",
"data": [
{
"date": "2026-08-07",
"distributions": [
{
"range": "1-999",
"holders": 2523071,
"shares": 293744991,
"proportion": 1.13
},
{
"range": "1000-5000",
"holders": 454920,
"shares": 869533934,
"proportion": 3.35
},
{
"range": "5001-10000",
"holders": 53011,
"shares": 379122752,
"proportion": 1.46
},
{
"range": "10001-15000",
"holders": 17491,
"shares": 214496406,
"proportion": 0.82
},
{
"range": "15001-20000",
"holders": 8096,
"shares": 142302572,
"proportion": 0.54
},
{
"range": "20001-30000",
"holders": 7803,
"shares": 190826713,
"proportion": 0.73
},
{
"range": "30001-40000",
"holders": 3686,
"shares": 127930452,
"proportion": 0.49
},
{
"range": "40001-50000",
"holders": 2048,
"shares": 92338466,
"proportion": 0.35
},
{
"range": "50001-100000",
"holders": 4123,
"shares": 288118496,
"proportion": 1.11
},
{
"range": "100001-200000",
"holders": 2053,
"shares": 288258115,
"proportion": 1.11
},
{
"range": "200001-400000",
"holders": 1314,
"shares": 368794003,
"proportion": 1.42
},
{
"range": "400001-600000",
"holders": 584,
"shares": 285446281,
"proportion": 1.1
},
{
"range": "600001-800000",
"holders": 353,
"shares": 246354564,
"proportion": 0.94
},
{
"range": "800001-1000000",
"holders": 208,
"shares": 186782272,
"proportion": 0.72
},
{
"range": "1000001以上",
"holders": 1475,
"shares": 21958321050,
"proportion": 84.67
},
{
"range": "異動",
"holders": 1,
"shares": 1000,
"proportion": 0
},
{
"range": "合計",
"holders": 3080236,
"shares": 25932370067,
"proportion": 100
}
]
}
]
}