Building an AI agent? Start with /llms.txt for the full site index.

Companies & Events

Company news

Company news

ReferenceSource: TWMD·Plan: pro·Cost: 2 credits·GET /v2/datasets/company-news

Company news is a Taiwan market dataset sourced from TWMD, served by TW Market Data as GET /v2/datasets/company-news.

Overview

Company news — the backend metadata exposes no grain, so none is stated here.

FieldTypeDescription
tickerstring
marketstring
published_atstring
headlinestring
summarynull
content_urlstring
languagestring
metadata_onlyboolean
source_attribution_requiredboolean

Example response

A real response from this endpoint. Rows are returned under "envelope.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/company-news",  "request_id": "req_d9fc3d83537d",  "plan_id": "enterprise",  "dataset": "company_news",  "query": {    "ticker": "2601",    "date_from": null,    "date_to": null,    "source_name": null,    "keyword": null,    "limit": 50  },  "meta": {    "rows_returned": 8,    "metadata_only": true,    "internal_only": true,    "production_exposure": false,    "public_exposure": false,    "source_attribution_required": true,    "allowed_filters": [      "ticker",      "date_from",      "date_to"    ],    "allowlist_fields": [      "ticker",      "market",      "published_at"    ],    "safe_usage_notes": [      "not_investment_advice",      "metadata_only",      "source_attribution_required"    ],    "mandatory_contract_fields_present": [      "api_version",      "data",      "data_as_of"    ],    "plan": "enterprise",    "row_limit": 100000,    "is_limited": false  },  "not_investment_advice": true,  "envelope": {    "api_version": "v2",    "dataset": "company_news",    "dataset_version": "v2.0.0-preview",    "release_version": "v2.2026-06-18T18:17:45.preview",    "release_date": "2026-06-18T18:17:45",    "data_as_of": "2026-06-18T18:17:45",    "request_context": {      "ticker": "2601",      "as_of_date": "2026-06-18T18:17:45",      "family": "issuer_official_news",      "field_group_type": "derived",      "dataset_view": "company_news_v1"    },    "data": [      {        "ticker": "2601",        "market": "TW",        "published_at": "2026-06-18T18:17:45",        "headline": "<Chinese value - see the zh page>",        "summary": null,        "content_url": "https://mopsov.twse.com.tw/mops/web/ajax_t05sr01_1",        "source_name": "mops_official",        "provider": "mops_official",        "source_role": "canonical",        "language": "zh-TW",        "lineage": {          "as_of_date": "2026-06-18",          "record_index": 31,          "fallback_chain": [],          "selected_source": "mops_official",          "canonical_row_id": 1        },        "created_at": "2026-06-18T16:19:49.181508",        "updated_at": "2026-08-05T07:40:18.819417",        "not_investment_advice": true,        "metadata_only": true,        "source_attribution_required": true      },      {        "ticker": "2601",        "market": "TW",        "published_at": "2026-06-18T18:17:11",        "headline": "<Chinese value - see the zh page>",        "summary": null,        "content_url": "https://mopsov.twse.com.tw/mops/web/ajax_t05sr01_1",        "source_name": "mops_official",        "provider": "mops_official",        "source_role": "canonical",        "language": "zh-TW",        "lineage": {          "as_of_date": "2026-06-18",          "record_index": 30,          "fallback_chain": [],          "selected_source": "mops_official",          "canonical_row_id": 1        },        "created_at": "2026-06-18T16:19:49.181508",        "updated_at": "2026-08-05T07:40:18.819417",        "not_investment_advice": true,        "metadata_only": true,        "source_attribution_required": true      }    ],    "quality": {      "freshness_state": "fresh",      "freshness_as_of": "2026-06-18T18:17:45",      "completeness_ratio": 1,      "quality_status": "ready"    },    "lineage": {      "source_role": "canonical",      "selected_source": "company_news",      "fallback_chain": [],      "policy_notes": [        "company news productized table serving path",        "contract-aligned filters: ticker/date_from/date_to/source_name/keyword/limit",        "metadata-only allowlist fields only"      ]    },    "error": {      "error_code": null,      "error_message": null,      "dataset": "company_news",      "request_id": "read-api-464f78c9acfb",      "blocking_gate": null    }  }}

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_nameprovidersource_rolelineagecreated_atupdated_atnot_investment_advice

Datasets that join with this one. The key each pair aligns on is shown, so you can plan a multi-table query without guessing.

Getting started

  1. Put your key in the X-API-Key header.
  2. Add query parameters (symbol, date range, limit).
  3. Send the request and read the envelope.data array.
curl "https://api.twmarketdata.com/v2/datasets/company-news?symbol=2330" \  -H "X-API-Key: sk_live_..."

Filtering

ParameterRequiredTypeDescription
symbolYesstringTicker, e.g. 2330.
start_dateNostring (YYYY-MM-DD)Start of the query range.
end_dateNostring (YYYY-MM-DD)End of the query range.
limitNointegerMaximum rows to return.

Python

A first call:

import requests resp = requests.get(    "https://api.twmarketdata.com/v2/datasets/company-news",    params={"symbol": "2330"},    headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()print(resp.json()["envelope"]["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/company-news",    params={"symbol": "2330"},    headers={"X-API-Key": "sk_live_..."},)resp.raise_for_status()for row in resp.json()["envelope"]["data"]:    print(row)

OpenAPI

This endpoint is GET /v2/datasets/company-news. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.

Notes & limitations

  • The knowledge-time field is published_at and the backend marks this dataset as NOT point-in-time safe. The backend metadata exposes no grain or field list, so no field table is shown.