台湾株 API

31 個のエンドポイント · マーケットデータ · ファンダメンタルズ · 機関投資家の売買動向 · その他

最終更新 2026-10
ベース URL
https://api.blave.org
認証
すべてのリクエストに api-key と secret-key ヘッダーを付ける
アクセス
API plan or Blave Agent plan
レート制限
キーごと・IP ごとに 5 分間 500 リクエスト

共通ルール

  • stock_id:TWSE(上市)/TPEx(上櫃)の銘柄コード。例:2330、0050、00878、006208。英数字(ドット可)、≤ 8 文字。それ以外は 400 {"error": "Invalid stock_id"} を返します。
  • start/end:YYYY-MM-DD、当日を含みます。各エンドポイントに別記がない限り形式は検証されません(文字列比較で絞り込みます)。必ず YYYY-MM-DD で送ってください。
  • アップストリームのクォータ超過 → 503 {"error": "Upstream rate limit. Please retry shortly."}。後で再試行してください。
  • 多数の銘柄を取得する場合は batch/<data_type>(リクエストごとに ≤ 50 銘柄)を使います。単一銘柄のエンドポイントをユニバース全体に対してループさせないでください。

台湾株 銘柄リスト

GET/studio/market/twstock/list
データ開始
スナップショット(現在上場中の証券)
更新頻度
サーバーキャッシュ 24 時間

パラメータ

なし。

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/list", headers=headers, timeout=60).json()["data"]# [{"stock_id": "00400A", "name": "主動國泰動能高息", "close": 14.72, "market": "TWSE",#   "industry_code": None, "listing_date": None}, ...]   # 2,392 rows in this response

レスポンス

{"data": [...]}、約 2,400 行(上市+上櫃、ETF を含む。興櫃は除く)。

フィールド型説明
stock_idstringコード
namestring名称
closefloat | null直近の日次終値(売買停止などでアップストリームにデータがない場合は null)
marketstringTWSE(上市)または TPEx(上櫃)
industry_codestring | nullTWSE/TPEx の数値の産業別(產業別)コードをそのまま返します(デコードなし)。ETF/会社以外の証券は null。主なコード:15 航運業、17 金融保險業、22 生技醫療業、24 半導體業、25 電腦及週邊設備業、26 光電業、27 通信網路業、28 電子零組件業、29 電子通路業、30 資訊服務業、31 其他電子業
listing_datestring | nullYYYY-MM-DD。ETF/会社以外の証券は null

エラー

共通エラーのみ(両市場とも取得に失敗した場合は 500)。

備考

  • ユニバースの構築に使います。サンプリングするときは業種を分散させてください。コードは業種ごとにまとまっているため、[:N] で切り詰めると少数の業種に偏ります。
  • リストが約 2,400 件より明らかに短い場合は、片方の市場の読み込みに失敗しています。上場廃止ではなく、データ不完全として扱ってください。
  • 片方の市場の読み込みに失敗した場合、サーバーキャッシュは 10 分に短縮されます。

台湾株 銘柄情報

GET/studio/market/twstock/info/<stock_id>
データ開始
スナップショット
更新頻度
サーバーキャッシュ 24 時間

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照

例

Python
info = requests.get(f"{BASE_URL}/studio/market/twstock/info/2330", headers=headers, timeout=30).json()["data"]# {"stock_id": "2330", "name": "台積電", "close": 2410.0, "industry_code": "24", "listing_date": "1994-09-05"}

レスポンス

{"stock_id": "<stock_id>", "data": {...}}。data のフィールドは /list の一行と同じです。

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}形式チェックに失敗
404{"error": "Stock not found"}現在上場中の証券ではない

備考

  • /list と同じキャッシュから返します。

台湾株 日足(未調整)

GET/studio/market/twstock/price/<stock_id>
データ開始
1994-10-01
更新頻度
毎日、台北時間 14:00 頃

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
上場(上市)または店頭(上櫃)の株式/ETF のコード英数字(ドット可)、≤ 8 文字。例:2330、0050、00878、006208
start
string · query
開始日(当日を含む)YYYY-MM-DD全履歴
end
string · query
終了日(当日を含む)YYYY-MM-DD取得可能な最新日

例

Python
response = requests.get(f"{BASE_URL}/studio/market/twstock/price/2330", headers=headers, timeout=60)data = response.json()["data"]   # no start/end → full history, 8,069 rows# [{"date": "1994-10-01", "stock_id": "2330", "open": 171.0, "high": 172.0,#   "low": 171.0, "close": 172.0, "spread": 1.0,#   "volume": 1660506, "turnover_value": 284858008, "turnover_count": 684},#  {"date": "1994-10-03", "stock_id": "2330", "open": 172.0, "high": 173.0,#   "low": 171.0, "close": 172.0, "spread": 0.0,#   "volume": 1560000, "turnover_value": 268084000, "turnover_count": 711}, ...]

レスポンス

{"stock_id": "<stock_id>", "data": [ ... ]}。行は date の昇順。

フィールド型単位説明
datestringYYYY-MM-DD取引日
stock_idstring—銘柄コード
open / high / low / closefloat台湾ドル未調整の価格
spreadfloat台湾ドル前日終値比
volumeint株(股)出来高
turnover_valueint台湾ドル売買代金
turnover_countint件(筆)約定件数

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}stock_id が形式チェックに失敗
404{"error": "No data found for stock_id: <stock_id>"}不明なコード/アップストリームにデータなし
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過。後で再試行

備考

  • start/end は形式を検証しません。形式が不正な値は 400 を返さず、文字列比較で絞り込まれます。必ず YYYY-MM-DD で送ってください。
  • トータルリターンのバックテストには price_adj を使ってください。このエンドポイントは未調整の価格です。
  • 多数の銘柄を取得する場合は、このエンドポイントをループさせず batch/price(リクエストごとに ≤ 50 銘柄)を使ってください。
  • 提供する最も古い日付は 1994-10-01 です。それより後に上場した銘柄は開始日が遅くなります。
  • 当日の行は TWSE/TPEx の公式終値ファイルから取得し、公表後(台北時間 14:00 頃)に追加されます。
  • サーバーキャッシュ:5 分。

台湾株 日足(調整後)

GET/studio/market/twstock/price_adj/<stock_id>
データ開始
1994-10-01(/price と同じ)
更新頻度
毎日

パラメータ

/price/<stock_id> と同じ。

例

Python
params = {"start": "2020-01-01", "end": "2024-12-31"}data = requests.get(f"{BASE_URL}/studio/market/twstock/price_adj/2330", headers=headers, params=params, timeout=60).json()["data"]

レスポンス

構造とフィールドは /price/<stock_id> と同じです。open/high/low/close は調整後の価格、volume/turnover_* は未調整の系列と同一です。

