with one click
fund-holdings
Fetch ETF/fund holding details from Eastmoney (天天基金)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Fetch ETF/fund holding details from Eastmoney (天天基金)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Xiaohongshu (小红书) browser automation skill. Use when browsing/searching content, extracting post data, or interacting with the platform via playwright. Requires pre-authenticated storage state.
Chinese traditional calendar and BaZi (Four Pillars of Destiny) skill. Provides CLI scripts for birth chart analysis, marriage compatibility, and auspicious date selection. Wraps the china-testing/bazi library with lunar-python.
Ctrip (携程) hotel price query tool. Use when checking hotel prices, comparing rates, or monitoring price changes on Ctrip via Playwright browser automation. Requires pre-authenticated storage state.
Amap (Gaode Maps) Web Service API skill. Provides CLI scripts for POI search, route planning, geocoding, and weather queries. Zero dependencies — uses Node.js native fetch (Node 18+).
Single-file HTML slide-deck template for Tao Te Ching chapter decks — ink-style, 10-page narrative, hand-rolled engine, reusable CSS variables and animation classes
Send emails via QQ Mail SMTP using nodemailer. Use when sending notifications, reports, or alerts via email.
| name | fund-holdings |
| scope | langsensei |
| description | Fetch ETF/fund holding details from Eastmoney (天天基金) |
| version | 1.0.0 |
Fetch ETF and fund portfolio holding details via Eastmoney's Tiantian Fund (天天基金) public API. No API key required.
GET https://fundf10.eastmoney.com/FundArchivesDatas.aspx
Parameters:
type = jjcc # 股票投资明细
code = {fund_code} # e.g. 512800
topline = 20 # number of top holdings to return
Headers:
Referer: https://fundf10.eastmoney.com
Response is JavaScript variable assignment containing HTML table. Parse the HTML to extract holdings data.
The response format is:
var apidata={ content:"<div>...</div>", arryear:[2025,2024,...], curyear:2025 };
Each quarter's holdings are in a separate <table> within the HTML. Key fields per row:
import requests
import re
def get_fund_holdings(fund_code, top=20):
"""Fetch top holdings for an ETF/fund."""
url = "https://fundf10.eastmoney.com/FundArchivesDatas.aspx"
params = {"type": "jjcc", "code": fund_code, "topline": top}
headers = {"Referer": "https://fundf10.eastmoney.com"}
r = requests.get(url, params=params, headers=headers)
# Extract first quarter's data (most recent)
# Parse HTML table rows for holdings
content = r.text
# Find all <tr> rows with stock data
rows = re.findall(
r'<td>(\d+)</td>.*?r/(\d\.\d+)\'?>(\d{6})</a>.*?'
r'class=\'tol\'.*?>(.+?)</a>.*?'
r"class='tor'>(\d+\.\d+%)</td>",
content, re.DOTALL
)
holdings = []
for row in rows:
seq, market, code, name, weight = row
holdings.append({
"seq": int(seq),
"code": code,
"name": name,
"market": int(market.split(".")[0]), # 0=SZ, 1=SH
"weight": weight
})
return holdings
# Example: 银行ETF (512800)
holdings = get_fund_holdings("512800")
for h in holdings[:10]:
print(f"{h['name']} ({h['code']}) — {h['weight']}")