TW Market Data LogoTW Market Data

Facts & statistics

Market facts

Long-run statistics for Taiwan equities, each with its sample period and as_of

Seasonality

Monthly return distributions and hit rates, with sample sizes

Institutional flow

Seasonality in the breadth of institutional net buying

Limit events

How often limit moves happen, and how concentrated they are

Delisting

Delisting counts and survival spans — the basis for avoiding survivorship bias

Rule changes

A timeline of trading-rule changes — the premise for reading historical data

Data & exploration

Dataset catalogue

Every dataset, its coverage, and how often it updates

Playground

Call the API from the browser, without a key

Market today

Today's market at a glance

Stock analysis

The entry point for looking at one instrument

Market heat map

The whole market in one picture — area is market cap, colour is revenue growth

Market calendar

Statutory disclosure deadlines — the day a figure may legally first be known

Platform capabilities

Product overview

What TWMD provides, and who it is built for

Verifiable proof

Signed checkpoints and per-row inclusion proofs

Data quality

Reconciliation, gap handling, and quality status

Methodology

How the figures are computed, and on what basis

Auditable execution

Tie a trading decision back to the data it saw

Connect your broker

Bring TWMD into an existing order and research workflow

Developers

Documentation

API reference, dataset pages, and integration guides

Quick start

Authentication and your first request

Integrate by role

Separate paths for quant research, data engineering, and app development

Connect over MCP

Point an agent straight at TWMD

MCP registry

The published MCP tool list and its signed manifest

Webhooks

Have your system told when data updates

Learn

Blog

Long-form writing on data, method, and market structure

Answers

Specific answers to specific questions, with sources

Topics

Industry chains and thematic relationships

Help centre

Account, billing, and usage questions

Glossary

Definitions for Taiwan-market and data terms

Compare & status

Why TWMD

A point-by-point comparison with FinMind and TEJ

Migrate from FinMind

Field mapping and migration steps

Migrate from FinLab

Field mapping and migration steps

Migrate from TEJ

Field mapping and migration steps

Status

Service availability and incident history

Security & trust

Trust centre

What we claim, and the limits on each claim

Security

Architecture, access control, and incident handling

Security facts

The items you can verify from outside

Security evidence

SBOM, ASVS mapping and threat model — including the three controls we do not meet.

Self-assessment

Item-by-item answers for a procurement questionnaire

Compliance & standards

Compliance mapping

Evidence primitives mapped onto FSB, IOSCO, and SR 26-2

Standards & interop

Term-by-term mapping onto published standards, and where it does not map

Provenance & C2PA

A machine-readable origin graph, fetchable without a key

Licensing

How the data may be used and redistributed

Adoption

Evaluate

Seven checks you can run yourself, without an account

Talk to sales

Enterprise plans, quotas, and contract detail

Pricing
中文Sign inSign up
TW Market Data

Taiwan market-data infrastructure, built for AI agents and quantitative workflows.

Status unknown
© 2026 TW Market Data

TW Market Data (TWMD) provides historical data and statistics, not investment advice; investment decisions and their risks are your own.

  • Privacy Policy·
  • Terms of Service·
  • Cookie Policy·
  • Acceptable Use Policy·
  • Data Sources & Licensing·
  • Legal (all documents)
中文

AI Agent

  • MCP Server
  • Skills
  • Tool manifest
  • Agent workflow examples
  • Agent benchmark
  • llms.txt
  • OpenAPI spec

Security

  • Security overview
  • Verifiable data
  • Trust Center
  • Standards & Interop
  • Regulatory mapping

Product

  • Datasets
  • Topics
  • Market facts
  • Documentation
  • Integration runbooks
  • Playground (no signup)
  • Free tier
  • Solutions

Company

  • About TWMD
  • Blog
  • Help centre
  • Pricing

Documentation

DASHBOARD

DashboardPricing

FOR AI AGENTS

MCP ServerSkillsllms.txtTool manifestOpenAPI SpecAgent workflow examples

OVERVIEW

OverviewQuick startAuthenticationSource policyData gradesData lineageMarket coverage

DATA APIS

GUIDES

How to get the 3 financial statementsHow to read institutional flowsHow to check market statusHow to wire a strategy / AI agent

SDKS

Release statusPython SDKJavaScript / TypeScript SDK

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

Overview

Tools / MCP

Connect official Taiwan market data to your code and your AI assistant — REST API and MCP are both live, and five minutes is enough to start.

Tools / MCP — connect Taiwan stocks to your code and AI

With a single API key you can query official Taiwan-stock data: prices and adjusted prices, monthly revenue, financial statements, valuation, technical indicators, chips and institutional flows, corporate events and announcements.

  • REST API(api.twmarketdata.com) — any language, any program or AI agent that can make HTTP calls can connect.
  • MCP(mcp.twmarketdata.com) — let AI assistants like Claude and Cursor connect in one click, ask in natural language, and let them pick the tools to query.
