Institutional Trades
Retrieve the daily buy, sell, and net volumes of the three institutional investors (foreign & mainland investors, investment trusts, and dealers) for a given stock within a date range.
GET /ownership/institutional-trades/{symbol}
Version Note
Available since v2.4.0
Parameters
| Name | Type | Description |
|---|---|---|
symbol* | string | Stock symbol (e.g. 2330), path parameter |
from | string | Start date (format: yyyy-MM-dd), defaults to 30 days ago |
to | string | End date (format: yyyy-MM-dd), defaults to today |
sort | string | Sort by date, defaults to desc; asc is also supported |
Response
| Name | Type | Description |
|---|---|---|
type* | string | Security type |
exchange* | string | Exchange |
market* | string | Market |
symbol* | string | Stock symbol |
data* | object[] | One entry per trading day with institutional activity |
data.date* | string | Date |
data.foreign* | object | Foreign & mainland investors combined (excluding foreign dealers) |
data.foreign.buy* | number | Buy volume (shares) |
data.foreign.sell* | number | Sell volume (shares) |
data.foreign.net* | number | Net volume (shares, buy − sell) |
data.trust* | object | Investment trusts, same sub-fields as foreign |
data.dealer* | object | Dealers combined (proprietary trading plus hedging), same sub-fields as foreign |
data.total* | number | Combined net volume of the three institutional investors (shares, the sum of foreign.net, trust.net, and dealer.net) |
Data Notes
- Data source: Compiled from the daily institutional investors trading reports published by the Taiwan Stock Exchange and the Taipei Exchange.
- Data frequency: An entry exists only for trading days on which the stock had institutional trading activity — days without any institutional activity will not appear in the
dataarray. - Historical coverage: TWSE- and TPEx-listed stocks from 2013. Emerging-market stocks are also covered, with start dates varying by stock — rely on the actual response.
- Query range: The span between
fromandtomust be less than 1 year, otherwise400is returned. Invalid dates orfromlater thantoalso return400. - No data: For nonexistent symbols or ranges without data,
200withdata: []is returned (not404). In this casetype/exchange/marketare default values and do not reflect the symbol's actual attributes.
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() # Establish market data connection
reststock = sdk.marketdata.rest_client.stock
## Version 2.2.6 and later using following Exception for error handling
from fubon_neo.sdk import FugleAPIError
try:
response = reststock.ownership.institutional_trades(**{"symbol": "2330", "from": "2026-08-13", "to": "2026-08-13"})
except FugleAPIError as e:
print(f"Error: {e}")
print("------------")
print(f"Status Code: {e.status_code}") # ex: 429
print(f"Response Text: {e.response_text}") # ex: {"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(); // Establish market data connection
const client = sdk.marketdata.restClient
client.stock.ownership.institutionalTrades({ symbol: '2330', from: '2026-08-13', to: '2026-08-13' })
.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(); // Establish market data connection
var rest = sdk.MarketData.RestClient.Stock;
var institutionalTrades = await rest.Ownership.InstitutionalTrades("2330", new()
{
From = new DateTime(2026, 8, 13),
To = new DateTime(2026, 8, 13)
});
var institutionalTrades_cont = institutionalTrades.Content.ReadAsStringAsync().Result;
Console.WriteLine(institutionalTrades_cont);
Response Body (data as of the 2026-08-13 market close):
{
"type": "EQUITY",
"exchange": "TWSE",
"market": "TSE",
"symbol": "2330",
"data": [
{
"date": "2026-08-13",
"foreign": {
"buy": 18369301,
"sell": 14397070,
"net": 3972231
},
"trust": {
"buy": 2350600,
"sell": 1614607,
"net": 735993
},
"dealer": {
"buy": 482295,
"sell": 389114,
"net": 93181
},
"total": 4801405
}
]
}