エラー

/price/<stock_id> と同じ。

備考

  • 現金配当と株式配当に対する調整(後復權/向後調整)です。初期の価格は実際の約定価格のままで、各権利落ち日以降の価格に累積係数を掛けるため、直近の調整後価格は未調整の価格より高くなります。トータルリターンのバックテストに使います。
  • 未調整の /price 系列が更新されると再構築されます。
  • サーバーキャッシュ:5 分。

台湾株 リアルタイム相場

GET/studio/market/twstock/quote/<stock_id>
データ開始
スナップショットのみ(履歴なし)
更新頻度
約 10 秒ごと

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/quote/2330", headers=headers, timeout=30).json()["data"]# {"open": 2415.0, "high": 2465.0, "low": 2415.0, "close": 2445.0,#  "change_price": -20.0, "change_rate": -0.81, "average_price": 2432.58,#  "volume": 4245, "total_volume": 26403, "amount": 10379025000, "total_amount": 64227410000,#  "yesterday_volume": 27390, "buy_price": 2445.0, "buy_volume": 17,#  "sell_price": 2450.0, "sell_volume": 11, "volume_ratio": 0.96,#  "quote_time": "2026-07-03 14:30:00", "stock_id": "2330", "tick_type": 2}

レスポンス

{"stock_id": "<stock_id>", "data": {...}}。data はフラットなオブジェクトです。

フィールド型説明
open / high / low / closefloat当日のここまでの OHLC
change_price / change_ratefloat前日終値比(台湾ドル/%)
average_pricefloat平均約定価格
volumeint直近ティックの出来高
total_volumeint当日の累計出来高
amount / total_amountfloat直近ティック/累計の売買代金
yesterday_volumeint前日の出来高
buy_price / buy_volumefloat / int最良買い気配
sell_price / sell_volumefloat / int最良売り気配
volume_ratiofloat出来高比率
quote_timestringYYYY-MM-DD HH:MM:SS。他のエンドポイントの date と異なり、完全なタイムスタンプです
stock_idstringコード
tick_typeint0 判定不能、1 売り主導の約定(賣盤成交)、2 買い主導の約定(買盤成交)

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}形式チェックに失敗
404{"error": "No data found for stock_id: <stock_id>"}相場データなし
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • 日中の価格確認専用です。履歴はなく、バックテストには使えません。
  • サーバーキャッシュ:10 秒。

台湾株 リアルタイム相場(バッチ)

GET/studio/market/twstock/quote
データ開始
スナップショットのみ(履歴なし)
更新頻度
約 10 秒ごと

パラメータ

名称説明許容値デフォルト
stock_ids
string · query必須
銘柄コードカンマ区切り、≤ 50 銘柄

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/quote", headers=headers,                    params={"stock_ids": "2330,2317"}, timeout=30).json()["data"]# {"2330": {...}, "2317": {...}}

レスポンス

{"data": {"<stock_id>": {...quote fields...}, ...}}。フィールドは /quote/<stock_id> と同じです。相場データのない銘柄は含まれません。

エラー

ステータスレスポンスボディ条件
400{"error": "stock_ids parameter required"}未指定
400{"error": "stock_ids exceeds max 50 per request"}上限超過
400{"error": "Invalid stock_id in list"}いずれかのコードが形式チェックに失敗
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • サーバーキャッシュ:10 秒。

台湾株 リアルタイム相場(全銘柄)

GET/studio/market/twstock/quote/all
データ開始
スナップショットのみ(履歴なし)
更新頻度
約 10 秒ごと

パラメータ

なし。

例

Python
rows = requests.get(f"{BASE_URL}/studio/market/twstock/quote/all", headers=headers, timeout=30).json()["data"]

レスポンス

{"data": [{...quote fields...}, ...]}(約 2,800 行)。フィールドは /quote/<stock_id> と同じです。

エラー

ステータスレスポンスボディ条件
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • サーバーキャッシュ:10 秒。

台湾株 分足 OHLCV

GET/studio/market/twstock/minute/ohlcv/<stock_id>/<schema>
データ開始
2019-01(銘柄ごとにバックフィル)
更新頻度
日中はリアルタイムの足、引け後に公式データで補正

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コード現在上場中の TWSE/TPEx の銘柄コード、または TAIEX(加權指數)
schema
string · path必須
時間足1m, 5m, 15m, 30m, 60m, 1d
start
string · query
開始日YYYY-MM-DDend − その時間足の最大範囲
end
string · query
終了日(当日を含む)YYYY-MM-DD今日(UTC)
adjust
string · query
1 = 調整後(後復權)の OHLC。係数は /price_adj と同じです。volume は調整されません0, 1, true, false0

リクエストあたりの最大範囲(end − start):1m 31 日 · 5m 62 日 · 15m 93 日 · 30m 186 日 · 60m 365 日 · 1d 3650 日。

例

Python
body = requests.get(f"{BASE_URL}/studio/market/twstock/minute/ohlcv/2330/1m", headers=headers,                    params={"start": "2026-08-06", "end": "2026-08-06"}, timeout=60).json()# {"stock_id": "2330", "schema": "1m", "data": [#   {"close": 2385.0, "high": 2395.0, "low": 2385.0, "open": 2395.0, "ts": "2026-08-06 01:00:00+00:00", "volume": 2540}, ...]}

レスポンス

{"stock_id", "schema", "data": [...]}.

フィールド型単位説明
tsstringUTC の ISO 形式足の開始時刻(分の開始でラベル付け)。台北時間 13:30 の足は引けの板寄せです
open / high / low / closefloat台湾ドル価格
volumeintロット(張)。株数ではない出来高。TAIEX の足はどの時間足でも常に volume: 0 です。指数には出来高がないため提供しません。売買代金として読まないでください

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id (must be a listed TWSE/TPEx security)"}上場していない
400{"error": "Invalid schema. Allowed: [...]"}時間足が不正
400{"error": "Invalid adjust (use 0 or 1)"}adjust が不正
400{"error": "Invalid date format. Use YYYY-MM-DD"}日付の形式が不正
400{"error": "date_range_too_large", "message": "...", "max_days": <n>}範囲が上限を超過
503{"error": "market data temporarily unavailable"}ストアの読み取りに失敗
503{"error": "adjust factors temporarily unavailable"}adjust=1 だが係数を取得できない場合。未調整のデータを黙って返すことはありません

備考

  • カバー範囲はリクエストに応じて広がります。上場銘柄ならどれでも照会でき、初回の照会で直近約 30 日分を取り込み、その銘柄をリアルタイム追跡の対象に登録します。その後、過去の履歴(2019-01 以降)をバックフィルします。数年分の履歴をリクエストする前に minute/ohlcv/symbols を確認してください。
  • データのない範囲は 200 と [] を返します。
  • 形成中の足は返しません。現在の価格は /quote/<stock_id> を使ってください。
  • 長い期間は、時間足ごとの上限に収まるよう分割してください。