Both query the same official data with the same pricing, credits are identical. Which to use depends on your scenario: REST for writing code, MCP if you want an AI assistant to query Taiwan stocks directly.
MCP is in beta — the server is live and connectable and lists 34 tools, read from it on 2026-08-26, but it is not yet GA. The REST API is the stable path. Details below may change before general availability.

Get an API key first

In the dashboardcreate a key (starting with sk_live_…). The key is bound to your plan and determines which datasets you can query, your rate limit, and usage. Keep it safe; if it leaks, revoke and recreate it in the dashboard (revoked keys are permanently invalid).

A. Use MCP so your AI can query Taiwan stocks in one click (beta)

Once MCP is connected, your AI assistant auto-detects all tools; ask it in Chinese or English and it picks the tools to query on its own — you never hand-write any API call.

1. Connect (pick the AI tool you use)

We authenticate with an API key (X-API-Key header). Below are the clients verified to connect today — each notes exactly where to configure it. The server address is always: https://mcp.twmarketdata.com/mcp, and replace sk_live_your_key with your key.

Claude Code (one line in the terminal, fastest)›

Run in the terminal:

claude mcp add --transport http tw-market-data \
https://mcp.twmarketdata.com/mcp \
--header "X-API-Key: sk_live_your_key"

Verify: claude mcp list shows tw-market-data ✓ connected.

Claude Desktop (via mcp-remote bridge)›

Claude Desktop reaches remote MCP servers through the mcp-remote local bridge (it injects the X-API-Key header). Add to claude_desktop_config.json:

{
"mcpServers": {
"tw-market-data": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://mcp.twmarketdata.com/mcp",
"--transport", "http-only",
"--header", "X-API-Key: sk_live_your_key"
]
}
}
}

Restart Claude Desktop; tw-market-data appears in the tools list with its 34 tools.

Cursor›

Edit the config file ~/.cursor/mcp.json and add:

{
"mcpServers": {
"tw-market-data": {
"url": "https://mcp.twmarketdata.com/mcp",
"headers": { "X-API-Key": "sk_live_your_key" }
}
}
}

After saving, confirm the connection on Cursor's MCP settings page.

VS Code (Copilot / MCP)›

Edit mcp.json (macOS: ~/Library/Application Support/Code/User/mcp.json; Windows: %APPDATA%\\Code\\User\\mcp.json; Linux: ~/.config/Code/User/mcp.json):

{
"servers": {
"tw-market-data": {
"type": "http",
"url": "https://mcp.twmarketdata.com/mcp",
"headers": { "X-API-Key": "sk_live_your_key" }
}
}
}

Or use the command palette MCP: Add Server.

Codex (OpenAI CLI)›

Edit ~/.codex/config.toml:

[mcp_servers.tw_market_data]url = "https://mcp.twmarketdata.com/mcp"http_headers = { "X-API-Key" = "sk_live_your_key" }
Gemini CLI›

Edit ~/.gemini/settings.json:

{
"mcpServers": {
"tw-market-data": {
"url": "https://mcp.twmarketdata.com/mcp",
"headers": { "X-API-Key": "sk_live_your_key" }
}
}
}
Windsurf›

Edit ~/.codeium/windsurf/mcp_config.json (note Windsurf uses serverUrl, not url):

{
"mcpServers": {
"tw-market-data": {
"type": "streamable-http",
"serverUrl": "https://mcp.twmarketdata.com/mcp",
"headers": { "X-API-Key": "sk_live_your_key" }
}
}
}
Others (LM Studio / Cherry Studio / Goose / Raycast)›

These all read mcpServers JSON, same structure as Cursor (url + headers). Raycast instead uses an in-app form: Transport: HTTP + URL + header.

Zed (needs a small adapter)›

Zed's URL form doesn't accept headers, so you need the mcp-remote adapter. Edit ~/.config/zed/settings.json:

{
"context_servers": {
"tw-market-data": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.twmarketdata.com/mcp",
"--header", "X-API-Key: sk_live_your_key"]
}
}
}

Not yet supported: ChatGPT, Claude Desktop / Claude.ai web. These clients connect via OAuth, which doesn't yet accept this service's API-key connection. One-click OAuth is in development; these clients will be able to connect then — stay tuned. Until then, connect with the developer tools above, or use REST directly.

2. Ask in plain natural language

Once connected, just ask in the chat, for example:

  • "Get TSMC 2330's latest quarterly income statement."
  • "Compare the monthly-revenue YoY of 2330 and 2317 over the last 12 months."
  • "List the stocks the three major investors bought the most over the past week."
  • "Use technical indicators to find stocks with RSI < 30."

