Building an AI agent? Start with /llms.txt for the full site index.
Funds & Corporate Intelligence
ETF holdings — the latest disclosed constituent list per ETF (constituent, weight, as-of date), sourced from the issuer.
GET /v2/datasets/etf-holdingsETF holdings is a Taiwan market dataset sourced from Issuer, served by TW Market Data as GET /v2/datasets/etf-holdings.
etf-holdings is a reference dataset: for each ETF it returns the constituents of its latest disclosed portfolio with each one's weight, sourced from the issuer. It is an issuer-limited latest snapshot — the coverage is only the ETFs whose holdings the issuer publishes, and only the most recent disclosure, not a market-wide or historical holdings series. Each row carries a source role and lineage so a weight can be reconciled against the issuer disclosure.
| Field | Type | Description |
|---|---|---|
etf_code | string | |
etf_name | string | |
issuer | string | |
market | string | |
as_of_date | string | |
holding_ticker | string | |
holding_name | string | |
holding_weight | number | |
holding_units | number | |
holding_market | null |
| Rows | 10,625 |
| Window | 2026-06-04 – 2026-09-04 |
| Grade | Reference |
| Measured | 2026-09-04from the dataset registry |
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": "etf_holdings",
"request_context": {
"scope": "fubon_issuer_limited_latest_available_snapshot_set",
"coverage_type": "latest_available_snapshot_set",
"filters": {
"etf_code": "00645",
"issuer": null,
"as_of_date": null,
"holding_ticker": null,
"market": null,
"source_family": null,
"limit": 50
},
"min_as_of_date": "2026-06-05",
"max_as_of_date": "2026-06-05"
},
"quality": {
"row_count": 50,
"etf_count": 1,
"sensitive_fields_exposed": false
},
"lineage": {
"source_providers": [
"<Chinese value - see the zh page>"
],
"source_roles": [
"issuer_official"
],
"source_families": [
"fubon_etf_assets_page"
]
},
"error": null,
"data": [
{
"etf_code": "00645",
"etf_name": "<Chinese value - see the zh page>",
"issuer": "<Chinese value - see the zh page>",
"market": "TWSE",
"as_of_date": "2026-06-05",
"holding_ticker": "1301 JP",
"holding_name": "KYOKUYO CO LTD",
"holding_weight": 0.0033,
"holding_units": 100,
"holding_market": null,
"source_provider": "<Chinese value - see the zh page>",
"source_role": "issuer_official",
"source_family": "fubon_etf_assets_page",
"lineage": {},
"data_gaps": [
"holding_market_not_provided_by_source"
]
},
{
"etf_code": "00645",
"etf_name": "<Chinese value - see the zh page>",
"issuer": "<Chinese value - see the zh page>",
"market": "TWSE",
"as_of_date": "2026-06-05",
"holding_ticker": "1332 JP",
"holding_name": "NIPPON SUISAN KAISHA LTD",
"holding_weight": 0.0361,
"holding_units": 3700,
"holding_market": null,
"source_provider": "<Chinese value - see the zh page>",
"source_role": "issuer_official",
"source_family": "fubon_etf_assets_page",
"lineage": {},
"data_gaps": [
"holding_market_not_provided_by_source"
]
}
],
"data_count": 50,
"known_gaps": [
"latest_available_snapshot_only",
"issuer_limited_fubon_only",
"approved_etf_scope_only=fubon_page_discovered_50_etfs"
],
"warnings": [
"not_investment_advice"
],
"envelope": {
"dataset_id": "etf_holdings",
"scope": "fubon_issuer_limited_latest_available_snapshot_set",
"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.
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_familylineagedata_gapsSource: Fund issuers (first-hand PCF disclosure) — This dataset is a first-hand issuer disclosure, not government open data. The Open Government Data License does not apply, and redistribution terms are still being confirmed with each issuer.
TW Market Data. (n.d.). ETF holdings [Data set]. TW Market Data. Retrieved 2026-09-05, from https://twmarketdata.com/en/docs/api/funds-intel/etf-holdings
The version is the dataset's own as_of, not the date this page was built. Where we have no as_of the field is left out rather than filled in. Check a signature
Datasets that join with this one. The key each pair aligns on is shown, so you can plan a multi-table query without guessing.
Joins on as_of_date + market
Joins on as_of_date + market
Joins on as_of_date + market
Joins on as_of_date + market
Joins on as_of_date + market
Same domain: funds-intel
curl "https://api.twmarketdata.com/v2/datasets/etf-holdings?etf_code=00645" \
-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. |
import requests
resp = requests.get(
"https://api.twmarketdata.com/v2/datasets/etf-holdings",
params={"etf_code": "00645"},
headers={"X-API-Key": "sk_live_..."},
)
resp.raise_for_status()
print(resp.json()["data"])This endpoint is GET /v2/datasets/etf-holdings. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.