EastMoney APIfund.eastmoney.com ↗
Access Chinese mutual fund data via the EastMoney Fund API: search funds, rankings, NAV history, holdings, and dividends for 6-digit fund codes.
What is the EastMoney API?
The EastMoney Fund API exposes 6 endpoints covering Chinese mutual fund search, performance rankings, detailed fund profiles, historical NAV records, top-10 stock holdings, and dividend announcements. The get_fund_details endpoint alone returns asset allocation breakdowns, fund manager work history, and performance evaluation metrics in a single call, all identified by a 6-digit fund code.
curl -X GET 'https://api.parse.bot/scraper/2423b196-cb7a-40e0-a656-00eff12c8f4c/search_fund?query=%E6%B6%88%E8%B4%B9' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace fund-eastmoney-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: EastMoney Fund API — search, rank, drill into holdings, NAV history, and dividends."""
from parse_apis.eastmoney_fund_api import EastMoney, FundType, SortField, FundNotFound
client = EastMoney()
# List top funds ranked by 1-year return, filtered to stock funds only.
for fund in client.funds.list(fund_type=FundType.STOCK, sort_field=SortField.RETURN_1Y, limit=3):
print(fund.name, fund.code, fund.return_1y)
# Search for funds by keyword, then drill into the first result's details.
result = client.funds.search(query="消费", limit=1).first()
if result:
detail = result.details()
print(detail.name, detail.rate, detail.is_money_fund)
for mgr in detail.current_managers[:2]:
print(mgr.name, mgr.work_time, mgr.fund_size)
# Construct a fund by code and list its top stock holdings.
fund = client.fund(code="110011")
for holding in fund.holdings(limit=5):
print(holding.stock_name, holding.stock_code, holding.percentage)
# Get recent NAV history for the fund.
for nav in fund.nav_history(limit=3):
print(nav.date, nav.unit_nav, nav.daily_return)
# List dividend announcements for the same fund.
for div in fund.dividends(limit=3):
print(div.title, div.publish_date)
# Typed error handling: catch FundNotFound on a bad code.
try:
bad_detail = client.fund(code="000000").details()
print(bad_detail.name)
except FundNotFound as exc:
print(f"Fund not found: {exc.fund_code}")
print("exercised: funds.list / funds.search / details / holdings / nav_history / dividends")Full-text search across all funds by keyword matching fund code, fund name, or pinyin abbreviation. Returns an array of matching fund objects with basic info (code, name, fund company, manager, latest NAV). An empty Datas array means no match was found for the query.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (fund code, fund name, or pinyin abbreviation) |
{
"type": "object",
"fields": {
"Datas": "array of matching fund objects with CODE, NAME, FundBaseInfo",
"ErrCode": "integer status code (0 = success)"
},
"sample": {
"data": {
"Datas": [
{
"JP": "WJXFCZ",
"CODE": "519193",
"NAME": "万家消费成长",
"CATEGORY": 700,
"CATEGORYDESC": "基金",
"FundBaseInfo": {
"DWJZ": 1.8151,
"FSRQ": "2026-06-10",
"JJGS": "万家基金",
"JJJL": "高源",
"FCODE": "519193",
"FTYPE": "股票型",
"FUNDTYPE": "001",
"SHORTNAME": "万家消费成长"
}
}
],
"ErrMsg": "fromes",
"ErrCode": 0
},
"status": "success"
}
}About the EastMoney API
Fund Search and Rankings
The search_fund endpoint accepts a keyword — fund code, Chinese name, or pinyin abbreviation — and returns matching fund objects including CODE, NAME, and FundBaseInfo. The get_fund_list endpoint returns paginated rankings across fund types (gp for stock, zq for bond, qdii, fof, and others), sortable by return period fields like 1nzf (1-year return) or 3yzf (3-month return). The response includes allRecords and allPages for pagination control alongside per-fund NAV and return metrics.
Fund Details and Asset Allocation
get_fund_details takes a single fund_code parameter and returns a detailed profile: Data_assetAllocation breaks down the portfolio by stocks, bonds, and cash; Data_currentFundManager is an array of manager objects with name, workTime, and fundSize; and Data_performanceEvaluation contains scored performance metrics. The latest_nav_info object provides the most recently reported NAV without requiring a separate history call.
Historical NAV and Holdings
get_fund_historical_nav returns daily NAV records in LSJZList with optional start_date and end_date filters in YYYY-MM-DD format. Omitting both dates returns the most recent records first. TotalCount tells you how many records exist across all pages. The get_fund_holdings endpoint returns the top 10 disclosed stock positions — stock_code, stock_name, percentage, shares, and value — with optional year and month filters for specific semi-annual reporting periods; note that year and month must be supplied together, and empty results indicate no disclosure exists for that period.
Dividends and Announcements
get_dividend_info returns paginated dividend and split announcement records. Each object in Data includes FUNDCODE, TITLE, and PUBLISHDATE. TotalCount indicates the full announcement history depth. An ErrCode of 0 confirms a successful response across all endpoints that use this convention.
The EastMoney API is a managed, monitored endpoint for fund.eastmoney.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when fund.eastmoney.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official fund.eastmoney.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a fund screener that ranks Chinese mutual funds by 1-year or 3-month return using
get_fund_listsort fields. - Track daily NAV movements for a portfolio of funds by polling
get_fund_historical_navwith date range filters. - Analyze fund manager tenure and AUM across multiple funds using
Data_currentFundManagerfromget_fund_details. - Monitor top-10 holdings changes across semi-annual periods using the
yearandmonthfilters inget_fund_holdings. - Display dividend history for a fund in a financial dashboard using
get_dividend_infowith pagination. - Search funds by pinyin abbreviation via
search_fundto support autocomplete in a Chinese-language investment app. - Compare asset allocation between bond and equity funds using
Data_assetAllocationfromget_fund_details.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does EastMoney provide an official developer API for fund.eastmoney.com?+
What does `get_fund_holdings` return, and what happens if I filter by a period with no disclosure?+
stock_code, stock_name, percentage, shares, and value. If you supply a year and month combination that corresponds to a period with no filing, the holdings array will be empty. The year and month parameters must always be supplied together for period filtering to take effect.Does the API cover fund types beyond Chinese domestic funds — for example, ETFs listed on Hong Kong exchanges or offshore QDII sub-fund details?+
gp), bond (zq), hybrid (hh), index (zs), QDII, LOF, and FOF funds searchable on fund.eastmoney.com. Detailed sub-fund breakdowns for QDII structures or HK-listed ETFs are not currently exposed. You can fork this API on Parse and revise it to add endpoints targeting those specific fund categories.How far back does the NAV history go, and how is it paginated?+
get_fund_historical_nav returns records newest-first by default. You can narrow the range with start_date and end_date in YYYY-MM-DD format. The TotalCount field in the response tells you the total number of daily records available across all pages, and page_size controls how many appear per page. Coverage depth depends on how long a given fund has been in operation.