Your AI does this automatically: first list_datasets to find the right dataset → query_dataset to fetch clean JSON → then summarize / compare / filter for you.

The 4 tools MCP provides (your AI selects them automatically)

ToolPurposeBilling
list_datasetsList all available datasets (filter by category / plan tier)Free
describe_datasetSee a dataset's fields, semantics, and update cadenceFree
query_datasetFetch actual data rows (supports individual stocks, date ranges, and as_of point-in-time)Credits per dataset (same price as REST)
find_relatedCross-table / supply-chain relationship reasoning (find joinable data, same-supply-chain stocks)Free
Billing: only query_dataset fetching the data body consumes credits, priced from the same SSOT as REST; list_datasets / describe_dataset / find_related are free.

Backtest-friendly: point-in-time (as_of)

For backtests or agent training, pass query_dataset with as_of='YYYY-MM-DD' — non-real-time data such as financial statements and monthly revenue is filtered by disclosure / announcement date, so the agent sees only what was public at that point, with no leakage of the future. Example:

"Get the income statement knowable for 2330 as of 2023-06-30" → the AI passes as_of=2023-06-30.

B. Use REST from any program / AI framework

Make your first call

curl -H "X-API-Key: sk_live_your_key" \
"https://api.twmarketdata.com/v2/datasets/twse-daily-price?symbol=2330&limit=5"

You get TSMC's daily bars for the last 5 trading days (OHLC, volume, adjustment info) = success.

Switch datasets — swap the last path segment

/v2/datasets/monthly-revenue?symbol=2330            # monthly revenue
/v2/datasets/income-statement?symbol=2330 # income statement
/v2/datasets/institutional-flow?symbol=2330 # institutional net buy/sell

Python

import requests
r = requests.get(
"https://api.twmarketdata.com/v2/datasets/twse-daily-price",
params={"symbol": "2330", "limit": 20},
headers={"X-API-Key": "sk_live_your_key"},
)
print(r.json()["rows"])

JavaScript / TypeScript

const res = await fetch(
"https://api.twmarketdata.com/v2/datasets/monthly-revenue?symbol=2330",
{ headers: { "X-API-Key": "sk_live_your_key" } },
);
const data = await res.json();

Connect to an AI agent — in any framework that can "call an HTTP API" (LangChain, your own tool, etc.), wrap the GET above as a tool and the agent can query Taiwan stocks itself. The response is clean normalized JSON, ready to feed straight to the model.

Authentication

  • API Key — each request carries X-API-Key: sk_live_… (REST via header; MCP via the claude mcp add --header). The key is bound to your plan and determines which datasets you can query, your rate limit, and monthly usage.
  • Security — never commit the key to public code or share it; if it leaks, revoke and recreate it in the dashboard.

Dataset overview (one line each)

For the full dataset list and the credits cost per call, see the dashboard cost table. On the MCP side, your AI can also use list_datasets to list all datasets you currently have access to at any time.

Market & prices
Individual TWSE / TPEx daily bars (OHLC, volume, adjusted), adjusted prices (for total-return backtests), market and sector indices, advancers/decliners.

Financials & growth
Monthly revenue (with MoM / YoY), the three financial statements (income / balance sheet / cash flow), financial ratios, valuation (PER / PBR / dividend yield).

Chips & capital flows
Institutional net buy/sell (three major investors), margin trading & short selling, securities lending, institutional holdings / TDCC shareholding dispersion, day trading, large-trader open interest.

Derivatives / convertibles
Daily futures and options data (TAIFEX), daily convertible-bond trades.

Events / risk / dividends
Corporate events and announcements, penalty / legal-risk events, dividends / ex-rights & ex-dividend, alert & disposition.

Technicals / factors / macro
Technical indicators (MA / RSI / MACD…), stock-selection factors, interest rates, global macro, FX, security master, supply chains and classifications.

Note: the "all-market individual daily union (TWSE + TPEx)" is being added; until then, use the separate "TWSE daily" and "TPEx daily" datasets.

Semantics & notes

  • Responses are normalized JSON with stable fields; missing data honestly returns null, never fabricated.
  • Data is official EOD data (TWSE / TPEx / TAIFEX / MOPS…), with no real-time tick, intraday-K, or broker-branch data — clean, backtestable, PIT-safe.
  • Rate limit and monthly usage follow your plan; overage returns 402 / 429, never silently allowed.
  • More: Quick Start·OpenAPI· for AI to read first /llms.txt.

On this page

  • Get an API key first
  • A. Use MCP (simplest)
  • B. Use REST
  • Authentication
  • Dataset overview
  • Semantics & notes