付费端点 · 付费

因子选股(量化筛股) API

按因子表达式筛选全市场股票。expr 是多因子交集,例如:intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15])。preset 用官方 22 个预设名(大小写/下划线不敏感:low_pe 等价 LowPE):LowPE/LowPB/HighDividend/ValuationPercentile/PEG/KDJOversold/RSIOversold/NineTurnGreen9/HighRating/TargetPriceUpside/HighROE/HighGrowth/LowDebt/PositiveCashFlow/MainInflow/SustainedInflow/HighShortRatio/HighDividendLowValuation/WhiteHorseGrowth/Turnaround/SmallCapValue/TechFundamentalCombo。常用因子:PE_TTM/PB/PS_TTM/TotalMV/DividendRatioTTM(估值)· ROE/ROETTM/ROIC/GrossIncomeRatioTTM/NetProfitRatioTTM(盈利)· OperatingRevenueGrowRate/NPParentCompanyYOY(成长)· CurrentRatio/DebtAssetsRatio/NAPS(负债)· NetOperateCashFlowTTM(现金流)。用户问『筛选股票/符合条件的股票/低估高ROE』时用这个。

付费GET /v1/screen
接口签名
GET /v1/screen?expr=intersect(%5BPE_TTM%20%3E%200%2C%20PE_TTM%20%3C%2020%2C%20ROETTM%20%3E%2015%5D)
一行可跑
curl "https://api.ashareapi.com/v1/screen?expr=intersect(%5BPE_TTM%20%3E%200%2C%20PE_TTM%20%3C%2020%2C%20ROETTM%20%3E%2015%5D)&key=YOUR_KEY"
参数:expr · preset · limit · orderby · desc · market带 * 为必填

快速开始

把下面的代码里的 Key 换成你的(免费端点无需 Key,直接调):

curl
# 注:expr 的值已做 URL 编码(含 [ ] 空格 等)
# 推荐:Authorization 头(密钥不进日志)
curl -H "Authorization: Bearer YOUR_KEY" \
  "https://api.ashareapi.com/v1/screen?expr=intersect(%5BPE_TTM%20%3E%200%2C%20PE_TTM%20%3C%2020%2C%20ROETTM%20%3E%2015%5D)"

# 快速测试:直接浏览器打开(?key= 会留在日志/历史里,别用于生产)
curl "https://api.ashareapi.com/v1/screen?expr=intersect(%5BPE_TTM%20%3E%200%2C%20PE_TTM%20%3C%2020%2C%20ROETTM%20%3E%2015%5D)&key=YOUR_KEY"
Python
import requests

r = requests.get(
    "https://api.ashareapi.com/v1/screen",
    headers={"Authorization": "Bearer YOUR_KEY"},
    params={},
    timeout=30,
)
print(r.json())
JavaScript
const r = await fetch("https://api.ashareapi.com/v1/screen?expr=intersect(%5BPE_TTM%20%3E%200%2C%20PE_TTM%20%3C%2020%2C%20ROETTM%20%3E%2015%5D)", {
  headers: { Authorization: "Bearer YOUR_KEY" },
});
console.log(await r.json());

参数

exprstring
因子表达式,如 intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15])
presetstring
预设名(与 expr 二选一):LowPE/LowPB/HighDividend/PEG/HighROE 等 22 个
limitinteger
返回条数,默认 20
orderbystring
排序字段(如 ROETTM)
descboolean
True 降序 / False 升序
marketstring
市场:hs 沪深 / hk 港股 / us 美股(留空=沪深)

返回示例

取样:`GET /v1/screen?expr=intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15])&limit=3`(2026-09-26 线上真实返回,已截断)。⚠️ 注意 `data` 是 Markdown 表格字符串,不是数组 —— 机器读取请用 `structured` 或 `tables`。

