指数成分股

公开接口

指数行情 Index · 指数成分股

查询指定指数的最新成分股与权重,按权重降序返回。数据由定时任务每天从 Tushare 的指数权重接口同步,保存的是最新一期快照,不是历史调仓记录。index_code 用裸码或全码都可以。

接口地址

GET /cn/index/constituents
完整地址:https://api.databull.cn/cn/index/constituents

接口说明

查询指定指数的最新成分股及权重,按权重降序返回。数据由定时任务每天从 Tushare 的指数权重接口同步,保存的是**最新一期快照**(不是历史调仓记录)。

index_code 用裸码(000300)或全码(000300.SH)都可以。返回体 data.index 是本次命中的指数档案,data.items 是成分股明细,data.trade_date 是这批权重的**快照日**(权重按月发布,通常为月末)。

成分股按指数**整体替换**同步,且每日同步只覆盖主流宽基与常用行业主题指数;未在同步范围内的指数,其成分股为空并返回 empty_reason: constituents_not_synced。

请求参数

参数位置类型必填默认说明
index_code查询string否000300指数代码,裸码(000300)或全码(000300.SH)都可以;默认 000300(沪深300)
page查询integer否1页码,从 1 开始;不小于 1
page_size查询integer否100每页条数,1~5000;取值 1~5000

返回字段

字段类型说明
codenumber业务状态码,0 表示成功
dataobject查询结果对象
data.indexobject本次命中的指数档案(symbol / index_code / name / market / category);指数不在清单中时该字段不出现
data.itemsarray成分股数组,按权重降序(无权重的历史数据排在最后)
data.items[].stock_codestring成分股代码(裸码),如 600519
data.items[].stock_namestring成分股名称,取自本地股票档案
data.items[].weightnumber权重(%);同指数内权重合计约 100
data.items[].trade_datestring权重快照日,YYYY-MM-DD
data.items[].add_datestring纳入指数日期;Tushare 不提供该字段,同步写入的行恒为空值
data.totalnumber该指数已落库的成分股总条数
data.page / data.page_sizenumber当前页码 / 每页条数
data.has_moreboolean是否还有下一页
data.trade_datestring该指数成分股权重快照日(批数据的口径日)
empty_reasonstring仅当 items 为空时出现,标注为空的原因(见下)

接口示例

cURL
curl "https://api.databull.cn/cn/index/constituents?index_code=000300&page=1" \
  -H "Authorization: Bearer $DATABULL_API_KEY"
Python
import requests

url = "https://api.databull.cn/cn/index/constituents"
params = {
    "index_code": "000300",
    "page": "1",
}
headers = {"Authorization": "Bearer YOUR_API_KEY"}

resp = requests.get(url, params=params, headers=headers, timeout=10)
resp.raise_for_status()
print(resp.json())

响应示例

JSON
{
  "code": 0,
  "data": {
    "index": {
      "symbol": "000300",
      "index_code": "000300.SH",
      "name": "沪深300",
      "market": "SSE",
      "category": "规模指数"
    },
    "items": [
      {
        "stock_code": "600519",
        "stock_name": "贵州茅台",
        "weight": 3.092,
        "trade_date": "2026-08-31",
        "add_date": null
      },
      {
        "stock_code": "300750",
        "stock_name": "宁德时代",
        "weight": 3.66,
        "trade_date": "2026-08-31",
        "add_date": null
      }
    ],
    "total": 300,
    "page": 1,
    "page_size": 100,
    "has_more": true,
    "trade_date": "2026-08-31"
  }
}

错误码

状态码触发条件
401缺少或无效 API 凭证
400index_code 为空

说明

  • 权重按月发布,trade_date 通常是月末日,因此同一指数的权重快照日可能落后当前日期一个月左右,属正常。
  • 每天同步的只是主流宽基与常用行业主题指数(约 30 只)——指数权重接口需逐只调用,把上万只指数全量拉一遍既慢也容易触发频率限制。白名单之外的指数成分股为空,返回 empty_reason: constituents_not_synced。
  • 需要白名单以外的指数时,可自行用维护接口 POST /cn/index/sync_constituents 补同步(该接口不在公开文档中,需凭证调用)。
  • 空结果的两种原因:index_not_found(清单里根本没有这只指数,多半是代码写错)与 constituents_not_synced(指数存在但成分股尚未同步)。两者都会同时写入响应头 X-Empty-Reason。