TS
Tushare Pro 数据服务
专业数据接入

Tushare Pro 数据服务使用说明

拿到分发的 API Key 后,可以通过本服务调用授权范围内的 Tushare Pro 接口。 服务按真实业务使用场景维护,重视接口兼容性、数据准确性和问题可追踪性。

官方格式兼容 继续使用熟悉的接口名、参数和字段。
数据可靠优先 以避免错误数据进入调用链为核心目标。
问题可处理 遇到差异可以提交信息定位和排查。

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

快速开始

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

  1. 获取分发给你的 API Key 和 API 服务地址。
  2. 确认要调用的接口名,例如 dailyincomedaily_basic
  3. 选择一种接入方式:Python SDK、HTTP JSON 请求,或 MCP Server。
  4. 对网络超时、临时上游错误和限流错误增加重试。
方式 适合场景 核心配置
方式一:Tushare SDK 已有 Python / Tushare 代码,希望最少改动。 设置 API Key,并把 SDK HTTP 地址改为 http://tu.mini-program.fun
方式二:HTTP 请求 服务端、脚本、非 Python 语言直接调用。 http://tu.mini-program.fun 发送 Tushare 原始 JSON 请求体。
方式三:MCP Server Cursor、Claude Code、Cline 等 AI 工具。 配置 http://tu.mini-program.fun/mcp/?token=你的 API Key
API Key 的有效期、权限范围和使用限制以实际开通结果为准。

API Key 使用方式

API Key 是调用身份。不同接入方式的放置位置不同,但都使用同一个分发给你的 API Key。

接入方式 放置位置 说明
Tushare SDK ts.set_token(...) 按 SDK 标准方式设置 token,同时把 SDK HTTP 地址改为本文档服务地址。
HTTP JSON 请求 token 请求 Body 中直接放入分发给你的 API Key,和 Tushare 官方 HTTP 格式一致。
MCP Server /mcp/?token=... MCP URL 的 token 参数填写分发给你的 API Key。
请勿把 API Key 提交到公开仓库、日志、截图或浏览器共享链接中。发现泄露后应联系服务方重新分发。

方式一:使用 Tushare SDK

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

pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com tushare
import tushare as ts

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

pro = ts.pro_api()
pro._DataApi__http_url = "http://tu.mini-program.fun"

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

ts.pro_bar() 等模块级函数

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

api=pro 不是 Tushare HTTP 请求体里的字段,也不是 fields 里的输出字段。 pro_bar 是 SDK 组合接口,不能用 {"api_name":"pro_bar"} 或在 daily 参数里加入 adj 的方式直接 HTTP 调用。 仅设置 pro._DataApi__http_url 还不够;如果不传 api=prots.pro_bar() 会重新创建默认官方地址的 SDK 客户端。
import tushare as ts

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

pro = ts.pro_api()
pro._DataApi__http_url = "http://tu.mini-program.fun"

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

如果直接使用 HTTP,需要改用可 HTTP 调用的底层接口。例如日线前复权价格可以请求 stk_factor_proopen_qfqhigh_qfqlow_qfqclose_qfq 字段,或分别请求 dailyadj_factor 后在本地计算。

方式二:直接 HTTP 请求

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

Python requests:Token 放在 Body

import requests

resp = requests.post("http://tu.mini-program.fun", 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())

curl 示例

curl -X POST "http://tu.mini-program.fun" \
  -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 分发给你的 API Key。
params 按接口要求 接口业务参数,结构与 Tushare 官方一致。
fields 返回字段,逗号分隔。

方式三:使用 MCP Server

如果使用 OpenClaw、Claude Code、Cursor、Trae、Cline 等支持 MCP 的工具,可以直接配置 MCP Server。 MCP 入口与 Tushare 官方形式保持一致,token 参数填写本文档分发给你的 API Key。

{
  "mcpServers": {
    "tushareMcp": {
      "url": "http://tu.mini-program.fun/mcp/?token=替换成你的 API Key"
    }
  }
}

MCP 工具名与 Tushare API 名一致,例如 dailystock_basictrade_cal。 调用工具时直接传接口参数;fields 使用字符串数组,例如 ["ts_code", "trade_date", "close"]。 权限、有效期、频率和接口范围仍以你的 API Key 实际开通配置为准。

MCP 成功返回时,工具内容是 JSON 数组文本;参数错误、权限不足、频率限制等业务错误会以 MCP tool error 返回。

返回格式

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

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

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

MCP 调用遵循 MCP tool 返回格式:成功时工具内容是 JSON 数组文本,业务错误会以 MCP tool error 返回。

可用接口

Tushare 官方接口在积分满足要求时均可使用,独立权限接口除外。你的 API Key 会按实际开通的积分、有效期和接口范围生效。 调用前建议先查看 Tushare 官方接口文档,确认接口名、参数、字段和权限要求。

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

数据质量与支持

本服务按作者自己的真实使用需求持续维护,对数据准确性有更高要求。 系统做了多层冗余机制来避免错误数据进入调用链,并持续关注返回结构兼容、数据一致性和官方接口变化。

本服务也做了面向实际查询场景的性能优化,大部分常见查询在响应速度和稳定性上会优于直接调用官方接口。 如果你在使用中遇到数据差异、权限疑问或接口调用问题,可以提交接口名、参数、时间和返回内容,问题会被认真排查和处理。

做这个服务的初衷,是因为作者长期使用其他代理方式时多次遇到错误数据,排查成本很高。 数据工具不应该只服务少数人;希望通过更可靠、可维护的接入方式,让更多使用者能以合理成本获得专业的数据能力。

服务目标是提供专业、稳定、可信赖的数据访问体验。出现问题时可以定位、复现和修复,而不是让调用方独自承担错误数据的风险。

权限与限制

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

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

客户端建议

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

常见问题

提示 token 无效怎么办?

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

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

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

为什么通过 daily 获取不到前复权或后复权数据?

daily 是 Tushare 官方未复权日线行情接口,不支持 adj 参数,也不包含 open_qfqclose_qfqadj_factor 等复权字段。Python SDK 获取复权行情请使用上文的 ts.pro_bar(..., api=pro) 方式;直接 HTTP 请求请改用 stk_factor_pro 的复权字段,或分别请求 dailyadj_factor 后在本地计算。

为什么有些接口没权限?

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

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

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

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

可以。支持 MCP 的工具建议直接配置 http://tu.mini-program.fun/mcp/?token=你的 API Key; 也可以把本文档地址和 API 服务地址交给工具,并明确要求它按本文档设置 Tushare SDK 地址或发送 HTTP 请求。