分足の対応銘柄

GET/studio/market/twstock/minute/ohlcv/symbols
データ開始
スナップショット
更新頻度
リアルタイム

パラメータ

なし。

例

Python
covered = requests.get(f"{BASE_URL}/studio/market/twstock/minute/ohlcv/symbols", headers=headers, timeout=30).json()["data"]

レスポンス

{"data": ["2330", "TAIEX", ...]}:分足データをすでに保持している銘柄コード(現在上場中の銘柄と TAIEX)。ソート済み。

エラー

共通エラーのみ。

台湾株 1 分足(レガシー)

GET/studio/market/twstock/kbar/<stock_id>
データ開始
2019-01-01
更新頻度
範囲に今日が含まれる場合はサーバーキャッシュ 60 秒、それ以外は 5 分

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コード現在上場中の TWSE/TPEx の銘柄コード、または TAIEX
start
string · query
開始日YYYY-MM-DD今日 − 6 日
end
string · query
終了日。end − start ≤ 31 日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/kbar/2330", headers=headers,                    params={"start": "2026-08-03", "end": "2026-08-07"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、昇順。

フィールド型説明
datestringYYYY-MM-DD(台北時間)
minutestringHH:MM:SS 台北時間、足の開始時刻(09:00–13:30)
stock_idstringコード
open / high / low / closefloat台湾ドル
volumeintロット(張)

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id (must be a listed TWSE/TPEx security)"}上場していない
400{"error": "Date range exceeds 31 days"}範囲が長すぎる、または日付の形式が不正

備考

  • レガシーのエンドポイントです。minute/ohlcv/<stock_id>/1m の利用を推奨します。分足データのない上場銘柄は [] を返します(このエンドポイントは取り込みを開始しません)。
  • 当日の足は日中の暫定データで、台北時間 16:10 頃以降に公式の足へ置き換わります。
  • データがあるのは minute/ohlcv/symbols に含まれる銘柄だけです。

台湾株 時価総額

GET/studio/market/twstock/market_value/<stock_id>
データ開始
2004-01-01
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/market_value/2330", headers=headers,                    params={"start": "2026-01-01"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [{"date", "stock_id", "market_value"}]}。market_value の単位は台湾ドルです。

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • サーバーキャッシュ:5 分。

台湾株 時価総額ランキング

GET/studio/market/twstock/market_value/all
データ開始
スナップショット(直近の公表日)
更新頻度
毎日(終値ベース)

パラメータ

名称説明許容値デフォルト
top
int · query
時価総額の上位 N 件だけを返す1–3000全件(約 2,400)

例

レスポンス

{"date": "YYYY-MM-DD", "twse_ex_etf_market_value": int, "data": [...]}。時価総額の降順。

フィールド型説明
datestring実際に使われた基準日(直近の公表日。今日より一日遅れることがあります)
twse_ex_etf_market_valueint台湾ドル。同じ基準日における、market == "TWSE" かつ ETF でない行の合計。市場全体の分母であり、top を指定しても減りません
data[].rankint1 始まりの順位
data[].stock_idstringコード
data[].namestring名称
data[].marketstring"TWSE"(上市)または "TPEx"(上櫃)。TWSE/TPEx の上場銘柄名簿に基づきます
data[].market_valueint台湾ドル
data[].is_etfboolランキング内の ETF は true(2026-09-17 時点で 2,370 行中 359 行)。false は「ETF の集合に含まれない」という意味で、「ETF でないと確認済み」という意味ではありません。産業分類のない証券(例:REIT の 01010T)は false になり、twse_ex_etf_market_value にも含まれたままです

エラー

ステータスレスポンスボディ条件
400{"error": "top must be an integer between 1 and 3000"}top が不正
404{"error": "No recent market value data available"}(または上場銘柄リストが不完全である旨のメッセージ)直近のデータなし
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • ユニバースは上市+上櫃+ETF です(興櫃は除く。ETN はデータなし)。「時価総額の上位 N 銘柄」のような問いには、/market_value/<stock_id> をループさせず、このエンドポイントを使ってください。
  • rank と twse_ex_etf_market_value はユニバースが異なります。rank は市場全体(上市+上櫃、ETF を含む)の順位で、分母を追加した後も変わっていません。分母は上市のみで、ETF(industry_category が {ETF, 上櫃ETF, 上櫃指數股票型基金(ETF)} のいずれか)を除きます。REIT と優先株は除かれません。したがって market_value / twse_ex_etf_market_value が指数ウェイトになるのは、market が "TWSE" で ETF でない行だけです。TPEx または ETF の行をこの分母で割ってもウェイトにはなりません。一方、rank は市場全体の順位のままです。この二つを同じランキングとして読まないでください。
  • market は上場市場のタグであり、ETF フラグではありません。ETF フラグは is_etf です。ETF を除いたユニバースを作るときはこれを使います。stock_id の先頭から ETF を推測しないでください(00 は市場の慣例であって仕様ではなく、REIT の 01xxxT も拾えません)。分類を別の場所から取得し直すこともしないでください。is_etf は twse_ex_etf_market_value の計算に使う基準そのものなので、is_etf による絞り込みと分母が食い違うことはありません。
  • サーバーキャッシュ:30 分。

台湾株 PER/PBR/配当利回り

GET/studio/market/twstock/per/<stock_id>
データ開始
2005-10-01
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/per/2330", headers=headers,                    params={"start": "2026-01-01", "end": "2026-07-22"}, timeout=60).json()["data"]# [{"date": "2026-07-21", "stock_id": "2330", "dividend_yield": 0.95, "PER": 34.87, "PBR": 11.05}, ...]

レスポンス

{"stock_id", "data": [...]}.

フィールド型説明
datestring取引日
stock_idstringコード
dividend_yieldfloat配当利回り(%)
PERfloat株価収益率
PBRfloat株価純資産倍率

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • 多数の銘柄をバリュー指標でスクリーニングする場合は batch/per を使ってください。
  • 当日の行は TWSE/TPEx の公式公表データから取得し、同日午後に追加されます。
  • サーバーキャッシュ:5 分。

台湾株 損益計算書