{
  "ok": true,
  "endpoint": "screen",
  "tier": "unlimited",
  "elapsed_ms": 2430,
  "source": "multi",
  "data": "| code | name | PE_TTM | ROETTM | ClosePrice | ChangePCT |\n| --- | --- | --- | --- | --- | --- |\n| sz000656 | 金科股份 | 0.35 | 883.0546 | 1.23 | -2.38 |\n| … |",
  "structured": [
    { "code": "sz000656", "name": "金科股份", "PE_TTM": "0.35",
      "ROETTM": "883.0546", "ClosePrice": "1.23", "ChangePCT": "-2.38" },
    { "code": "sh600841", "name": "动力新科", "PE_TTM": "2.40",
      "ROETTM": "50.3702", "ClosePrice": "5.63", "ChangePCT": "-1.57" }
  ],
  "tables": [ [ /* 与 structured 同内容的表格数组 */ ] ]
}
返回

统一返回信封: { ok, endpoint, tier, elapsed_ms, source, data }

数据在 `data` 字段;上游为空时 `ok:false` 且不扣次数。

限流与额度

免费端点无需 Key(匿名 5 次/分,解一次 PoW 可到 60 次/分)。付费端点按档位限流:体验 30 · 标准 120 · 专业 300 · 不限量 600 次/分;买断档按总量计(不用完不过期)。

看错误码对照表 →

常见问题

为什么 `data` 是一个 Markdown 表格字符串?

为了让你直接把结果贴给 LLM,`data` 是 Markdown 表格文本;机器读取请用同级的 `structured`(对象数组)或 `tables`(表格数组),三者内容完全一致。

选股表达式怎么写?

用 `intersect([...])` 组合条件,例如 `intersect([PE_TTM > 0, PE_TTM < 20, ROETTM > 15])`。也可以用 `preset` 预设(如 `LowPE`)。`limit` 默认 20。返回列由你写在 `expr` 里的因子决定。

`/v1/screen` 免费吗?有免费的替代吗?

不免费(付费端点)。无 Key 调用返回 `{"error":"需要 API Key(此端点属付费层)"}`。免费替代:`/v1/changedist`(涨跌分布)、`/v1/hot`(热搜榜)、`/v1/market-overview`(市场总览)。

返回里有哪些字段?

由你的表达式决定 —— 写在 `expr` 里的因子会直接成为返回列。示例表达式的返回列:`code` / `name` / `PE_TTM` / `ROETTM` / `ClosePrice` / `ChangePCT`。

通用问题(所有端点通用)

这些端点需要 API Key 吗?

免费端点不需要:health、challenge、quote、kline、hot、market-overview、changedist 匿名即可调用。付费端点需要:在请求头带 `Authorization: Bearer <你的 Key>`。⚠️ 匿名额度按调用者类型分级:浏览器(真人)5 次/分;脚本 / SDK / AI Agent(curl、requests、axios、openai 等 UA)2 次/分 —— 自动化流量更易被滥用。解一次 PoW 挑战(`GET /v1/challenge`,再带 `X-PoW` 头)可提到 60 次/分,与类型无关。

返回为空或上游报错时,会扣我的调用次数吗?

不会。上游失败或空结果时返回 `ok:false`,并自动退回本次计费(total_calls / usage_log / ep_log 三处同时回滚)。只有真正取到数据的请求才计入用量。

数据多久更新一次?

行情类(quote / kline / orderbook / changedist)为实时或当日;财务、股东、分红、事件等为上游披露后 T+1 内。响应里的 `source` 字段标明本次实际命中的数据通道。

一次请求能批量拿多只股票吗?

不能。`code` 是单值参数,一次一只;批量请并发调用(注意各自档位的每分钟限流)。

怎么在 Claude / Cursor / ChatGPT 里直接调用?

配一次 MCP 即可,之后直接问 AI「查一下……」它会自己调。MCP 暴露 24 个工具,覆盖行情 / 财务 / 选股 / 板块 / 宏观。

要把它接进 AI Agent?

配一次 MCP,之后问 AI「查一下……」它自己调。

← 返回完整端点清单