爱盯盘插件行情接口整理
本文记录一次对 Chrome 插件“爱盯盘-股票盯盘-基金助手”的接口分析。插件版本为 2.31.1。这里只整理可复用的行情、基金、板块和市场热度接口,不展开插件作者自己的登录、云同步、订阅后台接口。
整体结论:
- 股票、ETF、板块、K 线主体来自东方财富接口。
- 场外基金估值和净值来自天天基金/东方财富基金接口。
- 市场热度、涨跌分布、热门股票来自同花顺接口。
- 涨停题材来自大智慧接口。
- 插件自身后台主要用于登录、配置同步、订阅等,不是行情源。
接口多为公开网页或 App 接口,稳定性不保证。实际抓取时要控制频率,设置 Referer 和常规 User-Agent,不要高并发。
通用约定
东方财富 secid 常见格式:
1.600519 上海 A 股
0.000001 深圳 A 股
1.516820 上海 ETF
0.159915 深圳 ETF
116.00700 港股
105.AAPL 美股
90.BKxxxx 板块
东方财富 quote 字段常见含义:
| 字段 | 含义 |
|---|---|
f12 |
证券代码 |
f13 |
市场编号 |
f14 |
名称 |
f2 |
最新价 |
f3 |
涨跌幅,百分比数值 |
f4 |
涨跌额 |
f5 |
成交量 |
f6 |
成交额 |
f8 |
换手率 |
f9 |
市盈率 |
f10 |
量比 |
f18 |
昨收 |
f20 |
总市值 |
f21 |
流通市值 |
f22 |
涨速 |
f25 |
年初至今涨跌幅 |
f62 |
主力净流入 |
f100 |
所属行业 |
f145 |
基金或特殊品种相关字段,插件用于识别场外基金/联接场景 |
f265 |
扩展字段,插件保留 |
f266 |
扩展字段,插件保留 |
插件把行情行映射成类似结构:
{
"code": "600519",
"name": "贵州茅台",
"price": 1500.0,
"changePercent": 1.23,
"marketValue": 1880000000000,
"volume": 123456789,
"ytdChangePercent": 12.34,
"f13": 1,
"codeId": "1.600519"
}
股票和 ETF 实时行情
接口:
https://push2delay.eastmoney.com/api/qt/ulist.np/get
典型参数:
params = {
"fltt": "2",
"fields": "f12,f13,f14,f2,f3,f4,f18,f20,f25,f6,f8,f10,f9,f22,f62,f100,f145,f265,f266",
"secids": "1.600519,0.000001,1.516820",
}
关键参数:
| 参数 | 说明 |
|---|---|
secids |
逗号分隔的证券 ID |
fields |
返回字段列表 |
fltt=2 |
数值格式,返回小数形式 |
返回结构:
{
"rc": 0,
"rt": 10,
"data": {
"total": 3,
"diff": [
{
"f12": "600519",
"f13": 1,
"f14": "贵州茅台",
"f2": 1500.0,
"f3": 1.23
}
]
}
}
股票搜索
接口:
https://searchapi.eastmoney.com/api/Info/Search
典型参数:
params = {
"appid": "el1902262",
"type": 14,
"token": "<eastmoney_search_token>",
"and14": "MultiMatch/Name,Code,PinYin/茅台/true",
"returnfields14": (
"Name,Code,PinYin,MarketType,JYS,MktNum,JYS4App,"
"MktNum4App,ID,Classify,IsExactMatch,SecurityType,SecurityTypeName"
),
"pageIndex14": 1,
"pageSize14": 20,
"isAssociation14": "false1640928200409",
}
token 是东方财富搜索接口的固定参数,插件源码里有硬编码值。公开笔记里建议写成占位符,实际使用时从页面或客户端请求里确认。
返回结构通常是搜索结果列表,核心字段:
| 字段 | 说明 |
|---|---|
Name |
名称 |
Code |
代码 |
PinYin |
拼音 |
MarketType |
市场类型 |
MktNum / MktNum4App |
东方财富市场编号 |
SecurityType |
证券类型 |
SecurityTypeName |
类型名称 |
IsExactMatch |
是否精确匹配 |
分时走势
单日分时接口:
https://push2delay.eastmoney.com/api/qt/stock/trends2/get
五日分时接口:
https://push2his.eastmoney.com/api/qt/stock/trends2/get
典型参数:
params = {
"secid": "1.600519",
"fields1": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14",
"fields2": "f51,f53,f56,f58",
"iscr": 0,
"iscca": 0,
"ndays": 1, # 五日分时用 5
}
返回结构:
{
"data": {
"code": "600519",
"market": 1,
"name": "贵州茅台",
"preClose": 1480.0,
"trendsTotal": 241,
"trends": [
"2026-07-10 09:30,1490.00,1490.00,123456,184000000"
]
}
}
trends 是字符串数组。插件使用时主要取:
| 位置 | 含义 |
|---|---|
| 第 1 列 | 时间 |
| 第 2 列 | 价格 |
| 第 4 列 | 成交量或成交额相关字段,取决于接口字段 |
K 线
东方财富 K 线接口:
https://push2his.eastmoney.com/api/qt/stock/kline/get
典型参数:
params = {
"secid": "1.600519",
"klt": 101,
"fqt": 1,
"end": "20260710",
"iscca": 1,
"fields1": "f1,f2,f3,f4,f5",
"fields2": "f51,f52,f53,f54,f55,f56,f57,f59",
"ut": "f057cbcbce2a86e2866ab8877db1d059",
"forcect": 1,
"lmt": 400,
}
klt 映射:
| 周期 | klt |
|---|---|
| 日 K | 101 |
| 周 K | 102 |
| 月 K | 103 |
| 季 K | 104 |
| 年 K | 106 |
| 120 分 | 120 |
| 60 分 | 60 |
| 30 分 | 30 |
| 15 分 | 15 |
| 5 分 | 5 |
返回结构:
{
"data": {
"code": "600519",
"market": 1,
"name": "贵州茅台",
"klines": [
"2026-07-10,1480.00,1500.00,1510.00,1470.00,123456,1840000000,2.70,1.35,20.00,0.50"
]
}
}
klines 每行通常包含日期、开盘、收盘、最高、最低、成交量、成交额、振幅、涨跌幅、涨跌额、换手率等。
插件在东方财富 K 线失败时会用新浪兜底:
https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData
典型参数:
params = {
"symbol": "sh600519",
"scale": "240",
"ma": "no",
"datalen": 401,
}
板块列表
接口:
https://push2delay.eastmoney.com/api/qt/clist/get
插件中的概念板块参数:
params = {
"pn": 1,
"pz": 2000,
"po": 1,
"np": 3,
"fid": "f3",
"fs": "m:90+t:3",
"fields": (
"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,"
"f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152,"
"f100,f103"
),
"fltt": 2,
"invt": 2,
"ut": "b2884a393a59ad64002292a3e90d46a5",
}
关键参数:
| 参数 | 说明 |
|---|---|
fs=m:90+t:3 |
概念板块 |
fs=b:MK0878 |
插件中用于另一个板块集合 |
fid=f3 |
按涨跌幅排序 |
pn / pz |
页码和每页数量 |
返回结构仍是:
{
"data": {
"total": 400,
"diff": [
{
"f12": "BKxxxx",
"f14": "某概念",
"f3": 2.34,
"f62": 123456789
}
]
}
}
注意:这个接口可以通过 fid 改排序字段。和资金流页面不同,插件这里默认按 f3 涨跌幅排序。
板块成分股
接口:
https://push2delay.eastmoney.com/api/qt/clist/get
典型参数:
params = {
"pn": 1,
"pz": 300,
"po": 1,
"np": 3,
"fid": "f3",
"fs": "b:BKxxxx",
"fields": "f12,f14,f2,f3,f4,f25,f20,f13,f18,f6,f145,f100,f265,f266",
"fltt": 2,
"invt": 2,
"ut": "b2884a393a59ad64002292a3e90d46a5",
}
返回结构:
{
"data": {
"total": 100,
"diff": [
{
"f12": "600519",
"f13": 1,
"f14": "贵州茅台",
"f2": 1500.0,
"f3": 1.23,
"f20": 1880000000000
}
]
}
}
ETF 跟踪指数
接口:
https://datacenter.eastmoney.com/stock/etfselector/api/data/get
按基金代码查跟踪指数:
params = {
"type": "RPTA_APP_ETFSELECT",
"sty": "DERIVE_INDEX_CODE,INDEXNAME,SECURITY_CODE",
"source": "SECURITIES",
"client": "APP",
"filter": '(SECURITY_CODE="510050")',
"p": 1,
"ps": 1,
}
返回结构:
{
"result": {
"data": [
{
"SECURITY_CODE": "510050",
"DERIVE_INDEX_CODE": "000016",
"INDEXNAME": "上证50"
}
]
}
}
T0 ETF 列表
接口:
https://datacenter.eastmoney.com/stock/etfselector/api/data/get
典型参数:
params = {
"type": "RPTA_APP_ETFSELECT",
"sty": (
"ETF_TYPE_CODE,DEAL_AMOUNT,SECUCODE,SECURITY_CODE,CHANGE_RATE_1W,"
"CHANGE_RATE_1M,CHANGE_RATE_3M,CHANGE_RATE_12M,ETF_SCALE,"
"YTD_CHANGE_RATE,DEC_TOTALSHARE,DEC_NAV,SECURITY_NAME_ABBR,"
"DERIVE_INDEX_CODE,INDEX_CODE,INDEXNAME,NW_PRICE,CHANGE_RATE,"
"CHANGE,VOLUME,PREMIUM_DISCOUNT_RATIO,QUANTITY_RELATIVE_RATIO,"
"HIGH_PRICE,LOW_PRICE,STOCK_ID,PRE_CLOSE_PRICE,PREMIUM_RATIO,"
"HIGH,LOW,SPEED_UP,STOCK_ID"
),
"source": "SECURITIES",
"client": "APP",
"filter": '(IS_SUPPORT="1")',
"p": 1,
"ps": 530,
"st": "CHANGE_RATE,CHANGE,SECURITY_CODE",
"sr": "-1,-1,1",
"isIndexFilter": 0,
}
返回结构:
{
"result": {
"data": [
{
"SECURITY_CODE": "510050",
"SECURITY_NAME_ABBR": "上证50ETF",
"NW_PRICE": 2.5,
"CHANGE_RATE": 1.23,
"ETF_SCALE": 10000000000,
"INDEXNAME": "上证50"
}
]
}
}
指数成分股
接口:
https://datacenter-web.eastmoney.com/api/data/v1/get
典型参数:
params = {
"reportName": "RPT_INDEX_COMPONENT",
"columns": "ALL",
"filter": '(INDEX_CODE="000016")',
"pageNumber": 1,
"pageSize": 50,
"source": "WEB",
"client": "WEB",
}
返回结构:
{
"result": {
"pages": 2,
"data": [
{
"INDEX_CODE": "000016",
"SECURITY_CODE": "600519",
"SECURITY_NAME_ABBR": "贵州茅台"
}
]
}
}
插件拿到成分股代码后,会再用 push2delay.eastmoney.com/api/qt/ulist.np/get 补实时价格、涨跌幅、市值等字段。
场外基金实时估值
天天基金估值接口:
https://fundgz.1234567.com.cn/js/{基金代码}.js
典型请求:
https://fundgz.1234567.com.cn/js/161725.js?rt=时间戳
返回是 JSONP:
jsonpgz({
"fundcode": "161725",
"name": "招商中证白酒指数",
"jzrq": "2026-07-09",
"dwjz": "1.2345",
"gsz": "1.2500",
"gszzl": "1.26",
"gztime": "2026-07-10 14:55"
})
字段:
| 字段 | 说明 |
|---|---|
fundcode |
基金代码 |
name |
基金名称 |
jzrq |
净值日期 |
dwjz |
单位净值 |
gsz |
估算净值 |
gszzl |
估算涨跌幅 |
gztime |
估值时间 |
基金净值和估值补充
接口:
https://fundmobapi.eastmoney.com/FundMNewApi/FundMNFInfo
典型参数:
params = {
"pageIndex": 1,
"pageSize": 1,
"plat": "Android",
"appType": "ttjj",
"product": "EFund",
"Version": 1,
"deviceid": "Wap",
"Fcodes": "161725",
"_": 1720000000000,
}
返回结构:
{
"ErrCode": 0,
"Datas": [
{
"FCODE": "161725",
"SHORTNAME": "招商中证白酒指数",
"PDATE": "2026-07-09",
"NAV": "1.2345",
"GSZ": "1.2500",
"GSZZL": "1.26",
"GZTIME": "2026-07-10 14:55",
"NAVCHGRT": "0.80"
}
],
"Expansion": {
"GZTIME": "2026-07-10 14:55"
}
}
插件逻辑:
- 先请求
fundgz.1234567.com.cn。 - 同时请求
FundMNFInfo。 - 如果东方财富返回的
PDATE和GZTIME表明当天净值已发布,则使用NAV和NAVCHGRT。 - 否则使用
GSZ和GSZZL作为估值。
基金持仓
接口:
https://fundmobapi.eastmoney.com/FundMNewApi/FundMNInverstPosition
典型参数:
params = {
"FCODE": "161725",
"Uid": "",
"deviceid": "Wap",
"plat": "Wap",
"product": "EFund",
"version": "2.0.0",
"_": 1720000000000,
}
返回结构:
{
"ErrCode": 0,
"Expansion": "2026-03-31",
"Datas": {
"fundStocks": [
{
"GPDM": "600519",
"GPJC": "贵州茅台",
"NEWTEXCH": "1",
"JZBL": "9.50",
"PCTNVCHGTYPE": "增加",
"PCTNVCHG": "1.20",
"INDEXNAME": "中证白酒"
}
]
}
}
字段:
| 字段 | 说明 |
|---|---|
GPDM |
股票代码 |
GPJC |
股票简称 |
NEWTEXCH |
东方财富市场编号 |
JZBL |
占基金净值比例 |
PCTNVCHGTYPE |
持仓变化类型 |
PCTNVCHG |
持仓比例变化 |
INDEXNAME |
指数或组合名称 |
插件会把 NEWTEXCH.GPDM 拼成 secid,再请求实时行情补价格和涨跌幅。
基金概况
接口:
https://fundmobapi.eastmoney.com/FundMApi/FundBaseTypeInformation.ashx
典型参数:
params = {
"FCODE": "161725",
"deviceid": "Wap",
"plat": "Wap",
"product": "EFund",
"version": "2.0.0",
}
返回字段常见映射:
| 字段 | 说明 |
|---|---|
FCODE |
基金代码 |
SHORTNAME |
基金简称 |
FTYPE |
基金类型 |
DWJZ |
单位净值 |
LJJZ |
累计净值 |
FSRQ |
净值日期 |
SYL_Y |
近一月收益 |
SYL_3Y |
近三月收益 |
SYL_6Y |
近六月收益 |
SYL_1N |
近一年收益 |
RANKM / RANKQ / RANKY |
排名 |
SGZT |
申购状态 |
SHZT |
赎回状态 |
JJGS |
基金公司 |
JJJL |
基金经理 |
ENDNAV |
规模 |
基金收益走势
优先接口:
https://dataapi.1234567.com.cn/dataapi/fund/FundVPageAcc
典型参数:
params = {
"INDEXCODE": "000300",
"CODE": "161725",
"FCODE": "161725",
"RANGE": "n",
"deviceid": "Wap",
"product": "EFund",
"_": 1720000000000,
}
返回结构:
{
"errorCode": 0,
"data": [
{
"pdate": "2026-07-10",
"yield": "1.23",
"indexYield": "0.80",
"fundTypeYield": "0.50"
}
]
}
插件映射:
{
"date": "2026-07-10",
"yield": 1.23,
"indexYield": 0.80,
"peerYield": 0.50
}
如果这个接口失败,插件兜底请求:
https://fundmobapi.eastmoney.com/FundMApi/FundNetDiagram.ashx
参数:
params = {
"FCODE": "161725",
"RANGE": "n",
}
返回的 Datas 中常见字段:
| 字段 | 说明 |
|---|---|
FSRQ |
日期 |
DWJZ |
单位净值 |
LJJZ |
累计净值 |
JZZZL |
净值增长率 |
ETF 季报持仓
接口:
https://fundf10.eastmoney.com/FundArchivesDatas.aspx
典型参数:
params = {
"type": "jjcc",
"code": "510050",
"topline": "10000",
"year": "",
"month": "",
"rt": "随机数",
}
需要请求头:
headers = {
"Referer": "https://fundf10.eastmoney.com/",
"User-Agent": "Mozilla/5.0",
}
返回不是标准 JSON,而是脚本变量,里面的 content 是 HTML。插件解析:
- 从响应里取
content。 - 用 DOMParser 解析 HTML。
- 找
table.comm.tzxq。 - 逐行提取持仓股票。
持仓行字段:
| 字段 | 说明 |
|---|---|
| 序号列 | 持仓排名 |
| 第 2 列 | 股票代码 |
| 第 3 列 | 股票名称 |
| 第 7 列 | 占净值比例 |
| 第 8 列 | 持股数 |
| 第 9 列 | 持仓市值 |
插件标准化结构:
{
"quarter": "2026年1季度",
"deadline": "2026-03-31",
"fundName": "上证50ETF",
"items": [
{
"rank": 1,
"code": "600519",
"name": "贵州茅台",
"ratio": 9.50,
"shares": 123456,
"marketValue": 123456789
}
]
}
同花顺市场热度接口
成交额分钟接口:
https://dq.10jqka.com.cn/fuyao/market_analysis_api/chart/v1/get_chart_data?chart_key=turnover_minute
涨跌分布接口:
https://dq.10jqka.com.cn/fuyao/up_down_distribution/distribution/v2/realtime
涨停分钟接口:
https://dq.10jqka.com.cn/fuyao/market_analysis_api/chart/v1/get_chart_data?chart_key=limit_up_minute
热门股票接口:
https://dq.10jqka.com.cn/fuyao/hot_list_data/out/hot_list/v1/stock
热门股票参数:
params = {
"stock_type": "a",
"type": "1小时热度",
"list_type": "normal",
}
涨跌分布返回结构大致:
{
"data": {
"up": 3000,
"down": 1800,
"flat": 200,
"limit_up": 80,
"limit_down": 10,
"table": [],
"last_update_time": "2026-07-10 14:59:00"
}
}
成交额接口里插件取:
{
"data": {
"charts": {
"header": [
{"key": "turnover", "val": 10000},
{"key": "turnover_pre", "val": 9000},
{"key": "turnover_change", "val": 11.11},
{"key": "predict_turnover", "val": 12000}
]
}
}
}
大智慧涨停题材
接口:
https://webrelease.dzh.com.cn/htmlweb/ztts/api.php
典型参数:
params = {
"service": "getZttdData",
"date": "2026-07-10",
}
返回结构随大智慧页面变化,插件直接把 JSON 交给前端展示。这个接口适合做涨停题材归因参考,但字段稳定性弱于东方财富 quote 接口。
请求代码骨架
下面是一个尽量克制频率的请求骨架:
import time
import requests
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0",
"Referer": "https://quote.eastmoney.com/",
})
def get_json(url, params=None, referer=None, timeout=15):
headers = {}
if referer:
headers["Referer"] = referer
time.sleep(1.2)
r = session.get(url, params=params, headers=headers, timeout=timeout)
r.raise_for_status()
return r.json()
url = "https://push2delay.eastmoney.com/api/qt/ulist.np/get"
params = {
"fltt": "2",
"fields": "f12,f13,f14,f2,f3,f18,f20,f25",
"secids": "1.600519,0.000001",
}
data = get_json(url, params=params)
rows = data["data"]["diff"]
print(rows[:2])
使用注意
- 这些接口不是正式授权的数据服务,字段和风控策略可能随时变化。
- 东方财富
push2delay带有延迟含义,做交易执行前要确认延迟和刷新频率是否满足需求。 - 单次抓取建议控制在 1 到 2 秒一个请求,不要多线程压接口。
- 基金接口里
FundArchivesDatas.aspx返回 HTML 片段,不是标准 JSON,要单独解析。 - 场外基金估值和实际净值要区分。
GSZ/GSZZL是估值,NAV/NAVCHGRT是净值或实际涨跌。 - 板块接口的排序完全由
fid决定。按涨跌幅、成交额、主力净流入得到的排名不是一回事。 - 如果做回测,需要保存每天的接口快照。用今天的板块和基金持仓去解释过去,会引入未来函数。
这次分析的价值不在于复制插件,而是把常见网页和插件背后的数据源关系理清楚:实时行情、分时、K 线、板块、基金估值、基金持仓、市场热度分别来自不同系统,落库时最好按来源和抓取时间分表保存,避免混成一个不可追溯的“行情表”。