Building an AI agent? Start with /llms.txt for the full site index.
Companies & Events
Stock split and par-value change events for listed securities — the old and new par value, split ratio and effective date, from the official TWSE / TPEx announcements.
GET /v2/datasets/stock-split-par-value-eventsstock-split-par-value-events returns one row per split or par-value change with the old and new par value, the resulting share ratio and the effective date, sourced from the official TWSE / TPEx announcements. Each row carries its source role and lineage, so the event is traceable to the exact upstream disclosure.
| Field | Type | Description |
|---|---|---|
symbol | string | Ticker. |
event_type | string | Normalized event type (e.g. split, par_value_change). |
old_par_value | number | Par value before the change (TWD per share). |
new_par_value | number | Par value after the change (TWD per share). |
effective_date | string | Date the change takes effect. |
source_role | string | Canonical source role (official_twse_par_value_event). |
| Rows | 3 |
| Window | 2026-01-09 – 2026-04-22 |
| Grade | Verified |
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": "stock_split_par_value_events", "request_context": { "scope": "stock_split_par_value_events_twse_only", "coverage_type": "twse_split_par_value_reference", "snapshot_mode": "current_snapshot_only", "filters": { "market": "TWSE", "security_code": null, "date_from": null, "date_to": null, "event_type": null, "source_family": null, "limit": 50 }, "min_event_date": "2026-01-09", "max_event_date": "2026-04-22" }, "quality": { "row_count": 3, "security_code_count": 2, "sensitive_fields_exposed": false }, "lineage": { "source_providers": [ "twse_official" ], "source_roles": [ "official_twse_etf_split_reverse_split_reference_price", "official_twse_par_value_change_announcement", "official_twse_par_value_change_reference_price" ], "source_families": [ "twse_change_of_par_value", "twse_etf_split_reverse_split_reference_price", "twse_reference_price_after_par_value_change" ] }, "error": null, "data": [ { "market": "TWSE", "security_code": "00674R", "security_type": "etf_certificate", "event_type": "split_reference_price", "event_date": "2026-04-22", "announcement_date": null, "suspend_trading_date": null, "resume_trading_date": "2026-04-22", "par_value_before": null, "par_value_after": null, "par_value_ratio": null, "closing_price_on_last_trading_day": 5.18, "reference_price": 25.9, "limit_up_price": 9999.95, "limit_down_price": 0.01, "opening_reference_price": 25.9, "source_provider": "twse_official", "source_role": "official_twse_etf_split_reverse_split_reference_price", "source_family": "twse_etf_split_reverse_split_reference_price", "source_event_ref": "TWSE:TWTCAU|00674R|2026-04-22", "lineage": { "source_url": "https://www.twse.com.tw/rwd/en/split/TWTCAU?response=json", "source_family": "twse_etf_split_reverse_split_reference_price", "official_fields": [ "Resume Trading Date", "Security Code", "Closing Price on The Last Trading Day" ], "source_row_type": "etf_split_reverse_split_reference_price" }, "data_gaps": [ "announcement_date_missing" ] }, { "market": "TWSE", "security_code": "7780", "security_type": "stock", "event_type": "split_reference_price", "event_date": "2026-01-19", "announcement_date": null, "suspend_trading_date": null, "resume_trading_date": "2026-01-19", "par_value_before": null, "par_value_after": null, "par_value_ratio": null, "closing_price_on_last_trading_day": 185, "reference_price": 18.5, "limit_up_price": 20.35, "limit_down_price": 16.65, "opening_reference_price": 18.5, "source_provider": "twse_official", "source_role": "official_twse_par_value_change_reference_price", "source_family": "twse_reference_price_after_par_value_change", "source_event_ref": "TWSE:TWTB8U|7780|2026-01-19", "lineage": { "source_url": "https://www.twse.com.tw/rwd/en/change/TWTB8U?response=json", "source_family": "twse_reference_price_after_par_value_change", "official_fields": [ "Resume Trading Date", "Security Code", "Closing Price on The Last Trading Day" ], "source_row_type": "reference_price" }, "data_gaps": [ "announcement_date_missing" ] } ], "data_count": 3, "known_gaps": [ "twse_only_scope", "no_tpex_coverage", "no_unified_security_lifecycle_claim" ], "warnings": [ "not_investment_advice", "twse_only_scope" ], "not_investment_advice": true, "envelope": { "dataset_id": "stock_split_par_value_events", "scope": "stock_split_par_value_events_twse_only", "row_count": 3 }}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/stock-split-par-value-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/stock-split-par-value-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/stock-split-par-value-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/stock-split-par-value-events. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.