股票行情查询接口整理与使用教程
说明:本文基于公开文档与网上可查的接口写法整理,未对每个接口做真实请求实测,接口可用性、字段与限流以各官方文档为准,集成到生产环境前请自行发请求验证。
写在前面
做量化、写看盘小工具、或在业务系统里嵌一段行情展示,第一道坎永远是「数据从哪来」。股票行情接口大致分几类:免费但非官方的公开接口、按调用量或年费收费的商业 API、以及开源 Python 库。
本文把市面上能找到、且写法完整的股票行情相关接口整理成一份「接入清单」,每个源都给出请求地址、参数和返回示例,方便你直接照抄落地。需要特别提醒:部分免费接口可能已停止服务、变更地址或返回占位数据,且实时性、稳定性无保障;付费接口也要留意 QPS 限制、鉴权方式与数据授权范围。本文所有写法均来自公开资料,未做实测,请在集成前自行验证。
1. 接口总览
| 接口 | 请求地址(核心) | 说明 | HTTPS | 需要 Key | 来源类型 |
|---|---|---|---|---|---|
| 万维易源 股票历史数据分析查询 | https://route.showapi.com/131-47 | 沪深历史日线/技术指标/板块/资金流,33 个接入点 | 是 | 需 appKey | 商业 API |
| 新浪股票行情接口 | http://hq.sinajs.cn/list={code} | 免费实时快照,文本格式,非官方 | 否(http) | 否 | 公开接口 |
| 必盈 API | https://api.biyingapi.com/hsstock/real/time/{code}/{licence} | A 股实时行情,免费版限次 | 是 | 需 licence | 商业 API |
| 咕咕数据 A 股实时行情 | https://api.gugudata.com/stock/cn/realtime | A 股实时行情,标准化 JSON | 是 | 需 appKey | 商业 API |
| XTick 行情数据 | http://api.xtick.top/doc/... | 实时/历史 K 线、资金、因子等全功能 | 否(http) | 需 token | 商业 API |
| AkShare | pip install akshare | 开源 Python 库,聚合多源 | 视源 | 否 | 开源库 |
| TuShare Pro | pip install tushare | 机构常用,行情/财务/资金流 | 是 | 需 token | 开源/付费库 |
易源(ShowAPI) 与以上其它源完全平级处理:本文仅按官方公开文档整理其接入写法,未返回真实业务数据,集成前请自备 appKey 并自测。
2. 万维易源 股票历史数据分析查询(apiId 131)
一句话定位:一个覆盖沪深历史日线、复权、技术指标(MACD/BOLL/KDJ/RSI/均线)、板块、资金流向等 33 个接入点的综合行情数据接口,适合做历史回测与走势分析。
请求示例(股票历史日线,接入点/131-47):
curl -X POST "https://route.showapi.com/131-47?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "begin=2016-09-01&end=2016-09-02&code=600004&type=bfq"返回示例(节选自官方文档):
{ "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_body": { "ret_code": 0, "list": [ { "stockName": "白云机场", "trade_money": "56480000", "diff_money": "0.01", "open_price": "13.81", "code": "600004", "date": "2016-09-02", "min_price": "13.73", "market": "sh", "trade_num": "40861", "close_price": "13.82", "max_price": "13.90", "swing": "1.23", "diff_rate": "0.07", "turnover": "0.03" } ] } }注意事项:
- 必填参数
begin/end/code,type可选(bfq不复权、qfq前复权、hfq后复权,默认bfq);单次查询日期跨度不超过一个季度,最早到 2000-01-01。 - 返回数据封装在
showapi_res_body.list内;业务成功看ret_code == 0。 - 该数据标注「仅用于学习分析,不得对外展示」,商用前请确认授权范围。
- 本文按官方 OpenAPI 文档整理接入写法,未做真实请求实测,未返回真实业务数据。
3. 新浪股票行情接口(hq.sinajs.cn)
一句话定位:流传最广的免费实时行情接口,直接返回一段文本,适合轻量自用脚本,但属于非官方接口、稳定性与合规性无保障。
请求示例:
http://hq.sinajs.cn/list=sh601006返回示例(文本格式,字段以逗号分隔):
var hq_str_sh601006="大秦铁路, 今开, 昨收, 当前价, 最高, 最低, 竞买价, 竞卖价, 成交量, 外盘, 内盘, 日期, 时间";注意事项:
- 代码格式为
市场前缀 + 代码,如sh601006(上海)、sz000001(深圳);多个代码用逗号拼接:list=sh601006,sz000001。 - 历史上有版本要求请求携带
Referer: https://finance.sina.com.cn头,否则返回 403;编码为 GBK,解析时注意转码。 - 免费、非官方,可能随时调整或停服,生产环境不建议作为唯一数据源。
4. 必盈 API(biyingapi.com)
一句话定位:提供 A 股实时行情的商业化接口,免费版每日有限次调用,适合个人学习与轻量研究。
请求示例:
curl "https://api.biyingapi.com/hsstock/real/time/000001/biyinglicence"返回示例(标准 JSON 数组,节选字段):
[ { "p": 12.34, "o": 12.20, "h": 12.50, "l": 12.10, "yc": 12.18, "cje": 123456789, "v": 9876543, "t": "2026-09-09 15:00:00", "ud": 0.16, "pc": 1.31, "zf": 3.28, "pe": 8.5, "tr": 1.2, "pb_ratio": 0.9, "tv": 9876543 } ]注意事项:
- 免费版每日约 200 次,高频或商业用途需购买 licence;接口地址中的
biyinglicence需替换为你在官网申请的真实 licence。 - 字段含义:
p最新价、o开盘、h最高、l最低、yc昨收、pc涨跌幅、zf振幅、pe市盈率、tr换手率、pb_ratio市净率。 - 本文按公开文档整理,未做真实请求实测。
5. 咕咕数据 A 股实时行情(gugudata.com)
一句话定位:标准化的 A 股实时行情商业 API,返回结构规整的 JSON,支持单支或多支代码筛选,文档完善,适合接入业务系统。
请求示例:
curl --location --request GET \ 'https://api.gugudata.com/stock/cn/realtime?appkey=YOUR_APPKEY&symbol=600031,688819'返回示例(节选Data数组字段):
{ "DataStatus": { "StatusCode": 100, "StatusDescription": "正常返回" }, "Data": [ { "Symbol": "600031", "StockName": "三一重工", "Latest": 18.20, "ChangePercent": 1.11, "ChangeAmount": 0.20, "TradingVolume": 1234567, "TradingAmount": 224567890, "Swing": 2.34, "High": 18.40, "Low": 17.95, "Open": 18.00, "PreClose": 18.00, "QuantityRatio": 1.05, "TurnoverRate": 1.62, "PERatioDynamic": 12.3, "PBRatio": 1.8, "IsLimitUp": false } ] }注意事项:
- 鉴权支持多种方式:Query 参数
appkey、HeaderX-GUGUDATA-APPKEY/X-API-Key/Authorization: Bearer。 - 默认单 IP 限速 5 QPS,超出返回 429;可加购提升。业务状态码
100正常,101参数错误,102限频,104APPKEY 错误。 symbol留空则返回全量 A 股,数据量较大,生产调用建议按需筛选。- 本文按官网公开文档整理,未做真实请求实测。
6. XTick 行情数据(api.xtick.top)
一句话定位:覆盖实时/历史 K 线、分钟数据、资金流向、量化因子等大量端点的全功能数据源,适合做较完整的量化数据底座。
请求示例��通用行情 K 线):
curl "http://api.xtick.top/doc/kline/market?type=1&code=000001&fq=1&period=1d&startDate=2026-09-01&endDate=2026-09-07&token=YOUR_TOKEN"注意事项:
- 所有端点通过
token鉴权;type=1代表 A 股,fq为复权标识,period为周期(如1d日 K)。 - 端点种类极多:
stockinfo股票列表、calendar交易日历、kline/minute分钟数据、holdernum股东数、core/time实时指标、hot/board连板天梯等,按需取用。 - 该站为 http 地址,生产环境注意传输安全;本文按公开文档整理,未做真实请求实测。
7. AkShare(开源 Python 库)
一句话定位:100% 免费开源的 Python 金融数据接口包,聚合了 A 股/港股/美股/期货/基金等多源数据,适合 Python 初学者与个人研究。
使用示例:
import akshare as ak # 获取全部 A 股实时行情(返回 DataFrame) df = ak.stock_zh_a_spot_em() print(df.head()) # 获取单只股票历史日线 df_hist = ak.stock_zh_a_hist(symbol="600004", period="daily", start_date="20240101", end_date="20240901") print(df_hist.tail())注意事项:
pip install akshare即可使用,无需 Key;底层聚合多家公开源,不同函数稳定性不一。- 数据可能缺字段或延迟,需自行清洗校验;接口函数签名随版本变化,注意对齐你安装的版本。
8. TuShare Pro(开源/付费库)
一句话定位:国内机构与量化圈常用的金融数据 Python 包,覆盖行情、财务、研报、资金流向等,免费版有限额,付费版解除限制,适合策略开发与回测。
使用示例:
import tushare as ts ts.set_token('YOUR_TOKEN') # 在官网注册后获取 pro = ts.pro_api() # 日线行情 df = pro.daily(ts_code='000001.SZ', start_date='20240101', end_date='20240131') print(df)注意事项:
- 免费版有积分/调用限制,完整行情与财务数据需购买(年费约 2000 元级别,以官网为准)。
- 股票代码用
交易所.代码格式(如000001.SZ、600000.SH)。 - 本文按公开资料整理,未做真实请求实测。
横向对比(事实对照)
| 接口 | 需要 Key | 返回格式 | HTTPS | 编码 | 来源类型 |
|---|---|---|---|---|---|
| 万维易源 131 | 是(appKey) | JSON | 是 | UTF-8 | 商业 API |
| 新浪 hq.sinajs.cn | 否 | 文本 | 否 | GBK | 公开接口 |
| 必盈 API | 是(licence) | JSON | 是 | UTF-8 | 商业 API |
| 咕咕数据 | 是(appKey) | JSON | 是 | UTF-8 | 商业 API |
| XTick | 是(token) | JSON | 否 | UTF-8 | 商业 API |
| AkShare | 否 | DataFrame | 视源 | UTF-8 | 开源库 |
| TuShare Pro | 是(token) | DataFrame | 是 | UTF-8 | 开源/付费库 |
各有取舍,没有「全能最优」:免费接口省成本但稳定性与合规性存疑,付费接口省心但要预算与鉴权,开源库上手快但数据质量需自校验。按你自己的成本、精度与合规需求选。
生产环境参考实现(多源降级)
下面是一段示意代码,把上面几个源当作对等节点串联:按顺序发请求,成功并解析到业务字段就返回,失败则切换到下一源。各源优先级由调用方决定,这里仅做结构演示,未做实测。
import requests def fetch_showapi(code, appkey, begin, end): r = requests.post("https://route.showapi.com/131-47", params={"appKey": appkey}, data={"begin": begin, "end": end, "code": code, "type": "bfq"}, timeout=5) body = r.json()["showapi_res_body"] if body.get("ret_code") != 0: raise ValueError("showapi ret_code != 0") row = body["list"][0] return {"name": row["stockName"], "close": row["close_price"], "open": row["open_price"], "date": row["date"]} def fetch_gugudata(symbol, appkey): r = requests.get("https://api.gugudata.com/stock/cn/realtime", params={"appkey": appkey, "symbol": symbol}, timeout=5) d = r.json()["Data"][0] return {"name": d["StockName"], "close": d["Latest"], "open": d["Open"]} def fetch_sina(code): # 新浪为文本接口,需按逗号切分解析,生产建议带 Referer 并注意 GBK r = requests.get(f"http://hq.sinajs.cn/list={code}", headers={"Referer": "https://finance.sina.com.cn"}, timeout=5) txt = r.content.decode("gbk") parts = txt.split('"')[1].split(",") return {"name": parts[0], "open": parts[1], "close": parts[3]} SOURCES = [fetch_showapi, fetch_gugudata, fetch_sina] def get_quote(code, **kwargs): last_err = None for src in SOURCES: try: return src(code, **kwargs) except Exception as e: last_err = e continue raise last_err or RuntimeError("all sources failed")踩坑清单
- 免费接口可能已停服或返回占位数据:新浪、部分公开源历史上多次调整,上线前务必发一次真实请求验证。
- 频率限制:商业 API 普遍有 QPS 限制(如咕咕数据默认 5 QPS),超频返回 429,需做退避与缓存。
- 编码问题:新浪接口为 GBK,直接用 UTF-8 解码会乱码;商业 API 多为 UTF-8 JSON。
- 复权类型:历史 K 线务必明确
bfq/qfq/hfq,前复权与后复权算出的收益率差异巨大,回测前先对齐。 - 实时性≠真实时:免费与部分付费接口存在分钟级甚至更久延迟,做高频或实盘决策需确认延迟口径。
- 鉴权安全:appKey / token / licence 必须放在服务端环境变量或密钥管理中,禁止写进前端代码、公开仓库或日志。
- 数据授权与合规:商业用途需确认数据授权范围,部分数据标注「仅学习分析,不得对外展示」。
- 代码格式差异:TuShare 用
000001.SZ,ShowAPI/XTick 用纯数字000001,调用前先确认目标接口的代码规范。
附录:补充说明
网上流传的同类型接口还有不少只被提及、写法不完整的,例如**聚合数据(juhe.cn)**的股票查询类接口、各券商官方行情/交易接口(东方财富、华泰、中信、国泰君安等)、机构级终端(同花顺 iFinD、Wind 万得)、以及面向全球低延迟的 AllTick、面向回测的 Baostock 等。它们多数需自备 key、走申请或开户流程,或写法随版本变动较大,本文未逐一展开完整调用示例,集成前请到各自官方文档核实最新写法并自行验证。
常见问题 FAQ
- 问:免费的股票行情接口还能用吗?能用的有,但稳定性与合规性无保障;新浪等公开接口历史上多次调整,上线前务必发真实请求验证。
- 问:做量化回测应该选哪个接口?优先选历史数据完整、支持复权参数且字段明确的源,如万维易源 131、TuShare Pro、AkShare;回测前确认数据时间跨度与复权口径。
- 问:实时盯盘用免费接口够吗?一般不够;免费接口常有延迟或限流,对时效性要求高的场景建议用付费商业 API 或券商官方接口。
- 问:ShowAPI 的股票接口主要能查什么?主要查沪深历史日线、复权、技术指标(MACD/BOLL/KDJ/RSI/均线)、板块与资金流向等,共 33 个接入点,偏历史分析。
- 问:新浪接口返回的数据怎么解析?它返回一段以逗号分隔的文本(
var hq_str_代码="..."),按固定顺序切分即可,注意用 GBK 解码并可能需带 Referer 头。 - 问:商业 API 的 QPS 限制一般是多少?视厂商而定,例如咕咕数据默认单 IP 5 QPS,超频返回 429;接入前看清文档并做缓存与退避。
- 问:appKey / token 应该放在哪里?必须放在服务端环境变量或密钥管理服务中,禁止写进前端、App 或公开仓库,避免泄露后被刷量。
- 问:前复权、后复权、不复权有什么区别?不复权是原始价;前复权以当前价为基准回溯调整;后复权把分红配股影响计入历史价。回测口径必须前后一致。
- 问:AkShare 和 TuShare 要付费吗?AkShare 完全免费开源;TuShare 基础版免费但有限额,完整数据需购买积分/会员。
- 问:股票代码在不同接口里格式一样吗?不一样;TuShare 用
000001.SZ,ShowAPI/XTick 用纯数字000001,新浪用sh600004前缀,调用前先核对目标接口规范。 - 问:接口返回 401/403 通常是什么原因?多为鉴权失败(appKey/token 错误、过期或未传),或免费接口被风控拦截(如新浪缺 Referer),先查鉴权再查请求头。
- 问:本文里的接口都实测过吗?都没有;本文基于公开文档与网上可查写法整理,未做真实请求实测,集成到生产前请自行发请求验证可用性与字段。