Building an AI agent? Start with /llms.txt for the full site index.
Financials & Growth
Monthly revenue disclosures for listed companies, sourced from MOPS, with year-over-year and month-over-month growth ready to compute.
GET /v2/datasets/monthly-revenuemonthly-revenue returns one row per company per reporting month from MOPS. The lineage block names the exact MOPS form the figure came from, so each number is auditable rather than opaque.
| Field | Type | Description |
|---|---|---|
symbol | string | Ticker. |
period | string | Reporting month (YYYY-MM). |
revenue | number | Monthly revenue (TWD thousands). |
source_role | string | Canonical source role (official_mops_monthly_revenue). |
lineage | object | Upstream endpoint + authority (e.g. MOPS t187ap05). |
| Rows | 331,109 |
| Window | 2010-02-10 – 2026-07-10 |
| Grade | Verified |
A real response from this endpoint. Rows are returned under "rows", 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": "monthly_revenue", "rows": [ { "symbol": "2330", "month": "2026-04", "revenue_month": "2026-04", "revenue": 410725118, "mom": -1.075787644781405, "yoy": 17.495412466636576, "announcement_date": "2026-05-17", "source_publish_date": "2026-05-17", "currency": "TWD", "is_revision": false, "revision_key": null, "source_id": "mops_official" }, { "symbol": "2330", "month": "2026-03", "revenue_month": "2026-03", "revenue": 415191699, "mom": 30.704566506222868, "yoy": 45.193838874210485, "announcement_date": "2026-05-17", "source_publish_date": "2026-05-17", "currency": "TWD", "is_revision": false, "revision_key": null, "source_id": "mops_official" } ], "count": 35}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/monthly-revenue?symbol=2330&start_date=2026-06-01&end_date=2026-07-15&limit=5" \ -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/monthly-revenue", params={"symbol": "2330", "limit": "5"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()print(resp.json()["rows"])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/monthly-revenue", params={"symbol": "2330", "start_date": "2026-06-01", "end_date": "2026-07-15", "limit": "5"}, headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["rows"]: print(row)This endpoint is GET /v2/datasets/monthly-revenue. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.