Building an AI agent? Start with /llms.txt for the full site index.
Macroeconomics
Taiwan business-cycle indicators from the NDC — the monthly monitoring signal plus the leading and coincident composite indices.
GET /v2/datasets/business-indicator-monthlybusiness-indicator-monthly returns one row per indicator per month from the National Development Council (NDC) business-cycle release. Each row carries its source role and lineage, so a reading can be traced back to the exact NDC monthly publication rather than taken on trust.
| Field | Type | Description |
|---|---|---|
indicator | string | Indicator code (e.g. monitoring_signal, leading_index, coincident_index). |
period | string | Reference month (YYYY-MM). |
value | number | Indicator value for the month (index level or signal score). |
source_role | string | Canonical source role (official_ndc_business_indicator). |
lineage | object | Upstream endpoint + authority (e.g. NDC business-cycle monitoring release). |
| Rows | 608 |
| Window | 2020-01-01 – 2026-04-01 |
| 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.
{ "api_version": "v2", "endpoint": "/v2/datasets/business-indicator-monthly", "request_id": "req_e3fc727c2a9c", "plan_id": "enterprise", "dataset": "business_indicator_monthly", "dataset_id": "business_indicator_monthly", "request_context": { "scope": "monthly_macro_business_cycle_only", "coverage_type": "monthly_2020_2026_baseline", "filters": { "indicator_code": null, "indicator_name": null, "month_from": null, "month_to": null, "source_family": null, "limit": 50 }, "min_indicator_month": "2025-10-01", "max_indicator_month": "2026-04-01" }, "quality": { "row_count": 50, "indicator_count": 8, "raw_payload_exposed": false }, "lineage": { "source_providers": [ "ndc_official" ], "source_roles": [ "official_business_indicator_monthly" ], "source_families": [ "ndc_business_indicator_signal_csv" ] }, "error": null, "data": [ { "indicator_month": "2026-04-01", "indicator_code": "coincident_composite_index", "indicator_name": "<Chinese value - see the zh page>", "value": 134.730496, "value_text": "134.7304956", "value_numeric": 134.730496, "signal_light": null, "unit": null, "source_provider": "ndc_official", "source_role": "official_business_indicator_monthly", "source_family": "ndc_business_indicator_signal_csv", "lineage": { "date_raw": "202604", "source_url": "ndc_download_ashx_zip", "source_file": "<Chinese value - see the zh page>", "normalization": "wide_csv_to_month_indicator_rows" }, "data_gaps": [] }, { "indicator_month": "2026-04-01", "indicator_code": "coincident_index_without_trend", "indicator_name": "<Chinese value - see the zh page>", "value": 107.572161, "value_text": "107.5721614", "value_numeric": 107.572161, "signal_light": null, "unit": null, "source_provider": "ndc_official", "source_role": "official_business_indicator_monthly", "source_family": "ndc_business_indicator_signal_csv", "lineage": { "date_raw": "202604", "source_url": "ndc_download_ashx_zip", "source_file": "<Chinese value - see the zh page>", "normalization": "wide_csv_to_month_indicator_rows" }, "data_gaps": [] } ], "data_count": 50, "known_gaps": [ "monthly_macro_business_cycle_only", "not_company_fundamentals", "not_industry_chain_reference" ], "data_gaps": [ "monthly_macro_business_cycle_only", "not_company_fundamentals", "not_industry_chain_reference" ], "query": { "indicator_code": null, "indicator_name": null, "month_from": null, "month_to": null, "source_family": null, "limit": 50 }, "meta": { "rows_returned": 50, "mandatory_contract_fields_present": [ "data", "error", "lineage" ], "plan": "enterprise", "row_limit": 100000, "is_limited": false }, "warnings": [ "not_investment_advice" ], "envelope": { "dataset_id": "business_indicator_monthly", "request_context": { "scope": "monthly_macro_business_cycle_only", "coverage_type": "monthly_2020_2026_baseline", "filters": { "indicator_code": null, "indicator_name": null, "month_from": null, "month_to": null, "source_family": null, "limit": 50 }, "min_indicator_month": "2025-10-01", "max_indicator_month": "2026-04-01" }, "quality": { "row_count": 50, "indicator_count": 8, "raw_payload_exposed": false }, "lineage": { "source_providers": [ "ndc_official" ], "source_roles": [ "official_business_indicator_monthly" ], "source_families": [ "ndc_business_indicator_signal_csv" ] }, "error": null, "data": [ { "indicator_month": "2026-04-01", "indicator_code": "coincident_composite_index", "indicator_name": "<Chinese value - see the zh page>", "value": 134.730496, "value_text": "134.7304956", "value_numeric": 134.730496, "signal_light": null, "unit": null, "source_provider": "ndc_official", "source_role": "official_business_indicator_monthly", "source_family": "ndc_business_indicator_signal_csv", "lineage": { "date_raw": "202604", "source_url": "ndc_download_ashx_zip", "source_file": "<Chinese value - see the zh page>", "normalization": "wide_csv_to_month_indicator_rows" }, "data_gaps": [] }, { "indicator_month": "2026-04-01", "indicator_code": "coincident_index_without_trend", "indicator_name": "<Chinese value - see the zh page>", "value": 107.572161, "value_text": "107.5721614", "value_numeric": 107.572161, "signal_light": null, "unit": null, "source_provider": "ndc_official", "source_role": "official_business_indicator_monthly", "source_family": "ndc_business_indicator_signal_csv", "lineage": { "date_raw": "202604", "source_url": "ndc_download_ashx_zip", "source_file": "<Chinese value - see the zh page>", "normalization": "wide_csv_to_month_indicator_rows" }, "data_gaps": [] } ], "known_gaps": [ "monthly_macro_business_cycle_only", "not_company_fundamentals", "not_industry_chain_reference" ], "warnings": [ "not_investment_advice" ], "envelope": { "dataset_id": "business_indicator_monthly", "scope": "monthly_macro_business_cycle_only", "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.
curl "https://api.twmarketdata.com/v2/datasets/business-indicator-monthly?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/business-indicator-monthly", 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/business-indicator-monthly", 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/business-indicator-monthly. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.