TS
Tushare Pro 数据服务

Tushare Pro 数据服务使用说明

拿到分发的 API Key 后,可以通过本服务调用授权范围内的 Tushare Pro 接口。 服务按真实业务使用场景维护,通过日常更新、回归比对和官方数据校准,持续提升接口兼容性、数据准确性和问题可追踪性。

如服务方提供了其他地址,请以服务方提供的地址为准。

快速开始

本服务提供兼容 Tushare Pro 的数据访问入口。调用方继续使用 Tushare 的接口名、参数和字段, 只需要把请求发到本文档给出的服务地址,并使用分发的 API Key。

  1. 获取分发给你的 API Key 和 API 服务地址。
  2. 确认要调用的接口名,例如 dailyincomedaily_basic
  3. 按下方 SDK 或 HTTP 示例修改代码。
  4. 对网络超时、临时上游错误和限流错误增加重试。
API Key 的有效期、权限范围和使用限制以实际开通结果为准。

API Key 使用方式

支持两种传递方式。推荐优先使用 Body 中的 token 字段,和 Tushare 官方 HTTP 格式一致。

方式 位置 说明
Body token 请求 JSON 中直接放入分发给你的 API Key。
Header x-api-key 请求 JSON 可不带 token,由 Header 提供 API Key。
请勿把 API Key 提交到公开仓库、日志、截图或浏览器共享链接中。发现泄露后应联系服务方重新分发。

方式一:使用 Tushare SDK

如果已经使用 Python 版 tushare,通常只需要设置 token,并把 SDK 的 HTTP 地址改为网关地址。

import tushare as ts

ts.set_token("替换成你的 API Key")

pro = ts.pro_api()
pro._DataApi__http_url = "替换成 API 服务地址"

df = pro.daily(
    ts_code="000001.SZ",
    start_date="20260101",
    end_date="20260110",
)
print(df)

ts.pro_bar() 等模块级函数

ts.pro_bar() 不是 pro 对象的方法,需要额外把上面创建的 pro 作为 api 参数传入。

import tushare as ts

ts.set_token("替换成你的 API Key")

pro = ts.pro_api()
pro._DataApi__http_url = "替换成 API 服务地址"

df = ts.pro_bar(
    ts_code="002594.SZ",
    api=pro,
    start_date="20180101",
    end_date="20181011",
    adj="qfq",
)
print(df)

方式二:直接 HTTP 请求

直接向 API 服务根路径 / 发送 POST 请求。请求体保持 Tushare 原始 HTTP 格式。

Python requests:Token 放在 Body

import requests

resp = requests.post("替换成 API 服务地址", json={
    "api_name": "daily",
    "token": "替换成你的 API Key",
    "params": {
        "ts_code": "000001.SZ",
        "start_date": "20260101",
        "end_date": "20260110",
    },
    "fields": "ts_code,trade_date,open,high,low,close,vol",
}, timeout=30)

resp.raise_for_status()
print(resp.json())

Python requests:Token 放在 Header

import requests

resp = requests.post(
    "替换成 API 服务地址",
    json={
        "api_name": "daily",
        "params": {
            "ts_code": "000001.SZ",
            "start_date": "20260101",
            "end_date": "20260110",
        },
    },
    headers={"x-api-key": "替换成你的 API Key"},
    timeout=30,
)

resp.raise_for_status()
print(resp.json())

curl 示例

curl -X POST "替换成 API 服务地址" \
  -H "Content-Type: application/json" \
  -d '{
    "api_name": "daily",
    "token": "替换成你的 API Key",
    "params": {
      "ts_code": "000001.SZ",
      "start_date": "20260101",
      "end_date": "20260110"
    }
  }'
字段 是否必填 说明
api_name Tushare 接口名,例如 daily
token Body 鉴权时必填 分发给你的 API Key。
params 按接口要求 接口业务参数,结构与 Tushare 官方一致。
fields 返回字段,逗号分隔。

返回格式

正常返回与 Tushare Pro HTTP 响应结构保持兼容,常见形态如下:

{
  "request_id": "...",
  "code": 0,
  "msg": "",
  "data": {
    "fields": ["ts_code", "trade_date", "close"],
    "items": [
      ["000001.SZ", "20260110", 12.34]
    ]
  }
}

业务错误、权限不足、token 失效、参数不满足接口要求时,也会尽量按 Tushare 客户端可处理的方式返回。 客户端仍应检查 codemsg

可用接口

可用接口取决于上游数据源权限、当前 API 规则和你的 API Key 权限。 调用前建议先查看 Tushare 官方接口文档,确认接口名、参数、字段和权限要求。

部分接口属于独立权限,不一定随通用积分权限开放。遇到无权限提示时,以实际开通结果和官方权限说明为准。

数据质量与支持

本服务按作者自己的真实使用需求持续维护,会结合日常增量更新、官方接口校准、回归比对和缓存新鲜度检查来控制数据质量。 相比只做简单转发或静态缓存的接入方式,这里更重视返回结构兼容、数据一致性、官方接口变化跟进和异常定位。

当官方接口字段、权限、数据更新时间或返回格式发生变化时,系统内置的日更和回归流程可以帮助定位差异来源。 如果你在使用中遇到数据差异、权限疑问或接口调用问题,可以提交接口名、参数、时间和返回内容,便于快速排查。

服务目标是提供专业、稳定、可维护的数据访问体验。出现问题时可以定位、复现和修复,而不是让调用方独自判断官方接口和本地缓存之间的差异。

权限与限制

实际请求频率、并发、每日额度、有效期和接口范围以你的 API Key 实际使用情况和开通配置为准。

如果请求被限制,客户端应等待一段时间后重试;如果长期被拒绝,请联系服务方确认 token 状态、权限范围和有效期。

客户端建议

  • 请求超时建议设置为 30 秒左右,并对临时网络错误、上游波动和限流做退避重试。
  • 优先传入明确查询条件,例如 ts_codetrade_datestart_dateend_date
  • 避免在业务高峰中频繁发起超大范围查询;如需批量历史数据,建议按日期或标的分片。
  • 不要依赖返回行顺序做业务判断;需要稳定顺序时在客户端按日期、代码等字段排序。

常见问题

提示 token 无效怎么办?

确认服务地址已经改成本文档给出的 API 服务地址,并确认 Body 中的 token 或 Header 中的 x-api-key 是分发给你的 API Key。

SDK 还是访问了官方地址怎么办?

确认已经设置 pro._DataApi__http_url。如果环境变量里配置过旧 token,也建议清理后重试。

为什么有些接口没权限?

你的 API Key 只开放实际开通的权限范围。部分 Tushare 接口还需要独立权限,不能只按积分判断。

返回数据和官方有差异怎么办?

先记录接口名、参数、字段、请求时间和返回内容,再联系服务方排查缓存、新鲜度、官方接口变化或上游权限问题。

可以把这个地址交给 AI 编程工具吗?

可以把本文档地址和 API 服务地址交给工具,并明确要求它按本文档设置 Tushare SDK 地址,不要直接调用官方地址。