一、前言
炒股、做量化的朋友经常需要同时跟踪多只股票或期货合约的实时价格。今天给大家分享一个免费的行情 API,支持 A股、港股、期货,并且可以批量请求,效率拉满。文末附完整可运行代码。
二、API 简介
- 接口地址:
http://ddnsapi.top:1808/api/v1/request - 请求方式:POST(JSON)
- 请求类型:
batch_basic_quote(批量基础行情) - 频率限制:未携带 token 时每分钟 120 次请求
- 支持品种:A股(如
600519)、港股(如HK3908)、期货主连(如lh9999生猪、m9999豆粕、sn9999沪锡)
三、核心代码
python
import requests import json headers = { # 没有token限制每分钟120次请求 #"token": "", } URL_API = "http://ddnsapi.top:1808/api/v1/request" def ddnsapi_post(data): try: req = requests.post(URL_API, json=data, timeout=5, headers=headers) if req.status_code == 200: try: result = req.json() except ValueError: try: result = json.loads(req.text) except ValueError: print("响应不是合法 JSON:", req.text[:200]) return None if isinstance(result, str): try: result = json.loads(result) except ValueError: print("响应内容是字符串且无法解析为 JSON:", result[:200]) return None return result else: print("请求失败:", URL_API, req.status_code, req.text) return None except requests.RequestException as e: print("请求异常:", e) return None # 批量获取实时行情价格 支持A股/港股/期货 codelist = ["lh9999", "m9999", "sn9999", "600519", "HK3908"] data = {'req_type': 'batch_basic_quote', 'codelist': codelist} data_json = ddnsapi_post(data) print(data_json)四、返回结果示例
python
{ 'status': True, 'fields': ['代码', '名称', '昨收', '最高', '最低', '现价'], 'items': [ ['HK3908', '中金公司', 19.35, 19.69, 19.02, 19.13], ['m9999', '豆粕主连', 3359, 3372, 3350, 3356], ['lh9999', '生猪主连', 10295, 10615, 10295, 10560], ['sn9999', '沪锡主连', 409980, 412950, 410200, 412790], ['600519', '贵州茅台', 1243.88, 1245.87, 1230.88, 1235.58] ] }返回字段说明:
| 字段 | 含义 |
|---|---|
| 代码 | 证券代码 |
| 名称 | 证券名称 |
| 昨收 | 昨日收盘价 |
| 最高 | 当日最高价 |
| 最低 | 当日最低价 |
| 现价 | 当前最新价 |
五、代码亮点
- JSON 解析容错:先
req.json(),失败再json.loads(req.text),兼容部分 API 返回字符串包裹 JSON 的情况(源码第 13–26 行做了两层解析)。 - 异常处理完善:捕获
requests.RequestException,网络抖动不会导致程序崩溃。 - 超时控制:
timeout=5,避免接口无响应时程序卡死。
六、使用场景
- 量化策略实时监控多个标的
- 自建盯盘小工具
- 学习 Python 接口调用与 JSON 解析
七、注意事项
- 未带 token 每分钟最多 120 次请求,高频使用建议申请 token
- 期货代码带
9999后缀表示主连合约 - 港股代码需加
HK前缀,A股直接用 6 位数字代码
八、总结
通过这个免费 API,十几行代码就能批量拿到 A股、港股、期货的实时报价,省去了自己写爬虫或接复杂券商 SDK 的麻烦。建议大家在本地跑一下codelist,换成自己关注的标的即可。