Building an AI agent? Start with /llms.txt for the full site index.
Companies & Events
Delisting lifecycle — the listing status and key lifecycle dates for each security, including suspension and delisting, from the official TWSE / TPEx records.
GET /v2/datasets/stock-delisting-lifecyclestock-delisting-lifecycle is a reference dataset: one lifecycle record per security tracking its listing status and the dates it changed (listed, suspended, delisted), sourced from the official TWSE / TPEx records. Use it to know whether a ticker was tradable at a past date; each row carries its source role and lineage back to the upstream disclosure.
| Field | Type | Description |
|---|---|---|
symbol | string | Ticker. |
status | string | Normalized lifecycle status (e.g. listed, suspended, delisted). |
listing_date | string | Date the security was first listed. |
delisting_date | string | Date the security was delisted (null if still listed). |
reason | string | Reason for the status change as disclosed. |
source_role | string | Canonical source role (official_twse_delisting_lifecycle). |
| Rows | 263 |
| Window | Reference data, no time series |
| Grade | Reference |
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_delisting_lifecycle", "request_context": { "scope": "stock_delisting_lifecycle_twse_only", "coverage_type": "twse_delisted_company_reference", "snapshot_mode": "current_snapshot_only", "filters": { "market": "TWSE", "code": null, "date_from": null, "date_to": null, "event_type": null, "source_family": null, "limit": 50 }, "min_event_date": "2018-10-01", "max_event_date": "2026-03-27" }, "quality": { "row_count": 50, "code_count": 50, "sensitive_fields_exposed": false }, "lineage": { "source_providers": [ "twse_official" ], "source_roles": [ "official_twse_delisted_company_table" ], "source_families": [ "twse_delisted_company_table" ] }, "error": null, "data": [ { "market": "TWSE", "code": "3454", "company_name": null, "event_type": "delisting", "announcement_date": null, "suspension_date": null, "delisting_date": "2026-03-27", "reason_summary": null, "source_provider": "twse_official", "source_role": "official_twse_delisted_company_table", "source_family": "twse_delisted_company_table", "source_event_ref": "TWSE:suspendListing|3454|2026-03-27", "lineage": { "source_url": "https://www.twse.com.tw/rwd/en/company/suspendListing?response=html", "source_scope": "TWSE_ONLY", "source_title": "De-listed Companies", "source_family": "twse_delisted_company_table", "source_endpoint": "company/suspendListing" }, "data_gaps": [ "company_name_missing" ] }, { "market": "TWSE", "code": "6423", "company_name": "YMC", "event_type": "delisting", "announcement_date": null, "suspension_date": null, "delisting_date": "2026-01-22", "reason_summary": null, "source_provider": "twse_official", "source_role": "official_twse_delisted_company_table", "source_family": "twse_delisted_company_table", "source_event_ref": "TWSE:suspendListing|6423|2026-01-22", "lineage": { "source_url": "https://www.twse.com.tw/rwd/en/company/suspendListing?response=html", "source_scope": "TWSE_ONLY", "source_title": "De-listed Companies", "source_family": "twse_delisted_company_table", "source_endpoint": "company/suspendListing" }, "data_gaps": [] } ], "data_count": 50, "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_delisting_lifecycle", "scope": "stock_delisting_lifecycle_twse_only", "row_count": 50 }}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/stock-delisting-lifecycle?symbol=2330" \ -H "X-API-Key: sk_live_..."| Parameter | Required | Type | Description |
|---|---|---|---|
symbol | No | string | Ticker to filter to a single security. |
limit | No | integer | Maximum rows to return. |
A first call:
import requests resp = requests.get( "https://api.twmarketdata.com/v2/datasets/stock-delisting-lifecycle", 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-delisting-lifecycle", 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-delisting-lifecycle. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.