GET/studio/market/twstock/financials/<stock_id>
データ開始
既定では 2013-01-01。それ以前は指定すれば取得可能
更新頻度
四半期ごと

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD2013-01-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
import pandas as pddata = requests.get(f"{BASE_URL}/studio/market/twstock/financials/2330", headers=headers,                    params={"start": "2022-01-01", "end": "2024-12-31"}, timeout=30).json()["data"]# [{"date": "2022-03-31", "stock_id": "2330", "type": "Revenue", "value": 491075000000.0, "origin_name": "營業收入"}, ...]wide = pd.DataFrame(data).pivot_table(index="date", columns="type", values="value", aggfunc="first")

レスポンス

{"stock_id", "data": [...]}、ロング形式(四半期ごと・項目ごとに一行)。

フィールド型説明
datestring四半期末(03-31/06-30/09-30/12-31)
stock_idstringコード
typestring項目コード。例:Revenue、GrossProfit、OperatingIncome、NetIncome、EPS、TAX、OtherComprehensiveIncome
valuefloat値(台湾ドル。EPS は一株あたり台湾ドル)
origin_namestring中国語の項目名。見慣れない type コードの判別に使います

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • start の既定値は 2013-01-01 です。それより前の start を送ると、より古い行が返ります(2330 は 2000-06-30 まで遡れます)。
  • サーバーキャッシュ:24 時間。

台湾株 貸借対照表

GET/studio/market/twstock/balance_sheet/<stock_id>
データ開始
既定では 2013-01-01。それ以前は指定すれば取得可能
更新頻度
四半期ごと

パラメータ

/financials/<stock_id> と同じ。

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/balance_sheet/2330", headers=headers,                    params={"start": "2022-01-01"}, timeout=30).json()["data"]

レスポンス

/financials/<stock_id> と同じロング形式です。主な type コード:CashAndCashEquivalents、TotalAssets、TotalLiabilities、TotalEquity。末尾が _per のコードは総資産に対する % です。

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • start の既定値は 2013-01-01 です。それより前の start を送ると、より古い行が返ります(2330 は 2012-12-31 まで遡れます)。
  • サーバーキャッシュ:24 時間。

台湾株 キャッシュフロー計算書

GET/studio/market/twstock/cashflow/<stock_id>
データ開始
既定では 2013-01-01。それ以前は指定すれば取得可能
更新頻度
四半期ごと

パラメータ

/financials/<stock_id> と同じ。

例

Python
import pandas as pddata = requests.get(f"{BASE_URL}/studio/market/twstock/cashflow/2330", headers=headers,                    params={"start": "2022-01-01"}, timeout=30).json()["data"]cfo = (pd.DataFrame(data).query("type == 'CashFlowsFromOperatingActivities'")         .assign(date=lambda d: pd.to_datetime(d["date"])).set_index("date")["value"].sort_index())cfo_q = cfo - cfo.groupby(cfo.index.year).shift(1).fillna(0)   # YTD → single quarter

レスポンス

/financials/<stock_id> と同じロング形式です。主な type コードは次のとおりです(アップストリームのデータセット独自のコードです。全体の集合は会社や年度によって異なるため、レスポンスを正とし、下記にないものは origin_name で判別してください)。絞り込みには origin_name ではなく type を使ってください。同じコードでも、年度によって項目名の括弧が全角と半角で入れ替わります:

typeorigin_name
CashFlowsFromOperatingActivities營業活動之淨現金流入(流出)
CashProvidedByInvestingActivities投資活動之淨現金流入(流出)
CashFlowsProvidedFromFinancingActivities籌資活動之淨現金流入(流出)
PropertyAndPlantAndEquipment取得不動產、廠房及設備(設備投資、負の値)
Depreciation / AmortizationExpense折舊費用/攤銷費用
CashBalancesIncrease本期現金及約當現金增加(減少)數
CashBalancesBeginningOfPeriod / CashBalancesEndOfPeriod期初(年初)/期末現金及約當現金餘額

フロー項目は、台湾での申告どおり年初来(YTD)累計です。03-31 の行は Q1 のみ、06-30 は Q1–Q2、09-30 は Q1–Q3、12-31 は通期です。単一四半期の値は、同じ年の前の四半期を差し引いて求めます(Q1 は差し引き不要)。そのため start は 1 月から取得してください。CashBalancesEndOfPeriod は四半期末の残高、CashBalancesBeginningOfPeriod は年初の残高です。このエンドポイントに period パラメータはなく、常に YTD を返します(単一四半期を表示する ?period=quarter はウェブのチャート用ルートにしかなく、ここにはありません)。

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • start の既定値は 2013-01-01 です。それより前の start を送ると、より古い行が返ります(2330 は 2012-03-31 まで遡れます)。
  • サーバーキャッシュ:24 時間。

台湾株 月次売上高

GET/studio/market/twstock/monthly_revenue/<stock_id>
データ開始
2000-01-01
更新頻度
毎月

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD2000-01-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
import pandas as pddata = requests.get(f"{BASE_URL}/studio/market/twstock/monthly_revenue/2330", headers=headers,                    params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=30).json()["data"]df = pd.DataFrame(data).sort_values(["revenue_year", "revenue_month"])df["yoy_pct"] = df["revenue"].pct_change(periods=12) * 100# [{"date": "2024-01-01", "stock_id": "2330", "country": "Taiwan", "create_time": "",#   "revenue": 176299866000, "revenue_year": 2023, "revenue_month": 12},#  {"date": "2024-02-01", "stock_id": "2330", "country": "Taiwan", "create_time": "",#   "revenue": 215785127000, "revenue_year": 2024, "revenue_month": 1}, ...]

レスポンス

{"stock_id", "data": [...]}、月ごとに一行。

フィールド型説明
datestring売上月の翌月の初日です。2024-01-01 の行は revenue_year: 2023、revenue_month: 12 です。これを売上の対象期間として使わないでください
stock_idstringコード
countrystring市場。観測される値は Taiwan
create_timestringすべての行で空("")
revenueint月次売上高。単位は台湾ドル(元)で、千元ではありません。これは桁数からの推定で、アップストリームには明記されていません。2330 の revenue_year 2024, revenue_month 1 は 215785127000 を返しており、元として読んだ場合(NT$215.8bn)にだけ妥当な数値になります
revenue_monthint売上月(1–12)。対象期間には date ではなくこちらを使います
revenue_yearint売上年

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • サーバーキャッシュ:24 時間。

台湾株 財務比率

GET/studio/market/twstock/ratios/<stock_id>
データ開始
2013-03-31 (2013 Q1)
更新頻度
四半期ごと

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始の四半期末日YYYY-MM-DD2013-01-01
end
string · query
終了の四半期末日YYYY-MM-DD今日

例

