# AKShare Financial Data (`research_master/akshare-financial-data`) Actor

Collect bounded stock, futures, options, fund, FX, convertible-bond, index, and crypto datasets through eight approved AKShare interfaces with flattened rows and separate run audits.

- **URL**: https://apify.com/research\_master/akshare-financial-data.md
- **Developed by:** [Research Master](https://apify.com/research_master) (community)
- **Categories:** AI, Agents, Integrations
- **Stats:** 2 total users, 0 monthly users, 94.4% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.59 / 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/actors/running/actors-in-store.md#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

## AKShare All Financial Data

Call every credential-free public data interface exposed by the Actor's pinned [AKShare](https://akshare.akfamily.xyz/) runtime. The current build pins `akshare==1.18.94` and discovers 1,062 callable interfaces at runtime, including financial statements, stocks, futures, options, funds, foreign exchange, bonds, indices, cryptocurrencies, macroeconomics, banking, energy, and other reference datasets.

Choose this Actor when you want broad AKShare coverage through one Apify API, Dataset, schedule, Task, or webhook. Choose a narrower ticker Actor when you need a standardized global quote schema. Use AKShare directly in Python when you need custom transformations inside the same process. This Actor preserves AKShare's source fields while adding validation, output limits, retries, normalized JSON, and run audits.

### Scope of "all data"

"All" means all top-level public functions exposed by the pinned AKShare package that can be called without a credential-like argument. It does not mean private, licensed, authenticated, or undocumented upstream data.

For `akshare==1.18.94`, the runtime catalog contains:

- 1,062 callable interfaces
- 8 curated presets with simpler, compatibility-oriented parameters
- 21 excluded functions whose name or signature contains a token, API key, Cookie, password, secret, or authorization parameter

The complete machine-readable list is saved as `CATALOG` in every run's default Key-Value Store. Use `catalogOnly: true` to retrieve it without calling any data interface.

Functions that contain an internal `url` or `uri` parameter remain callable with their AKShare default target, but callers cannot override that target. This prevents the Actor from becoming an arbitrary URL requester.

### Data coverage

The Actor exposes the breadth of AKShare rather than a single normalized market-data feed. The pinned `akshare==1.18.94` catalog spans securities markets, company fundamentals, derivatives, collective investments, fixed income, currencies, economic indicators, and reference data. Its largest AKShare module categories include economic data, stock features, stocks, indices, funds, futures, stock fundamentals, options, and bonds.

The sections below describe the practical coverage available through the runtime catalog. They are a guide to the kinds of data you can request, not a guarantee that every source has the same history, update frequency, fields, or availability.

#### Stocks and equity markets

| Market or dataset | Coverage | Typical data available | Representative interfaces |
| --- | --- | --- | --- |
| Mainland China A-shares | Shanghai, Shenzhen, and Beijing listings, including market-wide lists and individual securities | Real-time or delayed snapshots, daily history, intraday bars, adjusted prices, trading calendars, newly listed and delisted securities | `stock_zh_a_spot_em`, `stock_zh_a_hist`, `stock_zh_a_hist_tx`, `stock_zh_a_hist_min_em`, `stock_info_a_code_name` |
| A-share market features | Industries, concepts, sectors, rankings, capital flows, margin financing, block trades, abnormal-trading lists, announcements, and market statistics | Board constituents and history, northbound/southbound flows, individual and sector fund flows, disclosure records, market activity | Search `CATALOG` for `stock_board_`, `stock_sector_`, `stock_individual_`, `stock_margin_`, and other `stock_*` interfaces |
| Hong Kong stocks | Main-board and other Hong Kong listings, plus selected Stock Connect datasets | Spot quotes, daily history, intraday bars, profiles, dividends, valuation, financial reports, and connect activity | `stock_hk_spot_em`, `stock_hk_hist`, `stock_hk_hist_min_em`, `stock_financial_hk_report_em` |
| US stocks | US-listed shares available from AKShare's upstream providers | Market snapshots, daily history, intraday bars, company profiles, selected financial reports, and financial indicators | `stock_us_spot_em`, `stock_us_hist`, `stock_us_hist_min_em`, `stock_financial_us_report_em`, `stock_financial_us_analysis_indicator_em` |
| Cross-market equity reference data | Selected global rankings, market comparisons, corporate actions, and provider-specific equity lists | Symbols, names, classifications, calendars, profiles, dividends, repurchases, and other reference fields | Discover by keyword and category in `CATALOG`; availability is source-specific |

Stock interfaces do not share one universal symbol format. For example, an A-share function may expect `600519`, `sh600519`, or an exchange-specific symbol depending on the exact interface. Use the `signature` stored in `CATALOG` and the corresponding AKShare documentation before constructing a request.

Price adjustment also varies by interface. When an `adjust` parameter is available, confirm whether blank, forward-adjusted, or backward-adjusted prices are required for your analysis. Corporate-action and adjustment histories should be checked before comparing long time periods.

#### Listed-company fundamentals and financial statements

AKShare includes company-level research data; this Actor is not limited to price quotes. Depending on the market and upstream source, the catalog includes:

| Fundamental dataset | Typical contents | Representative interfaces or search terms |
| --- | --- | --- |
| Balance sheet | Assets, liabilities, shareholders' equity, report period, announcement date, and source-specific line items | `stock_financial_report_sina` with `symbol: "资产负债表"`; search `balance_sheet` and `stock_balance_` |
| Income statement | Revenue, operating costs, operating profit, total profit, net income, earnings per share, and source-specific line items | `stock_financial_report_sina` with `symbol: "利润表"`; search `profit_sheet`, `income`, and `stock_profit_` |
| Cash-flow statement | Operating, investing, and financing cash flows, cash changes, and source-specific line items | `stock_financial_report_sina` with `symbol: "现金流量表"`; search `cash_flow` and `stock_cash_` |
| Financial summaries and ratios | Profitability, growth, solvency, operating efficiency, per-share metrics, and multi-period financial abstracts | Search `financial_abstract`, `financial_analysis_indicator`, and the `stock_fundamental` category |
| Earnings disclosures | Periodic performance reports, preliminary results, earnings forecasts, reporting schedules, and disclosure statistics | Search `yjbb`, `yjkb`, `yjyg`, `report`, and `forecast` |
| Dividends and corporate actions | Cash dividends, stock dividends, allotments, repurchases, and selected adjustment-related records | Search `dividend`, `fhps`, and `repurchase` |
| Ownership and capital structure | Major shareholders, circulating shareholders, shareholder counts, institutional holdings, pledges, restricted-share releases, and equity changes | Search `holder`, `shareholder`, `pledge`, `restricted`, and `circulate` |
| Company and issuance information | Company profiles, business composition, IPO data, security changes, and selected announcements | Search `company`, `zygc`, `ipo`, `info`, and `notice` |
| Hong Kong and US fundamentals | Provider-specific reports and analytical indicators for supported Hong Kong and US companies | `stock_financial_hk_report_em`, `stock_financial_us_report_em`, `stock_financial_us_analysis_indicator_em` |

Financial-statement schemas follow the original source. The same accounting concept can have different Chinese or English field names across Sina, Eastmoney, exchange, Hong Kong, and US interfaces. Reports can also be restated after publication. For historical backtests, do not assume that the current response recreates exactly what was known on an earlier date; retain retrieval timestamps and use announcement dates or point-in-time filings where available.

#### Futures

Futures coverage includes China's major exchanges: China Financial Futures Exchange (CFFEX), Shanghai Futures Exchange (SHFE), Dalian Commodity Exchange (DCE), Zhengzhou Commodity Exchange (CZCE), Guangzhou Futures Exchange (GFEX), and Shanghai International Energy Exchange (INE). Selected overseas futures data is also available.

Available futures datasets include:

- Current domestic and foreign contract quotes
- Daily and intraday histories, main/continuous contracts, and contract mappings
- Trading calendars, contract specifications, fees, margin references, and exchange rules
- Member rankings, long and short positions, and position changes
- Inventories, warehouse receipts, registered warrants, deliveries, and settlement statistics
- Spot-futures comparisons and selected basis or derivative indicators

Start with `futures_zh_spot` for the curated domestic quote preset, or search the catalog for the `futures_` prefix and the `futures` and `futures_derivative` categories. Contract codes, exchange abbreviations, continuous-contract rules, and adjustment methods are interface-specific.

#### Options

Options data covers selected contracts on the Shanghai and Shenzhen stock exchanges, CFFEX, and domestic commodity exchanges. Depending on the source, interfaces provide:

- Contract and expiry-month lists for ETF, index, and commodity options
- Current quotes, daily history, and minute-level history
- Calls, puts, strike prices, expiries, underlying symbols, and contract metadata
- Greeks, implied volatility, risk indicators, premium/value analysis, and margin references
- Exchange-specific daily statistics and option-futures relationships

Representative entry points include `option_sse_codes_sina` and `option_current_em`. Search `CATALOG` for the `option_` prefix to see the full set. Options interfaces often have strict exchange-specific symbol and expiry formats; always inspect their native signatures.

#### Funds and asset-management products

Fund interfaces cover open-end mutual funds, exchange-traded funds (ETFs), listed open-end funds (LOFs), money-market funds, wealth-management or financial funds, graded funds, and selected Hong Kong funds. Typical datasets include:

- Current and historical NAV, cumulative NAV, market price, premium/discount, and returns
- Fund lists, rankings, classifications, scale, inception dates, and status
- Portfolio holdings, industry allocation, asset allocation, and major position changes
- Dividends, purchase and redemption status, fees, managers, and fund-company information
- ETF and LOF exchange histories and provider-specific intraday data

Use `fund_open_fund_info_em` for the curated open-fund preset. Other representative searches include `fund_etf_`, `fund_lof_`, `fund_money_`, `fund_portfolio_`, and the `fund` category.

#### Bonds and fixed income

Bond coverage includes selected government, policy-bank, local-government, corporate, enterprise, interbank, and exchange-traded bonds, as well as convertible bonds and repo markets. Available datasets can include:

- Bond lists, current quotes, historical prices, yields, maturities, and issuance data
- China government-bond and other yield curves, interbank market indicators, and repo rates
- Convertible-bond spot data, history, terms, conversion value/premium, issuance, redemption, and forced-redemption information
- Local-government and corporate issuance, underwriting, trading, and reference statistics

The curated `bond_zh_hs_cov_spot` interface returns exchange-traded convertible-bond quotes. Search `CATALOG` for `bond_`, `repo`, `yield`, and the `bond` category for the wider fixed-income catalog.

#### Foreign exchange and currencies

Foreign-exchange interfaces include selected spot currency pairs, historical exchange rates, and Bank of China quotation tables. Representative interfaces are `forex_spot_em` and `forex_hist_em`; the catalog also contains provider-specific currency and RMB exchange-rate datasets. Pair names, quote direction, and frequency vary by source and should not be assumed from the display name alone.

#### Indices

Index coverage includes domestic and global equity indices, sector and thematic indices, selected bond or commodity indices, and volatility-related measures. Depending on the index family, interfaces provide spot values, daily or intraday history, constituents, weights, valuation, and index metadata. The curated `stock_zh_index_daily_tx` preset is a simple historical entry point. Search `index_`, `stock_zh_index`, `stock_hk_index`, or the `index` category in `CATALOG` for provider-specific alternatives.

#### Macroeconomics, rates, and market context

The catalog contains a large set of macroeconomic and economic-statistics interfaces for China, the United States, Europe, Japan, and other economies. Coverage includes GDP, CPI, PPI, PMI, industrial activity, employment, trade, money supply, interest rates, central-bank indicators, confidence measures, and other provider-specific series. `macro_china_gdp` is one simple example. Banking, energy, spot-commodity, REIT, interest-rate, and reference-data modules extend the coverage beyond the main product groups above.

#### Cryptocurrencies

Cryptocurrency coverage is much narrower than the stock, fund, or macroeconomic catalogs. The pinned runtime exposes major cryptocurrency spot quotes through `crypto_js_spot`, plus CME Bitcoin and Bitcoin holdings-report interfaces (`crypto_bitcoin_cme` and `crypto_bitcoin_hold_report`). Treat these as selected reference datasets, not comprehensive exchange-by-exchange trades, order books, on-chain data, or a complete universe of tokens.

#### How to interpret the catalog

- An interface is a callable AKShare function, not necessarily a unique dataset. Multiple functions can expose the same market through different upstream providers, frequencies, or schemas.
- Coverage is source-specific. A market appearing above does not imply that every security, field, historical date, or frequency is available from every interface.
- Native interfaces preserve their exact AKShare signatures and source fields. The Actor does not force A-shares, Hong Kong stocks, US stocks, funds, or derivatives into one common schema.
- Search `CATALOG` by `interfaceName`, `category`, or keyword, then confirm units, symbol format, update timing, and examples in the AKShare data index.
- Upstream websites can revise schemas, throttle requests, temporarily fail, or discontinue endpoints even when the AKShare function remains present in the pinned package.

### Not suitable for

- Trading execution, order routing, or a sole buy/sell signal
- Guaranteed real-time, low-latency, exchange-certified, or SLA-backed feeds
- Interfaces that need third-party credentials, private subscriptions, login sessions, or Cookies
- Assuming every upstream site will remain stable across time
- Commercial redistribution without reviewing AKShare and each original source's rights and terms

AKShare is MIT-licensed, but its documentation states that the interfaces and data are mainly for academic research and that users must evaluate commercial risk. The underlying sources can impose separate conditions. This Actor does not remove those obligations.

### Quick start: listed-company financial statement

This native request retrieves Sina's balance-sheet history for `sh600600` and emits at most two rows:

```json
{
  "requests": [
    {
      "interfaceName": "stock_financial_report_sina",
      "parameters": {
        "stock": "sh600600",
        "symbol": "资产负债表"
      },
      "maxRows": 2
    }
  ],
  "maxTotalRows": 2,
  "requestTimeoutSecs": 90,
  "maxRetries": 1,
  "requestDelayMs": 500,
  "failFast": false
}
```

Native arguments must match the signature recorded in `CATALOG`. The same call can use positional arguments:

```json
{
  "requests": [
    {
      "interfaceName": "stock_financial_report_sina",
      "arguments": ["sh600600", "资产负债表"],
      "parameters": {},
      "maxRows": 2
    }
  ]
}
```

Prefer named `parameters` because they are easier to review when an AKShare signature changes.

### Macro and reference example

```json
{
  "requests": [
    {
      "interfaceName": "macro_china_gdp",
      "parameters": {},
      "maxRows": 5
    },
    {
      "interfaceName": "stock_info_a_code_name",
      "parameters": {},
      "maxRows": 5
    }
  ],
  "maxTotalRows": 10
}
```

### Curated presets

Eight frequently used interfaces retain the original Actor's guarded parameters and defaults:

| Product | Interface | Curated parameters |
| --- | --- | --- |
| Stock | `stock_zh_a_hist_tx` | `symbol`, `start_date`, `end_date`, `adjust` |
| Futures | `futures_zh_spot` | `symbol`, `market`, `adjust` |
| Options | `option_sse_codes_sina` | `series`, `option_type`, `expiry_month` |
| Fund | `fund_open_fund_info_em` | `symbol`, `indicator`, `period` |
| FX | `forex_hist_em` | `symbol` |
| Bond | `bond_zh_hs_cov_spot` | None |
| Index | `stock_zh_index_daily_tx` | `symbol`, `start_date`, `end_date` |
| Crypto | `crypto_js_spot` | None |

For these eight names, `nativeParameters: false` uses the curated adapter. Set `nativeParameters: true` only when you deliberately want the exact AKShare signature. Every other interface always uses its native signature.

### Find an interface and its signature

Run:

```json
{
  "catalogOnly": true
}
```

Then open the `CATALOG` output and search `interfaces` by `interfaceName` or `category`. Each entry contains:

- `signature`: the exact Python signature used for validation
- `parameters`: name, kind, required state, default value, and whether the caller may set it
- `category`: the originating AKShare module
- `curatedPreset`: whether the simpler Actor adapter is available

AKShare's [data index](https://akshare.akfamily.xyz/data/index.html) remains the source for interface meaning, units, symbols, and examples.

### Output normalization

The Actor writes only successful data rows to the default Dataset. Original columns remain top-level fields, including Chinese financial-statement fields. Actor metadata uses an `_akshare_` prefix:

| Field | Meaning |
| --- | --- |
| `record_type` | Always `akshare_data` |
| `_akshare_interface` | Called function name |
| `_akshare_category` | AKShare module category |
| `_akshare_request_index` | One-based request position |
| `_akshare_row_number` | One-based normalized row position |
| `_akshare_source_index` | Original DataFrame/Series index when available |
| `_akshare_retrieved_at` | UTC retrieval timestamp |
| `_akshare_result_type` | Original result type such as `dataframe`, `series`, `dict`, or `list` |

DataFrame, Series, ndarray, dictionary, list, tuple, set, and scalar results are converted to JSON-safe rows. A source field that collides with Actor metadata is renamed with a `data_` prefix.

Diagnostics remain non-business records:

| Storage | Record | Purpose |
| --- | --- | --- |
| Default Dataset | AKShare data rows | Successful normalized results only |
| Key-Value Store | `CATALOG` | Runtime interface inventory and signatures |
| Key-Value Store | `RUN_AUDIT` | Arguments, parameters, attempts, failures, row counts, and truncation |

### Limits and failure behavior

- Maximum 10 requests per run
- Maximum 25 positional arguments and 100 named parameters per request
- Maximum 5,000 emitted rows per request and 10,000 per run
- Maximum 32 KiB of JSON arguments and parameters per request
- Maximum request timeout of 300 seconds and two retries
- Calls are sequential, with an optional delay up to 10 seconds
- Recognized date ranges cannot exceed 3,660 days
- Secret-like argument names and user-supplied URL targets are rejected

`maxRows` truncates output only after AKShare returns. It does not guarantee the upstream interface transfers that number of rows. Use bounded date or symbol parameters whenever the interface supports them.

With `failFast: false`, a failed call is written to `RUN_AUDIT` and later requests continue. The Actor fails if validation fails, `failFast` stops the run, or no non-catalog request succeeds. A successful interface can legitimately emit zero rows.

### Data quality and responsible use

- Field names, units, coverage, update timing, and corrections are controlled by AKShare and its upstream sources.
- Pinning AKShare makes interface discovery reproducible, but upstream page changes can still break individual calls.
- Row order is preserved. Truncation keeps the first rows AKShare returns, not necessarily the newest rows.
- For investment research, cross-check material financial-statement figures, restatements, dividends, and corporate actions against exchange filings and audited reports.
- Use broker or exchange-authorized data for execution prices and time-sensitive trading decisions.

AKShare resources: [documentation](https://akshare.akfamily.xyz/) and [GitHub](https://github.com/akfamily/akshare).

# Actor input Schema

## `catalogOnly` (type: `boolean`):

Save CATALOG and skip every data request. This overrides the requests field.

## `requests` (type: `array`):

Up to 10 sequential calls. Find exact interface names and native signatures in the CATALOG output or AKShare documentation.

## `maxTotalRows` (type: `integer`):

Hard global cap across all requests. Later requests stop when the cap is reached.

## `requestTimeoutSecs` (type: `integer`):

Maximum wait for one upstream AKShare interface call.

## `maxRetries` (type: `integer`):

Retry transient interface errors. A timed-out background call is not retried.

## `requestDelayMs` (type: `integer`):

Polite delay between separate AKShare interface calls.

## `failFast` (type: `boolean`):

When disabled, later requests continue and every failure is recorded in RUN\_AUDIT.

## Actor input object example

```json
{
  "catalogOnly": false,
  "requests": [
    {
      "interfaceName": "stock_zh_a_hist_tx",
      "parameters": {
        "symbol": "sz000001",
        "start_date": "20240102",
        "end_date": "20240105",
        "adjust": ""
      },
      "maxRows": 100
    }
  ],
  "maxTotalRows": 5000,
  "requestTimeoutSecs": 90,
  "maxRetries": 1,
  "requestDelayMs": 500,
  "failFast": false
}
```

# Actor output Schema

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

Default Dataset with one item per normalized result row.

## `catalog` (type: `string`):

Every exposed interface in the pinned AKShare version, including signatures, defaults, categories, restrictions, and curated presets.

## `runAudit` (type: `string`):

Request arguments, row counts, truncation, attempts, failures, and run totals.

# 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("research_master/akshare-financial-data").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("research_master/akshare-financial-data").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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 research_master/akshare-financial-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,research_master/akshare-financial-data"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/79ewYKVJ3dhUXNAd0/builds/2rfNq5riobyMaXymC/openapi.json
