2026年A股数据API怎么选?免费、开源和专业数据源对比,附真实调用
作者: TickDB Research · 发布: 2026/8/19 · 阅读: 17
标签: 知乎A001
2026年A股数据API怎么选?免费、开源和专业数据源对比,附真实调用
免费 A 股数据接口能不能用?能。
但原型跑起来以后,麻烦往往才刚开始:数据要每天更新、代码要交给同事、接口突然报错,或者想接进自己的工具。这时只看“免费”就不够了。
先给答案
- 只是拉历史数据、学 Python:先用开源或免费路径,别急着把一堆接口都接上。
- 想把任务固定每天跑:先拿一个标的、一个周期跑通,再看权限、字段和报错怎么处理。
- 要接进团队工具或 AI 工作流:早点想清楚谁维护、出错后怎么查、以后换源麻不麻烦。
我这次把几个常见路径放在一起看,最后发现选数据源没什么标准答案。先把自己的任务讲清楚,选择会容易很多。
先看你属于哪一类
| 现在要做的事 | 先关注什么 |
|---|---|
| 拉一段历史行情,验证指标 | 数据能不能拿到、上游来自哪里 |
| 做个人研究或回测 | 复权、日期、字段和复现方式 |
| 每天跑监控或看板 | 权限、更新和报错后的处理 |
| 交给团队或产品 | 接入方式、维护成本和换源难度 |
很多人一开始只想“先跑起来”。这没问题。等任务变成每天跑、多人用,再回头补数据源这件事,通常会更费劲。
四条常见路径,TickDB放在第二个
下面的顺序不是排名,只是按我自己看资料和上手验证时更顺手的顺序排。价格、免费额度和权限会变,真要用之前还是要自己打开官网确认一下。
| 路径 | 适合谁 | 上手前看一眼 |
|---|---|---|
| Tushare | 要查A股日线、按接口权限取数的人 | daily 接口、Token、积分和独立权限 |
| TickDB | 想先跑一条请求,再按脚本、对话或推送方式继续接的人 | REST、MCP、CLI、WebSocket 是不同入口;我这次实际跑了 REST 和 MCP |
| AKShare | 做本地研究原型,愿意自己处理公开上游变化的人 | 不同接口的来源、频率和复现方式 |
| BaoStock | 想先找免费数据路径的人 | 先看当前文档和条款;我这次没拿到可用的官方Python API页面 |
如果只是做本地练习,开源库很省心。任务要长期跑,先做一条真实请求更实在。能拿到数据只是第一步,后面还要看它能不能接进你的工作。
TickDB 是什么,适合用在什么地方
TickDB 是一套给开发者、量化研究和 AI 应用用的统一行情数据接口。你可以先用它查 A 股的历史K线,后面如果任务变成实时看板、跨市场研究,或者想让 AI 工具直接查行情,也不用重新换一套接入方式。
它的基础能力可以简单理解成两层:数据层有实时行情和历史数据;接入层有 REST、WebSocket、Skill、MCP、CLI。刚开始不需要全用上。写脚本时先用 REST,做实时推送再看 WebSocket,想把行情接进 AI 工具时再试 MCP、Skill 或 CLI。
这也是我觉得它适合持续任务的地方:先把 A 股这一条跑通,后面任务变了,接法还能往下延伸。
我是怎么验证 TickDB 的
我先用 REST 拉了 600519.SH 的 5 条日 K,返回 HTTP 200、API code 0。然后又用 MCP 把日K、交易日和交易时段放在一起看了一遍。这样做的好处很简单:先确认数据、日期和交易时段有没有对上,再往后接自己的任务。
如果你也想用自己的标的试一遍,可以直接去 TickDB 官网注册。官网当前提供免费体验,注册后生成一个 API Key,就能先把下面的脚本跑起来。别急着研究所有功能,先把你最关心的那只股票、那个周期跑通,心里就有数了。
下面是这次用的完整检查脚本:
python -m pip install certifi
export TICKDB_API_KEY="你的API Key"
python tickdb_a_share_rest_check.py
#!/usr/bin/env python3
import json
import os
import ssl
import sys
import time
import urllib.error
import urllib.parse
import urllib.request
from datetime import datetime, timezone
import certifi
API_KEY = os.environ.get("TICKDB_API_KEY", "").strip()
API_BASE = "https://api.tickdb.ai"
PARAMS = {"symbol": "600519.SH", "interval": "1d", "limit": 5, "type": "stock"}
if not API_KEY:
raise SystemExit("ERROR: set TICKDB_API_KEY before running")
url = f"{API_BASE}/v1/market/kline?{urllib.parse.urlencode(PARAMS)}"
request = urllib.request.Request(
url,
headers={"X-API-Key": API_KEY, "Accept": "application/json", "User-Agent": "A-share-api-check/1.0"},
method="GET",
)
started = time.monotonic()
http_status, body, error = None, "", None
try:
with urllib.request.urlopen(
request, timeout=20, context=ssl.create_default_context(cafile=certifi.where())
) as response:
http_status = response.status
body = response.read().decode("utf-8", errors="replace")
except urllib.error.HTTPError as exc:
http_status = exc.code
body = exc.read().decode("utf-8", errors="replace")
error = f"HTTPError: {exc.code}"
except Exception as exc:
error = f"{type(exc).__name__}: {exc}"
try:
payload = json.loads(body) if body else None
except json.JSONDecodeError:
payload = {"non_json_body": body[:1000]}
api_code = payload.get("code") if isinstance(payload, dict) else None
data = payload.get("data", {}) if isinstance(payload, dict) else {}
klines = data.get("klines", []) if isinstance(data, dict) else []
success = http_status == 200 and api_code == 0 and bool(klines)
print(json.dumps({
"retrieved_at_utc": datetime.now(timezone.utc).isoformat(),
"request": {"path": "/v1/market/kline", "params": PARAMS},
"http_status": http_status,
"api_code": api_code,
"returned_kline_count": len(klines),
"elapsed_ms": round((time.monotonic() - started) * 1000),
"error": error,
"status": "PASS" if success else "FAIL",
}, ensure_ascii=False, indent=2))
sys.exit(0 if success else 1)
跑完以后,别只盯着 PASS。我一般会看这四件事:
- 标的代码对不对;
- 周期和条数够不够;
- 账号有没有这个端点的权限;
- 出错时能不能把请求参数和返回内容留下来。
最后这一条很容易被忽略。数据一旦有异常,能定位、补回、重跑,比“第一次调用成功”更有用。
FAQ
1. 第一次测 A 股数据 API,最少要做什么?
拿一个自己熟悉的标的,选一个日线周期,先跑通一次。然后看返回条数、日期和字段。先把这一小步跑顺,再考虑要不要接进回测、看板或定时任务。
2. 接口返回了数据,为什么回测还是不对?
先别急着改策略。先检查复权、日期、字段、交易日和时区。日K能返回,不等于这些细节都已经对上。把请求参数和响应保存下来,排查会快很多。
3. TickDB 除了 REST 还能怎么用?
如果你习惯在对话式工具里查行情,可以用 Hosted MCP 或 Skill;终端和 Agent 场景可以看 CLI;需要持续推送时再看 WebSocket。它们适合的任务不同,可以从你现在最常用的一种方式开始。
最后说一句
选数据源前,先写下自己要什么数据、多久跑一次、出错后谁来查。然后选一个路径,跑一条小请求。这个顺序比先比较一大堆产品更省时间。
示例标的只用于演示数据请求,不构成投资建议。
通过 TickDB API 获取实时行情数据
一个 API 接入外汇、加密货币、美股、港股、A股、贵金属和全球指数的实时行情。支持 WebSocket 低延迟推送,免费开始使用。
免费领取 API Key查看 API 文档