Python
import pandas as pddata = requests.get(f"{BASE_URL}/studio/market/twstock/ratios/2330", headers=headers,                    params={"start": "2024-01-01"}, timeout=30).json()["data"]# [..., {"date": "2026-06-30", "stock_id": "2330",#   "gross_margin_q": 67.7207, "gross_margin_ttm": 64.2302, "operating_margin_q": 60.3443, "operating_margin_ttm": 56.1009,#   "net_margin_q": 55.6354, "net_margin_ttm": 50.3717, "roe_q": 11.3934, "roe_ttm": 40.3342, "roa_q": 7.8372, "roa_ttm": 27.3074,#   "eps_q": 27.25, "eps_ttm": 86.28, "eps_yoy_q": 77.4089, "eps_yoy_ttm": 53.2232,#   "revenue_yoy_q": 36.0453, "revenue_yoy_ttm": 30.5567, "revenue_qoq_q": 12.0163, "revenue_qoq_ttm": 8.2017,#   "debt_ratio": 30.9438, "current_ratio": 245.7635, "quick_ratio": 225.0114, "equity_multiplier": 1.4481,#   "interest_coverage_q": 280.5515, "interest_coverage_ttm": 227.0232,#   "inventory_turnover_q": 1.1767, "inventory_turnover_ttm": 4.6058, "cfo_to_net_income_q": 1.1084, "cfo_to_net_income_ttm": 1.1779,#   "fcf_q": 287363030000.0, "fcf_ttm": 1143556366000.0, "fcf_per_share_q": 11.0827, "fcf_per_share_ttm": 44.1036, ...}]df = pd.DataFrame(data).assign(date=lambda d: pd.to_datetime(d["date"])).set_index("date")

レスポンス

{"stock_id", "data": [...]}、ワイド形式:四半期ごとに一行、古い順、比率ごとに一列。各比率は小数第 4 位に丸めた float、または null です。

フィールド型説明
datestring四半期末(03-31/06-30/09-30/12-31)。決算が公開された日ではありません
stock_idstringコード
<ratio>_qfloat | null単一四半期
<ratio>_ttmfloat | null直近四四半期(単一四半期の値を四つ合計)。四つのうち一つでも欠けていれば null
debt_ratio, current_ratio, quick_ratio, equity_multiplierfloat | null期末時点の貸借対照表の比率。サフィックスなし

<ratio>(それぞれ _q と _ttm の両方があります):

グループ比率単位
収益性gross_margin, operating_margin, pretax_margin, net_margin, opex_ratio, roe, roa%(×100 済み)
一株あたりeps, revenue_per_share, fcf_per_share一株あたり台湾ドル
成長性revenue_yoy, revenue_qoq, operating_income_yoy, net_income_yoy, eps_yoy%(×100 済み)
財務構造interest_coverage倍
効率性receivable_turnover, inventory_turnover, asset_turnover, cfo_to_net_income倍
キャッシュフローfcf台湾ドル、実額(千単位ではない)

サフィックスなしの列:debt_ratio、current_ratio、quick_ratio は %(×100 済み。流動比率 2.46 倍は 245.7635 で返ります)、equity_multiplier は倍です。

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}コードが形式チェックに失敗
404{"error": "No data found for stock_id: <id>"}そのコードに財務諸表がない(0050/00878 などの ETF)、または start–end の範囲内に行がない
503{"error": "Data temporarily unavailable. Please retry shortly."}比率ストアが未準備。後で再試行してください。「データなし」と読まないでください

備考

  • 単一四半期の ROE/ROA は年率換算していません。一株あたりの数値には、純利益 ÷ EPS から求めた株式数を使います。銀行・証券会社・保険会社では、いくつかの比率が常に null です(売上総利益率、流動比率などがありません)。
  • 行の日付は四半期末ですが、その四半期の決算が公開されるのは数週間後です。バックテストでは各行を利用可能日(法定の申告期限。財務諸表と同じ)までずらしてください。date でそのまま結合すると先読みバイアスになります。
  • 項目の欠落や分母がゼロの場合は null を返し、0 にはなりません。
  • 含まれないもの:PER/PBR/配当利回り(日次。per/<stock_id> を使用)と、月次売上高に関する比率(前年比/前月比は monthly_revenue/<stock_id> から計算してください)。
  • 多数の銘柄 → GET /studio/market/twstock/batch/ratios?stock_ids=...(リクエストごとに ≤ 50 銘柄)。
  • 2013-03-31 が下限です。それより前の start を送っても、より古いデータは返りません。
  • 財務諸表を更新するのと同じジョブで、一日二回(13:30 と 23:00 UTC)再計算します。
  • サーバーキャッシュ:6 時間。

台湾株 配当イベント

GET/studio/market/twstock/dividend/<stock_id>
データ開始
銘柄ごと(2330:2005-06-19)
更新頻度
データが古い場合はリクエスト時に更新

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コード現在上場中の銘柄コード(4–6 桁の数字、末尾に英字が付く場合あり)
start
string · query
最初の効力発生日厳密な YYYY-MM-DD全履歴
end
string · query
最後の効力発生日厳密な YYYY-MM-DD全履歴

範囲の絞り込みには三段階の効力発生日を使います。cash_ex_date があればそれ、なければ stock_ex_date、それもなければ record_date です。そのため、発表直後で権利落ち日が未定のイベントも返ります。

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/dividend/2330", headers=headers,                    params={"start": "2025-01-01", "end": "2025-12-31"}, timeout=30).json()["data"]# [{"record_date": "2025-03-24", "period": "113年第3季", "announce_date": "2025-03-03",#   "cash_ex_date": "2025-03-18", "stock_ex_date": "", "pay_date": "2025-04-10",#   "cash": 4.50002042, "stock": 0.0, "stock_ratio": 0.0}, ...]

レスポンス

{"stock_id", "data": [...]}、公告の一行につき一行。

フィールド型説明
record_datestring権利確定の基準日(權利分派基準日)YYYY-MM-DD
periodstring配当の対象期間(股利所屬期間)。内容に規則のないラベルです(114年第3季、113、不適用…)。文字列として比較し、年に変換しないでください
announce_datestring公告日。不明な場合は ""
cash_ex_datestring配当落ち日(除息交易日)。なし/未定の場合は ""
stock_ex_datestring権利落ち日(除權交易日)。ない場合は ""
pay_datestring現金配当の支払日(現金股利發放日)。不明な場合は ""
cashfloat一株あたり現金配当(台湾ドル、盈餘+公積)
stockfloat一株あたり株式配当(元面額、盈餘+公積)
stock_ratiofloatstock / 10。株式分割と同じ形の調整比率

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}形式チェックに失敗
400{"error": "Invalid start date, expected YYYY-MM-DD"}(または end)日付の形式が不正
404{"error": "No data found for stock_id: <id>"} / {"error": "No dividend records for stock_id: <id>"}上場していない、または配当履歴がまったくない
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • 値がゼロの行(cash == 0 かつ stock == 0)も残します。無配の決定が公告されたことを表します。
  • 効力発生日は将来の日付になることがあります(公告済みで権利落ち前)。2330 の全履歴を取得したとき、最後の行はリクエスト日の一週間先でした。過去のイベントだけが必要な場合は、日付で絞り込んでください。
  • 有効な銘柄で配当履歴はあるが、範囲内にイベントがない場合は 200 + [] を返します(404 とは異なります)。
  • 上場廃止の銘柄は 404 です。

