
东方财富板块行情数据源
Use when the user asks about A 股 market sectors, industry/concept boards, gainers/losers ranking, market heatmap or overall market breadth (keywords:板块、行业板块、概念板块、地域板块、涨幅榜、跌幅榜、热力图、风云图、哪些板块涨了、市场概览、板块排行). Provides aggregated board-level and market-level quotes via 东方财富 push2 接口. Do NOT use for single-stock prices, K-line, minute or tick data — those go to the stock-market datasource. Do NOT use for US stocks, crypto, or fund NAV.
Skill 文件
| name | eastmoney-datasource |
|---|---|
| title | 东方财富板块行情数据源 |
| description | Use when the user asks about A 股 market sectors, industry/concept boards, gainers/losers ranking, market heatmap or overall market breadth (keywords:板块、行业板块、概念板块、地域板块、涨幅榜、跌幅榜、热力图、风云图、哪些板块涨了、市场概览、板块排行). Provides aggregated board-level and market-level quotes via 东方财富 push2 接口. Do NOT use for single-stock prices, K-line, minute or tick data — those go to the stock-market datasource. Do NOT use for US stocks, crypto, or fund NAV. |
| tools | curl |
东方财富板块行情数据源
通过 curl tool 调用东方财富行情接口,获取 A 股板块级和市场级的聚合行情:板块涨跌排行、个股涨跌幅榜、板块热力图原料。
职责边界:本数据源负责「整体/板块/榜单」这类聚合视图。单只股票的具体数值、K 线、分时、逐笔,请用
stock-market-datasource数据源,不要用本源查个股明细。
鉴权
东方财富行情接口无需鉴权,直接发请求即可,不要传任何 token 或 API key。
通用约定
- Base URL:
https://push2.eastmoney.com/api/qt/clist/get- 全市场个股榜可能 302 跳转到
https://push2delay.eastmoney.com/...(行情延迟约 15 分钟)。如主域请求失败,可直接改用push2delay域名。
- 全市场个股榜可能 302 跳转到
- 请求方法:
GET - 响应格式:JSON,结构为
{ "rc": 0, "data": { "total": 总数, "diff": [ {字段...}, ... ] } } - 建议带 Referer 头提升稳定性:
Referer: https://quote.eastmoney.com/ - 数值约定:所有请求都带
fltt=2,返回的数值已经是最终小数,无需再做单位换算:f3(涨跌幅):10.0表示 +10.00%,-3.21表示 -3.21%f2(最新价 / 板块指数):直接是元 / 点位f20(总市值)、f21(流通市值):单位是元,展示为「亿」需 ÷ 1e8
- 分页:
pn= 页码(从 1 开始),pz= 每页条数(最大约 100)。响应里的data.total是总条数。 - 排序:
fid= 排序字段(涨跌幅用f3),po= 排序方向(1降序=涨幅榜,0升序=跌幅榜) - ⚠️ 响应体积上限:curl 工具单次响应最多约 50KB,超出会被截断导致 JSON 不完整、无法解析。因此:(1)
fields只取需要的字段;(2)pz不要超过 30~40;需要更多数据时分页串行取,每页同样 ≤ 40 条。
通用查询参数
| 参数 | 取值 | 说明 |
|---|---|---|
pn | 1, 2, ... | 页码 |
pz | ≤ 100 | 每页条数 |
po | 1 / 0 | 1=降序(涨幅榜),0=升序(跌幅榜) |
fid | f3 | 排序字段,涨跌幅 |
fltt | 2 | 固定,返回最终小数 |
invt | 2 | 固定 |
fs | 见下表 | 市场/板块选择器 |
fields | 逗号分隔 | 需要返回的字段 |
fs 市场选择器
| 目标 | fs 取值 |
|---|---|
| 行业板块 | m:90+t:2+f:!50 |
| 概念板块 | m:90+t:3+f:!50 |
| 地域板块 | m:90+t:1+f:!50 |
| 沪深 A 股(全市场个股) | m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23 |
| 指定板块的成分股 | b:板块代码+f:!50(如 b:BK1623+f:!50) |
注意:
fs里的+是接口要求的分隔符,请原样保留,不要替换成空格或编码。
常用字段(fields)
| 字段 | 含义 |
|---|---|
f12 | 代码(板块为 BKxxxx,个股为 6 位代码) |
f14 | 名称 |
f3 | 涨跌幅 %(已是小数) |
f2 | 最新价 / 板块指数 |
f13 | 市场:1=上海,0=深圳(用于拼前缀 sh/sz) |
f20 | 总市值(元) |
f21 | 流通市值(元) |
f104 | 板块内上涨家数 |
f105 | 板块内下跌家数 |
f128 | 领涨股名称 |
f140 | 领涨股代码 |
f136 | 领涨股涨跌幅 % |
⚠️ 速率限制策略(必须遵守)
东方财富接口有反爬限制,请控制请求频率:
- 串行请求:同一时间只发 1 个 curl 请求,等返回后再发下一个。严禁并行发送多个请求
- 请求间隔:每两个请求之间至少间隔 1 秒
- 控制单页大小:受 10KB 响应上限约束,
pz取 30~40、fields只取必要字段;想看「涨了哪些 / 跌了哪些」用涨幅榜(po=1)+ 跌幅榜(po=0)两次小请求即可,不要一次拉全部板块 - 个股全市场分页要克制:沪深 A 股有 5000+ 只,需要榜单时取前 30
40 名即可;做热力图最多串行翻 35 页(每页 ≤40),不要试图拉完整 5000 只 - 429 / 空响应重试:收到 429 或空结果后等待 30 秒再重试,严禁立即重试
- 数据复用:同一轮对话里已取到的板块列表、榜单结果应缓存复用,不要重复请求
常用接口
本数据源只有一个 endpoint(clist/get),通过不同 fs / 排序参数实现不同查询。
1. 行业板块涨跌排行(含热力图原料)
GET https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=30&po=1&np=1&fltt=2&invt=2&fid=f3&fs=m:90+t:2+f:!50&fields=f12,f14,f3,f104,f105,f128,f136参数:
| 参数名 | 位置 | 必填 | 说明 |
|---|---|---|---|
fs | query | 是 | m:90+t:2+f:!50=行业板块;概念用 t:3,地域用 t:1 |
po | query | 是 | 1=涨幅榜,0=跌幅榜 |
pz | query | 是 | 受 10KB 上限约束,取 30~40;要涨跌两头就发两次(po=1 / po=0) |
关键返回字段:
| JSON Path | 类型 | 说明 |
|---|---|---|
data.total | number | 板块总数 |
data.diff[].f12 | string | 板块代码(BKxxxx) |
data.diff[].f14 | string | 板块名称 |
data.diff[].f3 | number | 涨跌幅 %(已是小数) |
data.diff[].f104 | number | 上涨家数 |
data.diff[].f105 | number | 下跌家数 |
data.diff[].f128 | string | 领涨股名称 |
data.diff[].f136 | number | 领涨股涨跌幅 % |
2. 沪深个股涨幅 / 跌幅榜(含市值)
GET https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f13,f14,f2,f3,f20,f21参数:
| 参数名 | 位置 | 必填 | 说明 |
|---|---|---|---|
fs | query | 是 | 沪深 A 股全市场选择器 |
po | query | 是 | 1=涨幅榜,0=跌幅榜 |
pz | query | 是 | 榜单一般取 10~50;做全市场热力图时 ≤100 串行翻页 |
关键返回字段:
| JSON Path | 类型 | 说明 |
|---|---|---|
data.total | number | 个股总数(约 5500) |
data.diff[].f12 | string | 6 位股票代码 |
data.diff[].f13 | number | 市场:1=上海,0=深圳 |
data.diff[].f14 | string | 股票名称 |
data.diff[].f2 | number | 最新价(元) |
data.diff[].f3 | number | 涨跌幅 %(已是小数) |
data.diff[].f20 | number | 总市值(元,÷1e8 为亿) |
data.diff[].f21 | number | 流通市值(元) |
拼完整代码:
f13=1→sh{f12},f13=0→sz{f12}。需要查某只票的明细时,把代码交给stock-market-datasource数据源。
3. 指定板块的成分股
GET https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=50&po=1&np=1&fltt=2&invt=2&fid=f3&fs=b:BK1623+f:!50&fields=f12,f13,f14,f2,f3参数:
| 参数名 | 位置 | 必填 | 说明 |
|---|---|---|---|
fs | query | 是 | b:板块代码+f:!50,板块代码来自接口 1 的 f12 |
关键返回字段:同接口 2 的个股字段(f12 f13 f14 f2 f3)。
调用示例
场景:"今天有哪些板块涨了,哪些跌了?"
- 查涨幅榜前几名:
curl(url = "https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=15&po=1&np=1&fltt=2&invt=2&fid=f3&fs=m:90+t:2+f:!50&fields=f12,f14,f3,f128,f136", X = "GET", H = ["Referer: https://quote.eastmoney.com/"])- 再发一次跌幅榜(把
po=1改为po=0),合并得到「领涨板块」和「领跌板块」。每个板块展示:名称f14、涨跌幅f3%、领涨股f128。
场景:"今日涨幅榜前 10"
curl(url = "https://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=10&po=1&np=1&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f13,f14,f2,f3", X = "GET", H = ["Referer: https://quote.eastmoney.com/"])跌幅榜把 po=1 改为 po=0 即可。
场景:"今日股市热力图 / 风云图"
推荐板块级热力图(轻量):用接口 1 取行业板块的 f14 + f3,用 treemap 渲染——每个方块=一个板块,颜色按 f3 涨跌幅(红涨绿跌)。受 10KB 上限约束,单次取 30~40 个板块;要覆盖更多就按 po=1 取涨幅前 N、再按 po=0 取跌幅前 N 合并,足够呈现市场冷热。
如需个股级热力图,用接口 2 的 f20(市值)做方块大小、f3 做颜色,按 pz=40 串行翻 3~5 页取主要个股(遵守速率与体积限制,不要拉满全市场)。
错误处理
| 现象 | 含义 | 应对方式 |
|---|---|---|
| HTTP 302 跳转 | 主域转延迟域 | 改用 https://push2delay.eastmoney.com/... 重发 |
| HTTP 429 | 触发限频 | 等待 30 秒后重试,不要立即重试 |
data.diff 为 null 或空 | 该 fs/参数无数据 | 检查 fs 选择器是否正确(+ 是否被错误编码) |
| 返回非 JSON / HTML | 被反爬拦截 | 加上 Referer 头后重试;仍失败则告知用户暂时取不到 |
注意事项
- 接口为非官方公开行情接口,字段和可用性可能随东方财富调整而变化;遇到字段缺失时如实告知用户。
- 非交易时间返回的是最近收盘 / 延迟数据。
- 涨跌停板:主板 ±10%、创业板/科创板 ±20%、ST ±5%,
f3已反映真实涨跌幅。 - 再次强调职责边界:板块/榜单/热力图走本源;个股的实时价、盘口、K 线、分时、逐笔走
stock-market-datasource数据源。