Skip to main content

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​

NameTypeDescription
symbol*stringStock symbol (e.g. 2330), path parameter
fromstringStart date (format: yyyy-MM-dd), defaults to 30 days ago
tostringEnd date (format: yyyy-MM-dd), defaults to today
sortstringSort by date, defaults to desc; asc is also supported

Response​

NameTypeDescription
type*stringSecurity type
exchange*stringExchange
market*stringMarket
symbol*stringStock symbol
data*object[]One entry per trading day with institutional activity
data.date*stringDate
data.foreign*objectForeign & mainland investors combined (excluding foreign dealers)
data.foreign.buy*numberBuy volume (shares)
data.foreign.sell*numberSell volume (shares)
data.foreign.net*numberNet volume (shares, buy − sell)
data.trust*objectInvestment trusts, same sub-fields as foreign
data.dealer*objectDealers combined (proprietary trading plus hedging), same sub-fields as foreign
data.total*numberCombined 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 data array.
  • 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 from and to must be less than 1 year, otherwise 400 is returned. Invalid dates or from later than to also return 400.
  • No data: For nonexistent symbols or ranges without data, 200 with data: [] is returned (not 404). In this case type / exchange / market are default values and do not reflect the symbol's actual attributes.

Example​

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)

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
}
]
}