台湾株 ニュース

GET/studio/market/twstock/news/<stock_id>
データ開始
2020 年半ば頃(2021-02 頃までは件数が少ない)
更新頻度
リクエスト時に取得

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD今日 − 6 日
end
string · query
終了日。end − start ≤ 31 日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/news/2330", headers=headers,                    params={"start": "2026-08-01", "end": "2026-08-07"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、一日に複数の記事(週末を含む)。

フィールド型説明
datestring公開日時
stock_idstringコード
titlestring見出し
sourcestring配信元
linkstringURL

エラー

ステータスレスポンスボディ条件
400{"error": "Date range exceeds 31 days"}、または日付の解析エラーのメッセージ範囲が長すぎる/日付の形式が不正
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • カバー範囲は 2020 年半ば頃から始まります(最も古い行は 2020-08 で、正確な開始時点は公開されていません)。2021-02 頃までは一日に数件、または記事なしと少なく、それより前の日付は [] を返すことがあります。
  • 各日の記事は、その日に対する最初のリクエスト時に取得します。
  • サーバーキャッシュ:5 分。

台湾株 三大機関投資家

GET/studio/market/twstock/institutional/<stock_id>
データ開始
銘柄ごと(2330:2012-05-02)
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/institutional/2330", headers=headers,                    params={"start": "2024-01-01", "end": "2024-12-31"}, timeout=60).json()["data"]# [{"date": "2024-01-02", "stock_id": "2330", "foreign_buy": 28464159, "foreign_sell": 47404324,#   "trust_buy": 5553520, "trust_sell": 269712, "dealer_self_buy": 452000, "dealer_self_sell": 366190,#   "dealer_hedge_buy": 942546, "dealer_hedge_sell": 780090,#   "foreign_dealer_self_buy": 0, "foreign_dealer_self_sell": 0}, ...]

レスポンス

{"stock_id", "data": [...]}、ワイド形式、一日につき一行。値の単位はすべて株(股)です。

フィールド説明
date, stock_id日付、銘柄コード
foreign_buy / foreign_sell外国人投資家(外資。外国人自己売買部門を除く)
trust_buy / trust_sell投資信託(投信)
dealer_self_buy / dealer_self_sell自己売買部門の自己売買(自營商自行買賣)
dealer_hedge_buy / dealer_hedge_sell自己売買部門のヘッジ(自營商避險)
foreign_dealer_self_buy / foreign_dealer_self_sell外国人自己売買部門(外資自營商。ほぼ 0)

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • 買い越し = *_buy − *_sell。
  • 銘柄単位のデータで、区分の集約はしていません。これらは区分ごとの元の列で、どうまとめるかは利用者が決めます。Blave の銘柄別の画面(ウェブ、アプリ、AI チャット)では、取引所の列名に合わせて外資自營商を外資に含め、自營商を自行買賣と避險の合計として扱います。市場全体のエンドポイント(GET /studio/market/twmarket/institutional)はまとめ方が異なります。該当のセクションを参照してください。
  • 当日の行は TWSE/TPEx の公式公表データから取得し、取引所の公表後に追加されます。
  • サーバーキャッシュ:5 分。

台湾株 信用取引

GET/studio/market/twstock/margin/<stock_id>
データ開始
銘柄ごと(2330:2001-01-05)
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
import pandas as pddata = requests.get(f"{BASE_URL}/studio/market/twstock/margin/2330", headers=headers,                    params={"start": "2024-01-01"}, timeout=60).json()["data"]df = pd.DataFrame(data)df["margin_util"] = df["margin_balance"] / df["margin_limit"]   # 融資使用率

レスポンス

{"stock_id", "data": [...]}、一日につき一行。値の単位は株ではなくロット(張)です。TWSE MI_MARGN と照合して確認済み:2026-09-15 の 2330 は margin_balance: 29282 と margin_limit: 6483092 を返し、同日の TWSE 公表値である今日餘額 29,282、次一營業日限額 6,483,092 と完全に一致しました。各行はそれぞれ date と stock_id を持ちます。全履歴を読む場合(start/end なし)は、すべての数値を同じ行から取ってください。margin_limit は毎日公表し直され、時期によって変わります。

フィールド説明
margin_buy / margin_sell信用買い(融資)の買付/売却(融資買進/賣出)
margin_cash_repay信用買い(融資)の現金返済(融資現金償還)
margin_balance / margin_prev_balance信用買い(融資)の当日/前日残高(融資今日/前日餘額)
margin_limit信用買いの限度額(融資限額)。その行の日付に TWSE が公表した次一營業日限額、つまり翌営業日に適用される上限です(2330 の 2026-09-15:6,483,092 ロット)
short_buy / short_sell信用売り(融券)の買付/売却(融券買進/賣出)
short_cash_repay信用売り(融券)の現金返済(融券現金償還)
short_balance / short_prev_balance信用売り(融券)の当日/前日残高(融券今日/前日餘額)
short_limit信用売りの限度額(融券限額)
offset_loan_short信用買いと信用売りの相殺(資券相抵)

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • サーバーキャッシュ:5 分。

台湾株 株主分散

GET/studio/market/twstock/shareholding/<stock_id>
データ開始
銘柄ごと(2330:2010-01-29)
更新頻度
毎週、金曜日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/shareholding/2330", headers=headers,                    params={"start": "2024-01-01", "end": "2024-03-31"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、日付 × 区分ごとに一行。

フィールド型説明
datestring週の日付
stock_idstringコード
levelstring保有区分:1-999、1,000-5,000、5,001-10,000、10,001-15,000、15,001-20,000、20,001-30,000、30,001-40,000、40,001-50,000、50,001-100,000、100,001-200,000、200,001-400,000、400,001-600,000、600,001-800,000、800,001-1,000,000、more than 1,000,001、total、差異數調整(說明4)
peopleint株主数
unitint保有株数
percentfloat発行済株式に対する %

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • 数値は TDCC(集保結算所)が公表する株主分散表です。
  • サーバーキャッシュ:5 分。

台湾株 外国人持株

GET/studio/market/twstock/foreign_shareholding/<stock_id>
データ開始
既定では 2013-01-01。それ以前は指定すれば取得可能
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD2013-01-01
end
string · query
終了日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/foreign_shareholding/2330", headers=headers,                    params={"start": "2026-01-01"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、一日につき一行。

