Building an AI agent? Start with /llms.txt for the full site index.
Market & Prices
One row per (symbol, trade_date, direction) where a stock closed locked at its daily price limit. Carries prev_close, close, pct_change, the era limit band applied, whether it locked at close, consecutive-limit count, and volume at the limit. Derived from TWMD normalized prices + the price-limit rule history. Not a forecast, not a recommendation.
GET /v2/datasets/limit-eventsThis dataset is in build and not yet queryable via the API. The coverage and honest limitations below are the real database state; it moves off "Building" once serving lands (targeted 8/1).
| Field | Type | Description |
|---|---|---|
direction | enum | up / down |
prev_close | TWD | not split-adjusted (R-02 pending) |
close | TWD | |
pct_change | ratio | |
limit_pct_applied | ratio | era band |
approx_band_pp | pp | |
locked_at_close | bool | |
consecutive_count | int | |
volume_at_limit | shares |
333,951 rows, 1994-01-10..2026-07-17. method='approx' on ALL rows — the flag is the era band (±7% pre-2015-06-01 / ±10% after), NOT the exact per-day limit. prev_close is not yet split/ex-right-adjusted; exact per-day limit + split-aware prev_close awaits R-02, which will graduate method to a v1. Until then approx is the honest signal.
A real response from this endpoint. Rows are returned under "data", and provenance is carried in the shape shown below — it is not identical across datasets, so read this page's rather than assuming another's.
{ "dataset_id": "limit-events", "row_count": 3, "data": [ { "symbol": "1303", "market": "TWSE", "trade_date": "2026-07-01", "direction": "up", "prev_close": 166.5, "close": 183.0, "pct_change": 0.0990990990990991, "limit_pct_applied": 0.1, "locked_at_close": true, "method": "approx", "limit_confirmed": null }, { "symbol": "1435", "market": "TWSE", "trade_date": "2026-07-01", "direction": "up", "prev_close": 27.35, "close": 30.05, "pct_change": 0.0987202925045704, "limit_pct_applied": 0.1, "locked_at_close": true, "method": "approx", "limit_confirmed": null }, { "symbol": "1447", "market": "TWSE", "trade_date": "2026-07-01", "direction": "up", "prev_close": 7.52, "close": 8.27, "pct_change": 0.0997340425531915, "limit_pct_applied": 0.1, "locked_at_close": true, "method": "approx", "limit_confirmed": null } ]}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/limit-events?symbol=2330" \ -H "X-API-Key: sk_live_..."| Parameter | Required | Type | Description |
|---|---|---|---|
symbol | Yes | string | Ticker, e.g. 2330. |
start_date | No | string (YYYY-MM-DD) | Start of the query range. |
end_date | No | string (YYYY-MM-DD) | End of the query range. |
limit | No | integer | Maximum rows to return. |
A first call:
import requests resp = requests.get( "https://api.twmarketdata.com/v2/datasets/limit-events", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()print(resp.json()["data"])With a date-range filter:
import requests # The full verified example — the same call with every supported filter set.resp = requests.get( "https://api.twmarketdata.com/v2/datasets/limit-events", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["data"]: print(row)This endpoint is GET /v2/datasets/limit-events. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.