Building an AI agent? Start with /llms.txt for the full site index.
Funds & Corporate Intelligence
Subsidiary & investment holdings
Subsidiary & investment holdings
GET /v2/datasets/subsidiary-investmentSubsidiary & investment holdings is a Taiwan market dataset sourced from MOPS, served by TW Market Data as GET /v2/datasets/subsidiary-investment.
Overview
Subsidiary & investment holdings — grain: parent_ticker / invested_entity.
| Field | Type | Description |
|---|---|---|
parent_ticker | string | |
invested_entity_name | string | |
main_business | string | |
region | string | |
criterion | string | |
fact_date | string | |
holding_pct | null | Holding % |
market | string | |
pit_safe_from | null |
Example response
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": "subsidiary_investment", "request_context": { "scope": "listed_parent_direct_investments", "coverage_type": "versioned_snapshot", "filters": { "parent_ticker": null, "region": null, "as_of": null, "limit": 50 }, "min_fact_date": "2006-04-28", "max_fact_date": "2026-03-20" }, "quality": { "row_count": 50, "parent_count": 14, "rows_without_holding_pct": 50, "rows_without_pit_safe_from": 50, "sensitive_fields_exposed": false }, "lineage": { "source_providers": [ "mops_official" ], "semantics": "Entities a listed parent reports investing in, with the holding percentage where filed. Returns the CURRENT version per (parent_ticker, invested_entity_name); pass as_of for an earlier one." }, "error": null, "data": [ { "parent_ticker": "1101", "invested_entity_name": "OYAK Cimento Fabrikalari A.S.", "main_business": "<Chinese value - see the zh page>", "region": "<Chinese value - see the zh page>", "criterion": "1", "fact_date": "2026-03-12", "holding_pct": null, "market": "TW", "source_provider": "mops_official", "source_role": "official_mops_t79sb02", "source_authority": "<Chinese value - see the zh page>", "pit_safe_from": null }, { "parent_ticker": "1101", "invested_entity_name": "TCC Dutch Holdings B.V.", "main_business": "<Chinese value - see the zh page>", "region": "<Chinese value - see the zh page>", "criterion": "1", "fact_date": "2025-03-12", "holding_pct": null, "market": "TW", "source_provider": "mops_official", "source_role": "official_mops_t79sb02", "source_authority": "<Chinese value - see the zh page>", "pit_safe_from": null } ], "data_count": 50, "known_gaps": [ "fact_date_is_the_snapshot_we_observed_not_the_date_the_holding_changed", "pit_safe_from_null_means_the_version_boundary_is_an_ingest_date_not_a_disclosure_date", "holding_pct_may_be_null_where_the_filing_stated_no_percentage" ], "warnings": [ "not_investment_advice" ], "envelope": { "dataset_id": "subsidiary_investment", "scope": "listed_parent_direct_investments", "row_count": 50 }}Captured from the live API on 2026-07-20.
Chinese data values are shown as a marker here so this page stays in English; the /zh page shows them verbatim.
Provenance
These columns are returned alongside the data and record where the row came from. They are provenance, not the dataset's subject matter, so they are listed here rather than in the field table.
source_providersource_rolesource_authorityRelated datasets
Datasets that join with this one. The key each pair aligns on is shown, so you can plan a multi-table query without guessing.
- ETF holdings
Joins on market
- Fund / ETF metadata
Joins on market
- Dividend policy
Joins on market
- Financial metrics
Joins on market
- Investor conference calendar
Joins on market
Getting started
- Put your key in the X-API-Key header.
- Add query parameters (symbol, date range, limit).
- Send the request and read the data array.
curl "https://api.twmarketdata.com/v2/datasets/subsidiary-investment?symbol=2330" \ -H "X-API-Key: sk_live_..."Filtering
| Parameter | Required | Type | Description |
|---|---|---|---|
symbol | No | string | Ticker to filter to a single security. |
limit | No | integer | Maximum rows to return. |
Python
A first call:
import requests resp = requests.get( "https://api.twmarketdata.com/v2/datasets/subsidiary-investment", 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/subsidiary-investment", params={"symbol": "2330"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["data"]: print(row)OpenAPI
This endpoint is GET /v2/datasets/subsidiary-investment. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.
Notes & limitations
- period_semantics=entity_attribute: one quarterly-refreshed row per company, not a daily observation series. The fact date is the period it belongs to, not the disclosure date — align a backtest to the announcement date separately.