Building an AI agent? Start with /llms.txt for the full site index.
Macroeconomics
Daily USD crosses for the three Asian export-competitor currencies (JPY, KRW, CNY) plus USD/TWD, and each expressed per-TWD (jpy_per_twd, krw_per_twd, cny_per_twd) — coordinates only, no signal. Derived from CBC official FX. Not a forecast, not a recommendation.
GET /v2/datasets/competitor-fxThis dataset is in build and not yet queryable via the API. The coverage and honest limitations below are the real database state; it moves off "Building" once serving lands (targeted 8/1).
| Field | Type | Description |
|---|---|---|
usd_jpy | rate | |
usd_krw | rate | |
usd_cny | rate | |
usd_twd | rate | |
jpy_per_twd | rate | cross |
krw_per_twd | rate | cross |
cny_per_twd | rate | cross |
8,324 rows, 1993-01-05..2026-06-30. Per-TWD ratios are arithmetic cross-rates from the USD legs (derivation_method carries the formula). CBC official daily fixings; days where a leg is absent carry NULL for that cross.
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": "competitor-fx", "row_count": 3, "data": [ { "rate_date": "2026-06-30", "usd_jpy": 162.26, "usd_krw": 1553.5, "usd_cny": 6.7852, "usd_twd": 31.837, "jpy_per_twd": 5.096586, "krw_per_twd": 48.795427, "cny_per_twd": 0.213123 }, { "rate_date": "2026-06-29", "usd_jpy": 161.82, "usd_krw": 1543.7, "usd_cny": 6.7929, "usd_twd": 31.845, "jpy_per_twd": 5.081488, "krw_per_twd": 48.475428, "cny_per_twd": 0.213311 }, { "rate_date": "2026-06-26", "usd_jpy": 161.62, "usd_krw": 1540.4, "usd_cny": 6.7997, "usd_twd": 31.86, "jpy_per_twd": 5.072819, "krw_per_twd": 48.349027, "cny_per_twd": 0.213424 } ]}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/competitor-fx?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/competitor-fx", 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/competitor-fx", 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/competitor-fx. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.