Taiwan Odd-Lot Trading (TWSE + TPEx) — Both Sessions
Pricing
from $0.50 / 1,000 results
Taiwan Odd-Lot Trading (TWSE + TPEx) — Both Sessions
Both of Taiwan's odd-lot sessions on one row for every listed and OTC security: the intraday session carrying 98% of the flow and the after-hours auction, with shares, trade count, turnover, OHLC and closing quotes. Back to 2004, reconciled against the exchanges' own totals.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer
chris
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Taiwan Odd-Lot Trading (上市櫃零股交易) API
Get structured JSON access to both of Taiwan's odd-lot trading sessions for every listed and OTC security — share volume, trade count, turnover, open/high/low/close and the closing bid and offer, for the intraday session and the after-hours auction, on the same row.
About 2,400 securities per session across both boards. The intraday session (盤中零股) reaches back to 2020-10-26, the day it opened; the after-hours auction (盤後零股) reaches back to 2004-12-24 on TWSE.
Why this data matters
- The session most datasets silently miss. Taiwan has run two odd-lot sessions since October 2020 and publishes them as two unrelated reports. The older after-hours auction is the one that shows up in odd-lot feeds — and it is now a rounding error. On 2026-09-11 the TWSE intraday session traded NT$36,807,891,797 against the after-hours auction's NT$504,416,597: the intraday session was 98.65% of the board's odd-lot turnover, and 98.78% on the OTC board. A feed carrying only 盤後零股 is showing you 1.35% of the market and calling it odd-lot trading. This Actor fetches all four reports and puts both sessions on one row, with
intraday_share_of_value_pctalready computed. - Odd-lot is how Taiwanese retail actually buys. A board lot is 1,000 shares, which at 台積電's NT$2,420 is NT$2.42 million a trade. Retail buys the odd lots instead — 152,482 intraday odd-lot trades in 台積電 alone on 2026-09-11, against 2,830,341 shares. That makes odd-lot volume the cleanest available read on retail participation per stock, per day.
- An odd-lot close that is not the board-lot close. The two sessions price independently, so
intraday_last_price,after_hours_priceand the regular close are three different numbers. All three are published here as published, along with the intraday first price, high, low and aintraday_vwapcomputed from turnover — and the VWAP is verified to land inside the session's own high-low range on every row. - Turnover checked against the prices it came from, not against a tolerance. The after-hours auction fills at a single price, so turnover would be shares × price except that the exchange floors every matched order to whole dollars before adding them up. That leaves a shortfall of under one dollar per order and never a cent over:
0 ≤ shares × price − turnover < trades. That is a bound derived from how the figure is computed, not a fudge factor — and it held on every priced row of ten sessions sampled from 2008 to 2026, 6,663 rows, zero exceptions. The intraday session gets the two-sided form of the same bound against its own high and low. - Reconciled against the exchanges' own totals, every run. TWSE closes each odd-lot report with a 合計 line; five independent sums are compared against it per report. The OTC board publishes a separate statistics report (零股交易成交統計) repeating both sessions' volume, trade count and turnover per security — 2,012 security-sessions compared figure by figure on a single day, zero disagreements. Both exchanges also republish the after-hours report through open-data hosts with different column names and different decimal places; that is a third witness, and it is compared too. A run that cannot reconcile them publishes nothing.
- A holiday and an outage are told apart. The OTC board answers a public holiday, a date before its archive and next January alike with
stat: okand an empty table. Taking that at face value turns a total outage into a successful run reporting zero trading. This Actor reads the exchange's own trading calendar first, asks only for sessions that were actually held, and fails loudly if a session the calendar lists comes back empty.
Output
One record per security per trading day, both sessions on the row. A real record, as published:
{"record_type": "STOCK","date": "2026-09-11","market": "TWSE","code": "2330","name": "台積電","sessions_covered": ["INTRADAY", "AFTER_HOURS"],"intraday_shares": 2830341,"intraday_transactions": 152482,"intraday_value": 6838539090,"intraday_first_price": 2425,"intraday_last_price": 2420,"intraday_high": 2425,"intraday_low": 2405,"intraday_vwap": 2416.1537744038615,"intraday_price_change": null,"intraday_reference_price": null,"intraday_best_bid_price": 2420,"intraday_best_bid_volume": 733,"intraday_best_ask_price": 2425,"intraday_best_ask_volume": 26078,"after_hours_shares": 43016,"after_hours_transactions": 1620,"after_hours_value": 104313800,"after_hours_price": 2425,"after_hours_best_bid_price": 2420,"after_hours_best_bid_volume": 200937,"after_hours_best_ask_price": 2425,"after_hours_best_ask_volume": 18385,"total_shares": 2873357,"total_transactions": 154102,"total_value": 6942852890,"intraday_share_of_value_pct": 98.4975,"identity_ok": true}
And one MARKET_SUMMARY row per board per session, summed from the rows above it and checked against the exchange's own published totals:
{"record_type": "MARKET_SUMMARY","date": "2026-09-11","market": "TWSE","securities_listed": 1364,"securities_traded_intraday": 1312,"securities_traded_after_hours": 1050,"intraday_shares": 111506452,"intraday_transactions": 2076279,"intraday_value": 36807891797,"after_hours_shares": 2174052,"after_hours_transactions": 29192,"after_hours_value": 504416597,"total_value": 37312308394,"intraday_share_of_value_pct": 98.6481,"official_totals_match": true}
The two sessions
intraday_ fields | after_hours_ fields | |
|---|---|---|
| Chinese name | 盤中零股 | 盤後零股 |
| How it matches | call auction every three minutes, alongside the regular board | one call auction after the close |
| Prices published | first, last, high, low | one auction price |
| Opened | 2020-10-26 | long before the archive |
| Archive reaches | 2020-10-26 (both boards) | 2004-12-24 TWSE, 2011-01-03 TPEx |
| Share of odd-lot turnover (2026-09-11) | 98.65% TWSE, 98.78% TPEx | 1.35% / 1.22% |
The two reports cover slightly different universes — TWSE listed 1,253 securities in its after-hours report and 1,234 in its intraday report on 2025-01-03 — so the join is an outer one. A security in only one report still gets a row, with the other session's columns null rather than zero.
Input
{"startDate": "2026-09-01","endDate": "2026-09-11","markets": ["TWSE", "TPEX"],"sessions": ["INTRADAY", "AFTER_HOURS"],"stockCodes": ["2330", "6182"],"includeMarketSummary": true,"crossCheck": true,"maxSessions": 60}
Leave both dates empty for the most recent session. stockCodes takes exchange codes as strings — they are not always numeric: active ETFs use forms like 00400A, index ETFs 006201, preferred shares 1101A.
maxSessions defaults to 60 because a session is about 2,400 securities and a full year of both boards is over half a million rows. Set it to 0 to lift the cap.
Turn useApifyProxy on for a backfill longer than a few months: TWSE's firewall refuses by address and will cut a long run off partway through.
Things worth knowing about this data
- The unit is shares, not lots. Everything on the board-lot reports is in 1,000-share lots; odd-lot reports are in single shares.
intraday_shares: 2830341is 2,830,341 shares, not lots. - The OTC board's two odd-lot reports disagree about which calendar to use. The after-hours report accepts a ROC year (
115/09/11) or a Western one; the intraday report accepts only Western and answers參數輸入錯誤to a ROC year. Both are normalised here, and dates come out as ISOYYYY-MM-DDregardless of which of the three shapes the exchange used. intraday_price_changeis TPEx-only, and it is not measured from the previous odd-lot price. The OTC board prints a change column; TWSE does not. It is measured from the previous session's regular-board close — checked both ways, and 921 of 922 securities agreed with the regular close against 108 with the previous odd-lot close.intraday_reference_pricebacks that base out, which equals the previous regular close except on ex-dividend and ex-rights days, where it is the adjusted reference price.- TWSE's early after-hours rows carry volume only. Before 2005-12-19, 成交筆數 and 成交金額 are literally
--on every row. They come through as null, not zero, and the turnover check simply has nothing to check on those sessions. identity_ok: falserows are published, not dropped. A handful of rows failing a derived bound is the exchange's own arithmetic and is flagged; a systematic failure means a report changed shape, and that fails the whole run rather than publishing anything.- Column layouts are read by name, never by position. All four reports have carried the same columns since their first session — twenty-one years for the TWSE after-hours report — so a column name that stops existing means the layout changed, and the run stops rather than reading the wrong column.
Data source
TWSE 盤中零股交易行情單 (TWTC7U) and 盤後零股交易行情單 (TWT53U); TPEx 盤中零股每日收盤行情 (oddQuote), 盤後零股每日收盤行情 (odd) and 零股交易成交統計 (oddSummary); TWSE 每日市場成交資訊 (FMTQIK) as the trading calendar; and the TWSE and TPEx open-data editions of the after-hours report for independent verification. Public official data, no login required.
Taiwan Market Data Suite
This Actor is part of a suite of 31 Taiwan market data APIs by chamarix — official sources only, cross-validated against independent official endpoints, clean JSON out. Code samples for the whole suite: GitHub.
Market data:
- taiwan-stock-daily-quotes — Daily OHLCV, VWAP, P/E, price-to-book & dividend yield for every listed/OTC stock since 2004
- taiwan-index-history — Daily TAIEX & TPEx index history since 1990 with market turnover, the total-return index & all 273 TWSE indices
- twse-institutional-trades — Daily institutional buy/sell (foreign, investment trust, dealer) per stock — TWSE listed
- tpex-institutional-trades — Daily institutional buy/sell per stock — TPEx OTC market
- taiwan-monthly-revenue — Monthly revenue of 1,900+ listed & OTC companies, MoM/YoY
- taiwan-financial-statements — Quarterly income statement, balance sheet & cash flow back to 2013
- taiwan-director-compensation — Board pay for 1,950+ companies, parent vs consolidated scope, with EPS, ROE & profit on the same row
- taiwan-esg-disclosures — 21 ESG topics for 1,950+ companies — Scope 1/2/3 emissions, energy, water, waste, pay, board & climate risk
- taiwan-dividend-calendar — Ex-dividend / ex-rights dates, reference prices & payouts back to 2003
- taiwan-margin-trading — Daily margin trading & short sale balances per stock
- taiwan-sbl-short-sale-balance — Securities-lending short sale balances per stock
- taiwan-day-trading-stats — Day-trading volume, value & ratio per stock since 2014
- taiwan-odd-lot-trading — Both odd-lot sessions per stock — intraday & after-hours, shares, turnover, OHLC & quotes since 2004
- tdcc-shareholding-dispersion — Weekly TDCC shareholding dispersion (retail vs whale structure)
- taiwan-foreign-shareholding — Foreign ownership percentage & remaining quota per stock
- taiwan-futures-daily — Daily bars, settlement price & open interest for all 384 TAIFEX futures contracts since 1998, with the large-trader report
- taifex-institutional-derivatives — Institutional futures & options positions (TAIFEX), incl. put/call ratio
- taifex-options-chain — Full options chain by strike & expiry, both sessions, with the exchange's own Delta, since 2001
- taiwan-warrants-daily — Daily quotes, strike, expiry & moneyness for every listed/OTC warrant since 2004
- taiwan-government-bonds — Central government bond benchmark yields, the full yield curve & issuance master, with staleness stated
- taiwan-stock-alerts — Watch-list, disposition & short-sale suspension alerts
- taiwan-insider-share-transfers — Insider share-transfer filings (directors, officers, 10% holders) since 2002
- taiwan-director-shareholdings — Monthly director/officer shareholdings & share-pledge ratio since 1999
- taiwan-block-trades — Every block trade (鉅額交易) with price, size & basket constituents since 2005
- taiwan-shareholder-meetings — Shareholder meeting dates, book closure periods & e-voting since 2005
- taiwan-emerging-stock-quotes — Emerging (興櫃) board quotes, pre-IPO register & history since 2003
- taiwan-etf-regular-investment — Monthly regular savings plan (定期定額) rankings for stocks & ETFs since 2020
- taiwan-treasury-stock-buybacks — Every treasury-stock buyback (庫藏股) filing, plan vs execution, since 2000
Property market:
- taiwan-real-estate-transactions — Actual registered sale, presale & lease prices (實價登錄) for all 22 cities since 2012
Government & civic data:
- taiwan-legislator-monitor — Legislative Yuan bills, legislators & meetings
- taiwan-tender-monitor — Government e-procurement tenders (open calls, awards, failures)