Building an AI agent? Start with /llms.txt for the full site index.
Market & Prices
Core daily valuation — per-share valuation ratios (PER, PBR, dividend yield) per stock per trading day.
GET /v2/datasets/valuation-core-dailyvaluation-core-daily is a derived dataset: it combines the official daily price with per-share earnings, book value and dividend inputs to give the core valuation ratios per stock per trading day. The lineage block names what each ratio was computed from, so a valuation stays auditable rather than opaque.
| Field | Type | Description |
|---|---|---|
symbol | string | Ticker. |
date | string | Trading date. |
per | number | Price-to-earnings ratio (derived). |
pbr | number | Price-to-book ratio (derived). |
dividend_yield | number | Dividend yield (ratio, derived). |
source_role | string | Canonical source role (derived_valuation_core). |
| Rows | 704,522 |
| Window | 2023-06-01 – 2026-05-28 |
| Grade | Derived |
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", "dataset": "valuation_core_daily", "dataset_version": "v2.0.0-preview", "release_version": "v2.2026-05-28.preview", "release_date": "2026-05-28", "data_as_of": "2026-05-28", "request_context": { "ticker": "1101", "as_of_date": "2026-05-28", "family": "fundamentals", "field_group_type": "canonical", "dataset_view": "valuation_core_daily_v1", "source_table": "valuation_core_daily", "scope": "valuation_core_daily_only", "coverage_type": "seeded_anchor_snapshot_set", "supported_sort_by": [ "date" ], "supported_filter_fields": [ "ticker", "date_from", "date_to" ], "date_range": { "date_from": null, "date_to": null } }, "data": [ { "ticker": "1101", "date": "2026-05-28", "close": 23.65, "shares_outstanding": null, "market_cap": null, "trailing_12m_revenue": null, "ps": null, "book_value_per_share": null, "pe": null, "pb": 0.75, "dividend_per_share_ttm": null, "dividend_yield": 3.38, "source_summary": { "pb": "valuation_data_items", "pe": "missing", "ps": "missing_direct_source", "close": "technical_indicators_items", "market_cap": "missing_direct_source", "dividend_yield": "valuation_data_items", "shares_outstanding": "missing_direct_source", "book_value_per_share": "missing_source_gap", "trailing_12m_revenue": "missing_source_gap" }, "notes": "missing_dependencies=shares_outstanding,market_cap,ps,book_value_per_share,trailing_12m_revenue" }, { "ticker": "1102", "date": "2026-05-28", "close": 32.4, "shares_outstanding": null, "market_cap": null, "trailing_12m_revenue": null, "ps": null, "book_value_per_share": null, "pe": 10.87, "pb": 0.65, "dividend_per_share_ttm": null, "dividend_yield": 7.1, "source_summary": { "pb": "valuation_data_items", "pe": "valuation_data_items", "ps": "missing_direct_source", "close": "technical_indicators_items", "market_cap": "missing_direct_source", "dividend_yield": "valuation_data_items", "shares_outstanding": "missing_direct_source", "book_value_per_share": "missing_source_gap", "trailing_12m_revenue": "missing_source_gap" }, "notes": "missing_dependencies=shares_outstanding,market_cap,ps,book_value_per_share,trailing_12m_revenue" } ], "quality": { "freshness_state": "fresh", "freshness_as_of": "2026-05-28", "completeness_ratio": 1, "quality_status": "ready" }, "lineage": { "source_role": "canonical", "selected_source": "valuation_core_daily", "fallback_chain": [ "valuation_data_items", "financial_metrics_items", "ticker_metadata" ], "policy_notes": [ "official/public-first canonical", "valuation_core_daily is the seeded anchor surface for valuation facts", "raw_payload excluded from the public read route" ] }, "error": { "error_code": null, "error_message": null, "dataset": "valuation_core_daily", "request_id": "read-api-20260528", "blocking_gate": null }, "dataset_id": "valuation_core_daily", "data_count": 50, "known_gaps": [ "raw_payload_excluded", "not_investment_advice" ], "warnings": [ "not_investment_advice", "raw_payload_excluded" ]}Captured from the live API on 2026-07-20.
curl "https://api.twmarketdata.com/v2/datasets/valuation-core-daily?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/valuation-core-daily", 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/valuation-core-daily", 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/valuation-core-daily. The full machine-readable schema (parameters, security, response envelope) lives in the OpenAPI spec.