爱盯盘插件行情接口整理

爱盯盘插件行情接口整理

本文记录一次对 Chrome 插件“爱盯盘-股票盯盘-基金助手”的接口分析。插件版本为 2.31.1。这里只整理可复用的行情、基金、板块和市场热度接口,不展开插件作者自己的登录、云同步、订阅后台接口。

整体结论:

  1. 股票、ETF、板块、K 线主体来自东方财富接口。
  2. 场外基金估值和净值来自天天基金/东方财富基金接口。
  3. 市场热度、涨跌分布、热门股票来自同花顺接口。
  4. 涨停题材来自大智慧接口。
  5. 插件自身后台主要用于登录、配置同步、订阅等,不是行情源。

接口多为公开网页或 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"
  }
}

插件逻辑:

  1. 先请求 fundgz.1234567.com.cn
  2. 同时请求 FundMNFInfo
  3. 如果东方财富返回的 PDATEGZTIME 表明当天净值已发布,则使用 NAVNAVCHGRT
  4. 否则使用 GSZGSZZL 作为估值。

基金持仓

接口:

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。插件解析:

  1. 从响应里取 content
  2. 用 DOMParser 解析 HTML。
  3. table.comm.tzxq
  4. 逐行提取持仓股票。

持仓行字段:

字段 说明
序号列 持仓排名
第 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])

使用注意

  1. 这些接口不是正式授权的数据服务,字段和风控策略可能随时变化。
  2. 东方财富 push2delay 带有延迟含义,做交易执行前要确认延迟和刷新频率是否满足需求。
  3. 单次抓取建议控制在 1 到 2 秒一个请求,不要多线程压接口。
  4. 基金接口里 FundArchivesDatas.aspx 返回 HTML 片段,不是标准 JSON,要单独解析。
  5. 场外基金估值和实际净值要区分。GSZ/GSZZL 是估值,NAV/NAVCHGRT 是净值或实际涨跌。
  6. 板块接口的排序完全由 fid 决定。按涨跌幅、成交额、主力净流入得到的排名不是一回事。
  7. 如果做回测,需要保存每天的接口快照。用今天的板块和基金持仓去解释过去,会引入未来函数。

这次分析的价值不在于复制插件,而是把常见网页和插件背后的数据源关系理清楚:实时行情、分时、K 线、板块、基金估值、基金持仓、市场热度分别来自不同系统,落库时最好按来源和抓取时间分表保存,避免混成一个不可追溯的“行情表”。

目录
build:   20260710