# CN/HK Financial Report Facts Index (`huhoo/cn-hk-financial-facts-index`) Actor

CN/HK financial report facts index for A-share and HK; supports scan and section retrieval with 2023-2025 historical reports and 2026+ daily incremental updates.

- **URL**: https://apify.com/huhoo/cn-hk-financial-facts-index.md
- **Developed by:** [dianming hu](https://apify.com/huhoo) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## CN/HK Financial Report Facts Index (2023-2025 + 2026+ Incremental)

This Actor is an Apify bridge to cube-mcp financial-report facts for China A-shares (CN) and Hong Kong stocks (HK).

### What this Actor does

- Supports semantic scan (`scan`) and full section retrieval (`section`) for CN/HK filings.
- Historical coverage: annual, semi-annual and quarterly data for **2023–2025**.
- Incremental updates: from **2026 onward**, synchronized daily.
- Best suited for Agent workflows: MCP/LLM callers can consume concise evidence rows with source traceability.

### Authentication model

The actor uses the Apify secret `cube_mcp_key` mapped as `MCP_API_KEY` in `.actor/actor.json`.

Users run the actor with normal business inputs only; they do not provide cuecue/MCP credentials directly.

### Input

#### Common fields

- `market` (required): one of `cn`, `hk`, `both` (default `cn`).
  - `both` runs both markets and merges results.
- `mode` (required): one of `scan`, `section` (default `scan`).
- `period` (optional): report period as string (default `2025`).
- `outputLanguage` (optional): `en` (default, Agent-friendly) or `zh`.
  - `en` returns translated/normalized `summary/resultText/sectionTitle`.
  - Chinese originals are preserved in `summaryZh`, `resultTextZh`, `sectionTitleZh`.

#### Scan mode (`mode: "scan"`)

- `query` (string, optional; required if no `anchor`)
- `anchor` (string, optional; required if no `query`)
- `defaultSectionKey` (optional): fallback section key when anchors are not provided (default `financial_report`)
- `limit` (optional, integer): 1..30, default `15`
- `autoSection` (optional, boolean): if `true`, auto-fetch section content for top scan rows
- `autoSectionLimit` (optional, integer): 1..5
- `focus` (optional): `default` (keep all) or `investment` (filter/rank by investment keywords)
- `focusKeywords` (optional, comma/semicolon/newline separated string)
- `focusKeywordMinMatch` (optional, integer): minimum keyword matches in `investment` mode (default `1`)
- `summaryMode` (optional): `true` (default) keeps compact output; `false` includes raw section fields where available

#### Section mode (`mode: "section"`)

- `stockCode` (required): stock code, e.g. `300098`
- `sectionKey` (required): section key, e.g. `financial_report`
- `period` (optional): report period, default `2025`
- `docKey` (optional): optional direct doc targeting
- `nodeId` (optional): optional direct node targeting
- `summaryMode` (optional): default `true`

### Output

#### Scan result fields (default)

Main fields:

- `market`, `mode`, `tool`, `period`, `query`, `anchor`
- `company`, `doc_key`, `node_id`
- `summary`, `resultText`, `sectionTitle`
- `score`
- `source`: `pdf_url`, `publish_date`, `doc_id`
- `focusMode`, `focusMatchCount`, `focusMatchedKeywords`, `focusScore`

Trace fields:

- `summaryZh`, `resultTextZh`, `sectionTitleZh`

No separate `...En` duplicate fields are emitted in this actor.

#### Section result fields

- `stockCode`, `sectionKey`, `period`
- `summary`, `resultText`, `source`
- `summaryZh`, `resultTextZh`

### Example inputs

#### 1) Scan (recommended)

```json
{
  "market": "cn",
  "mode": "scan",
  "query": "营收",
  "period": "2025",
  "limit": 10,
  "focus": "investment",
  "focusKeywordMinMatch": 1,
  "outputLanguage": "en"
}
```

#### 2) Section retrieval

```json
{
  "market": "cn",
  "mode": "section",
  "stockCode": "300098",
  "period": "2025",
  "sectionKey": "financial_report",
  "docKey": "cn_fr:300098:2025:annual_report",
  "nodeId": "n0005",
  "summaryMode": false
}
```

#### 3) Scan with auto section

```json
{
  "market": "cn",
  "mode": "scan",
  "query": "营收",
  "period": "2025",
  "limit": 10,
  "autoSection": true,
  "autoSectionLimit": 2,
  "outputLanguage": "en"
}
```

### Output example

```json
{
  "market": "cn",
  "mode": "scan",
  "tool": "scan_financial_report_evidence",
  "period": "2025",
  "query": "营收",
  "company": "300098",
  "doc_key": "cn_fr:300098:2025:annual_report",
  "node_id": "n0005",
  "sectionTitle": "1.1 Automotive Electronics",
  "summary": "In this section, the company operating revenue reached 857,566,178.58 CNY...",
  "resultText": "In this section, the company operating revenue reached 857,566,178.58 CNY...",
  "summaryZh": "在本章中，公司营业收入达到857,566,178.58元...",
  "resultTextZh": "在本章中，公司营业收入达到857,566,178.58元...",
  "sectionTitleZh": "1.1 汽车车载产品",
  "source": {
    "pdf_url": "http://static.cninfo.com.cn/finalpage/2026-04-18/1225118884.PDF",
    "publish_date": "2026-04-18",
    "doc_id": "1225118884"
  },
  "score": 0.81714
}
```

### API call (minimal)

```bash
curl -X POST "https://api.apify.com/v2/acts/<YOUR_ACTOR_ID>/runs?token=<APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "input": {
      "market": "cn",
      "mode": "scan",
      "query": "营收",
      "period": "2025",
      "limit": 5,
      "outputLanguage": "en"
    }
  }'
```

### FAQ

Q: Do users need to enter a cuecue/MCP key?\
A: No. End users use only actor inputs. The platform secret is configured by the actor owner as `MCP_API_KEY`.

Q: How should an Agent consume output?\
A: Use `summary`, `resultText`, and `sectionTitle` as primary fields. Keep `*Zh` fields (`summaryZh`, `resultTextZh`, `sectionTitleZh`) for traceability.

Q: Why might scan return fewer/no rows?\
A: Check `focus="investment"` and `focusKeywords` settings. If enabled, rows not matching enough investment keywords are filtered.

# Actor input Schema

## `mcpBaseUrl` (type: `string`):

Base URL of the MCP service, e.g. https://mcp.cuecue.cn. Full endpoint is combined as {base}{path}.

## `mcpPath` (type: `string`):

MCP route path for the financial facts index. Recommended: /api/fr\_fact\_index/mcp or /api/fr\_fact\_index/mcp/

## `mode` (type: `string`):

scan = semantic search by query or anchor; section = full section by stockCode + sectionKey.

## `market` (type: `string`):

cn = A-shares, hk = HK stocks, both = run both markets and merge outputs.

## `query` (type: `string`):

Natural language query for scan mode. Provide at least one of query or anchor.

## `defaultSectionKey` (type: `string`):

Used when scan result has no anchors for quick section jump.

## `autoSection` (type: `boolean`):

If enabled in scan mode, the actor will fetch section detail for top results automatically.

## `autoSectionLimit` (type: `integer`):

How many scan rows to auto-fetch section details for (scan mode only).

## `summaryMode` (type: `boolean`):

If enabled, Actor outputs only concise summary fields per row and hides raw large response objects.

## `outputLanguage` (type: `string`):

Default `en` for Agent-friendly English-adapted fields; Chinese originals are kept in suffix Zh fields.

## `focus` (type: `string`):

default = current behavior; investment = prioritize finance/valuation-oriented facts.

## `focusKeywords` (type: `string`):

Optional custom focus keywords, comma/semicolon/newline separated. Empty + investment focus uses built-in default keywords.

## `focusKeywordMinMatch` (type: `integer`):

When focus is investment, rows below this keyword match threshold are filtered out.

## `anchor` (type: `string`):

Optional anchor for scan mode, for example: mda, financial\_report, audit\_opinion, material\_matters.

## `period` (type: `string`):

Report year/period (supports 2023-2025 backfill and 2026+ daily incremental updates). If empty, defaults to 2025.

## `limit` (type: `integer`):

Number of rows returned in scan mode (clamped by server to 1..30).

## `stockCode` (type: `string`):

Required for section mode. Example: A-share 000630, HK stock 00388.

## `sectionKey` (type: `string`):

Required for section mode. Example: mda, financial\_report, audit\_opinion, material\_matters.

## `docKey` (type: `string`):

Optional in section mode. If provided with nodeId, actor uses docKey+nodeId directly.

## `nodeId` (type: `string`):

Used with docKey in section mode to fetch one node in full text.

## `userId` (type: `string`):

Optional billing/identity header for some environments.

## `tenantId` (type: `string`):

Optional tenant header for some environments.

## `xInternalToken` (type: `string`):

Optional internal gateway token.

## Actor input object example

```json
{
  "mcpBaseUrl": "https://mcp.cuecue.cn",
  "mcpPath": "/api/fr_fact_index/mcp",
  "mode": "scan",
  "market": "cn",
  "defaultSectionKey": "financial_report",
  "autoSection": false,
  "autoSectionLimit": 1,
  "summaryMode": true,
  "outputLanguage": "en",
  "focus": "default",
  "focusKeywordMinMatch": 1,
  "period": "2025",
  "limit": 15
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset items containing the scan/section results

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("huhoo/cn-hk-financial-facts-index").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("huhoo/cn-hk-financial-facts-index").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call huhoo/cn-hk-financial-facts-index --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=huhoo/cn-hk-financial-facts-index",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/yrnSlTdzWsX7wi5tv/builds/aFoTSwvBEyU9rAZHh/openapi.json