フィールド説明
date, stock_id日付、銘柄コード
ForeignInvestmentShares外国人投資家の保有株数
ForeignInvestmentSharesRatio外国人持株比率(%)
ForeignInvestmentRemainingShares外国人が追加で取得できる残り株数
ForeignInvestmentRemainRatio残り比率(%)
ForeignInvestmentUpperLimitRatio外国人持株の上限(%)
ChineseInvestmentUpperLimitRatio中国大陸の投資家の持株上限(%)
NumberOfSharesIssued発行済株式数

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • start の既定値は 2013-01-01 です。それより前の start を送ると、より古い行が返ります(2330 は 2004-02-12 まで遡れます)。
  • サーバーキャッシュ:24 時間。

台湾株 政府系銀行の売買

GET/studio/market/twstock/gov_bank/<stock_id>
データ開始
2021-06-30
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD今日 − 6 日
end
string · query
終了日。end − start ≤ 31 日YYYY-MM-DD今日

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/gov_bank/2330", headers=headers,                    params={"start": "2026-08-01", "end": "2026-08-07"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、一日あたり最大 8 行(銀行ごとに一行)、日付・銀行の順でソート。

フィールド説明
date, stock_id日付、銘柄コード
bank_name銀行
buy / sell買付/売却の株数
buy_amount / sell_amount買付/売却の金額(台湾ドル)

エラー

ステータスレスポンスボディ条件
400{"error": "Date range exceeds 31 days"}、または日付の解析エラーのメッセージ範囲が長すぎる/日付の形式が不正
503{"error": "Upstream rate limit. Please retry shortly."}アップストリームのクォータ超過

備考

  • サーバーキャッシュ:5 分。

台湾株 貸株

GET/studio/market/twstock/lending/<stock_id>
データ開始
2001-05-01
更新頻度
毎日

パラメータ

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
start
string · query
開始日YYYY-MM-DD全履歴
end
string · query
終了日YYYY-MM-DD最新

例

