> Source: https://ashareapi.com/wiki/batch-fetch/  ·  Markdown version for LLMs / AI agents

参考

# 批量取数
 只有部分端点支持一次传多个代码，而且每个端点拼回来的方式都不一样 —— 有的多一列 symbol，有的把代码拼进列名。传之前先确认它属于哪一种。

## 三种批量行为

 实测下来，传 `sh600519,sz000001` 会得到三种完全不同的结果：

 
 | 

| 
 | 行为 
 | 表现 
 | 端点 




 

| 
 | **正常合并**（多出代码列，一行一只） 
 | 行数翻倍，且每行**带代码列** 
 | `quote`（多 `symbol` 列）· `technical` · `profile` 



| 
 | **前缀列名**（宽表，行数不变） 
 | 列数翻倍，列名变成 `sh600519_code` / `sz000001_code` 
 | `chip` 



| 
 | **只取第一个代码** 
 | 忽略后续代码，**不报错** 
 | `fund` · `dividend` · `block-trade` · `minute` · `snapshot` 






 ⚠️ 还有一个特例：**margin-trade 的端点描述声明支持批量**，但实测传两只时返回结构与单只相同 —— 以实测为准。


## 三种行为各自怎么取

 **① 正常合并（ quote / technical / profile ）** —— 直接按代码列筛：

```
rows = resp["data"]
moutai = [r for r in rows if r["code"] == "sh600519"] # technical / profile
# quote 的代码列叫 symbol，不是 code
moutai_q = [r for r in rows if r["symbol"] == "sh600519"]
```
 ⚠️ **quote 用 symbol ， technical / profile 用 code** —— 列名不一致。

 **② 前缀列名（ chip ）** —— 行数不变，列名带代码前缀，取数要拼接列名：

```
rows = resp["data"]
for r in rows:
 code = r.get("sh600519_code") or r.get("sz000001_code")
 if code and code != "-":
 profit = r.get(f"{code}_chipProfitRate")
```
 ⚠️ 这种形态**每行一半是 -**（因为它把两只票并排放在同一行）—— 别当成缺数据。

 **③ 只取第一个代码** —— 必须**循环调用**：

```
import time, requests

CODES = ["sh600519", "sz000001", "sh601318"]
out = {}
for c in CODES:
 r = requests.get("https://api.ashareapi.com/v1/dividend",
 params={"code": c}, headers={"Authorization": f"Bearer {KEY}"},
 timeout=10).json()
 if r.get("ok"):
 out[c] = r["data"]
 time.sleep(0.25) # ← 降并发，别打满限流
```
 

- **加间隔**：限流按每分钟调用数算，循环里不加间隔最容易撞 429。


- **判 ok 再存**：空结果也是 `ok: true` + 空数组，属正常（见[空结果不等于故障](/wiki/empty-result)）。


- **429 要重试**：读 `Retry-After` 头，等待后重试；**不要原速重试**。




## 常见误用

 

- **以为所有端点都能批量** —— 只有部分支持，其余会**静默只取第一个代码**（丢数据，不报错）。


- **用同一个列名筛所有端点** —— `quote` 是 `symbol`，`technical` / `profile` 是 `code`。


- **拿 chip 当行数组拼** —— 它是**宽表**（前缀列名），行数不翻倍、每行一半是 `-`。


- **循环里不加间隔** —— 直接吃 429。


- **把 429 当失败丢弃** —— 它是限流不是故障，等待重试即可。


- **按行数估算成本** —— 计费按**请求次数**算，一次批量请求就算一次。




 最后更新: 2026-10-07
 支持情况与返回结构为 2026-10-07 逐端点实测（同一端点分别传单只代码与 sh600519,sz000001，对比行数、列数与列名）。

 接着看

-
[全部端点清单](/endpoints)

-
[空结果不等于故障](/wiki/empty-result)

 [← 全部 Wiki](/wiki)