Python
data = requests.get(f"{BASE_URL}/studio/market/twstock/lending/2330", headers=headers,                    params={"start": "2026-08-01"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、一日に複数行。

フィールド説明
date, stock_id日付、銘柄コード
transaction_type競價 / 議借
volume数量
fee_rate貸株料率
close終値
original_return_date当初の返還日
original_lending_period当初の貸出期間

エラー

400 stock_id が不正、404 データなし、503 アップストリームのクォータ超過。

備考

  • サーバーキャッシュ:5 分。

証券会社別売買(銘柄別)

GET/studio/market/twstock/broker/stock/<stock_id>
データ開始
2021-06-30
更新頻度
毎日、台北時間 21:30 頃以降

パラメータ

単日は date を、範囲は start(+ end)を送ります。両方を送った場合は start が優先されます。

名称説明許容値デフォルト
stock_id
string · path必須
コードこのカテゴリの共通ルールを参照
date
string · query
単日YYYY-MM-DD今日
start
string · query
範囲の開始日YYYY-MM-DD
end
string · query
範囲の終了日。範囲は両端を含めて ≤ 366 日YYYY-MM-DDstart

例

Python
rows = requests.get(f"{BASE_URL}/studio/market/twstock/broker/stock/2330", headers=headers,                    params={"start": "2026-08-03", "end": "2026-08-07"}, timeout=60).json()["data"]

レスポンス

{"stock_id", "data": [...]}、支店ごと・日ごとに一行。

フィールド型説明
datestring取引日
stock_idstringコード
broker_idstring支店コード(920A のように英数字の場合があります)
broker_namestring支店名
pricefloat出来高加重平均の約定価格
buy / sellint買付/売却の株数

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid stock_id"}形式チェックに失敗
400{"error": "Invalid date (YYYY-MM-DD)"}日付の形式が不正
400{"error": "start/end range is <n> days; max 366 (inclusive) — split into smaller ranges"}範囲が長すぎる
503{"error": "Upstream rate limit. Please retry shortly."}データを一時的に取得できません。再試行してください。「約定なし」と読まないでください

備考

  • データのない日(休場日、2021-06-28 より前、当日の 21:30 頃より前)は 200 + [] です。
  • 範囲指定は実際に機能します。start/end を 2026-09-06 → 2026-09-13 にすると、broker/stock/<stock_id> と broker/trader/<trader_id> のどちらも、五つの取引日にまたがる行を返しました。
  • サーバーキャッシュ:5 分。

証券会社別売買(支店別)

GET/studio/market/twstock/broker/trader/<trader_id>
データ開始
2021-06-30
更新頻度
毎日、台北時間 21:30 頃以降

パラメータ

date/start/end のルールは /broker/stock/<stock_id> と同じです。

名称説明許容値デフォルト
trader_id
string · path必須
/broker/search で得た支店コード英数字と -(例:9217、920A)
date
string · query
単日YYYY-MM-DD今日
start
string · query
範囲の開始日YYYY-MM-DD
end
string · query
範囲の終了日。範囲は両端を含めて ≤ 366 日YYYY-MM-DDstart

例

Python
rows = requests.get(f"{BASE_URL}/studio/market/twstock/broker/trader/9217", headers=headers,                    params={"date": "2026-08-07"}, timeout=60).json()["data"]

レスポンス

{"trader_id", "data": [...]}、銘柄ごと・日ごとに一行。フィールドは date、broker_id、broker_name、stock_id、price、buy、sell(/broker/stock と同じ)。

エラー

/broker/stock/<stock_id> と同じです。加えて、コードが不正な場合は 400 {"error": "Invalid trader_id"} を返します。

備考

  • サーバーキャッシュ:5 分。

台湾株 注意銘柄・処置銘柄の公告

GET/studio/market/twstock/alerts
データ開始
TWSE は 2001-01、TPEx は注意が 2002-02、処置が 2003-09
更新頻度
毎日、台北時間 17:45、21:30、07:00

パラメータ

date を指定するか、start/end を指定するか、どちらも指定しません(= 台北時間の今日)。

名称説明許容値デフォルト
date
string · query
単日:その日に効力のある処置と、その日に公告された注意厳密な YYYY-MM-DD。start/end とは併用不可
start
string · query
範囲の初日厳密な YYYY-MM-DDstock_id がある場合は 2001-01-01、それ以外は end − 365 日
end
string · query
範囲の最終日(当日を含む)厳密な YYYY-MM-DD今日(start のほうが後ならその日)
kind
string · query
公告の種類disposal(處置)、notice(注意)両方
market
string · query
取引所twse, tpex両方
stock_id
string · query
単一のコード。指定すると 366 日の上限が外れますこのカテゴリの共通ルールを参照すべて

範囲の意味:処置はその期間(start–end)が範囲と重なる場合に、注意は公告の date が範囲内にある場合に返ります。stock_id を指定しない場合、範囲は両端を含めて最大 366 日です。市場全体でそれより長い範囲は分割してください(リクエストごとに一暦年なら収まります)。このカテゴリの既定と異なり、start/end/date は厳密に検証されます。

例

レスポンス

{"start", "end", "data": [...]}。start/end には実際に適用された範囲が入ります(date を送った場合はどちらも date と同じ)。行は date、market、kind、stock_id の順でソートされます。公告ごとに一行です。

フィールド型説明
datestring公告日 YYYY-MM-DD(処置は翌取引日から効力が生じます)
stock_idstringコード。ワラント、ETF、転換社債を含みます(例:037060、45402)
stock_namestring | null公表されたとおりの名称
marketstringtwse(上市)または tpex(上櫃)
kindstringdisposal または notice
countint取引所による累計回数(累計/累計次數)
start, endstring | null処置期間(両端の日を含む)。注意では null
conditionstring | null処置:公表されたとおりの発動条件(連續三次、連續3個營業日、最近十個營業日已有六次 …)。注意:適用された条項(第一款、第五款)。ない場合は null
measurestring | null処置の種類:第一次處置、第二次處置、再次處置、人工管制撮合、收足五成款券 …。注意と初期の TPEx の行では null
match_minutesint | null処置:本文から読み取った「約每N分鐘撮合一次」の N。本文に記載がない場合(2011 年頃より前の TWSE の処置はすべて本文が空白。板寄せ以外の措置も該当)と注意では null
reasonstring | null公告の全文。取引所が本文を公表していない場合(2011-03 より前の TWSE の処置すべて)は null(処置は處置內容、注意は注意交易資訊)
close, pefloat | null公告時点の終値と PER。TWSE の処置では常に null

エラー

ステータスレスポンスボディ条件
400{"error": "Invalid start date, expected YYYY-MM-DD"}(または end)start/end の形式が不正
400{"error": "start must not be after end"}範囲が逆転
400{"error": "Invalid date, expected YYYY-MM-DD"}date の形式が不正
400{"error": "use either date or start/end"}date を start または end と同時に送信
400{"error": "Invalid stock_id"}形式チェックに失敗
400{"error": "kind must be one of ['disposal', 'notice']"} / {"error": "market must be one of ['twse', 'tpex']"}不明な値
400{"error": "start/end range is <n> days; max 366 (inclusive) without stock_id — split into smaller ranges"}stock_id なしで範囲が 366 日を超過
503{"error": "Data temporarily unavailable. Please retry shortly."}リクエストしたテーブルを提供できません(48 時間更新されていない、または読み取れない)。後で再試行してください。「公告なし」と読まないでください。チェックするのは、リクエストされた kind/market のテーブルだけです

備考

  • 処置は引け後に公告され、翌取引日から効力が生じます。date は公告日、start は効力が生じる最初の日です。「D 日に処置中か」を調べるには、公告日ではなく date=D(または start=end=D)を使ってください。
  • 一つの銘柄で処置期間が重なることがあります(最初の処置期間中に第二次處置が公告される場合)。
  • start/end は公告された期間です。期間中に休場日や売買停止があると実際の終了日は延びますが、このデータには記録されません。
  • match_minutes は当時の規則に従います(TPEx は 5/20 分 → 2026-08-10 から 2 分)。行ごとに読み取り、固定値を前提にしないでください。
  • 処置前の候補リスト(處置候選)は含まれません。
  • 出典は「資料來源:臺灣證券交易所、證券櫃檯買賣中心」と表記してください。
  • TWSE の開始日は、処置と注意の両方に当てはまります。
  • TPEx の夕方の公告は、07:00 の実行で初めて反映されることがあります。

台湾株 バッチ取得

GET/studio/market/twstock/batch/<data_type>
データ開始
data_type ごと(単一銘柄のエンドポイントと同じ)
更新頻度
data_type ごと

パラメータ

名称説明許容値デフォルト
data_type
string · path必須
データセットprice, price_adj, per, institutional, shareholding, foreign_shareholding, financials, balance_sheet, monthly_revenue, ratios, dividend
stock_ids
string · query必須
銘柄コードカンマ区切り、≤ 50
start
string · query
開始日YYYY-MM-DD(厳密に検証されるのは dividend のみ)data_type による
end
string · query
終了日YYYY-MM-DDdata_type による

例

Python
payload = requests.get(f"{BASE_URL}/studio/market/twstock/batch/per", headers=headers,                       params={"stock_ids": "2330,6182", "start": "2026-08-04", "end": "2026-08-08"},                       timeout=120).json()# {"data_type": "per",#  "data": {"2330": [{"date": "2026-08-04", "dividend_yield": 0.95, "PER": 31.19, "PBR": 10.21, "stock_id": "2330"}, ...],#           "6182": [...]},#  "failed": []}

レスポンス

{"data_type", "data": {"<stock_id>": [...rows...]}, "failed": [...]}。行は対応する単一銘柄のエンドポイントと同一です。

  • failed:サーバー側での取得に失敗した銘柄コード(レート制限またはアップストリームのエラー)。これらは再試行してください。
  • data にも failed にも含まれない銘柄コードは、実際にデータがありません。

エラー

ステータスレスポンスボディ条件
400{"error": "Unsupported data_type '<x>'. Supported: [...]"}data_type が不正
400{"error": "stock_ids parameter required"}未指定
400{"error": "stock_ids exceeds max 50 per request"}上限超過
400{"error": "Invalid stock_id in list"}いずれかのコードが形式チェックに失敗
400{"error": "Invalid start date, expected YYYY-MM-DD"}dividend のみ

備考

  • 市場全体(約 2,000 銘柄)でも約 40 回の呼び出しで済みます。単一銘柄のエンドポイントを大量に並列で呼ばないでください。
  • ratios(財務比率):各銘柄コードの行は、/ratios/<stock_id> のワイド形式の四半期ごとの行です("data": {"2330": [{"date": "2026-06-30", "stock_id": "2330", "roe_q": 11.3934, ...}], "2317": [...]})。財務諸表のないコード(ETF)は data にも failed にも含まれません(404 は返しません)。比率ストアが未準備の場合は、すべての銘柄コードが failed に入ります(503 は返しません)。
  • dividend は /dividend/<stock_id> と異なります。保存済みのデータだけを読み(更新はしません)、不明な銘柄コードや配当履歴のない銘柄は何も通知されずに結果から外れ(404 は返しません)、アップストリームのクォータの問題は 503 ではなく failed に現れます。