Stock Screener条件选股

该接口是面向全市场证券的横截面多条件初筛工具。支持按市值规模、交易活跃度、波动率(Beta)、派息水平及所属行业与交易所快速过滤,一步剔除 ETF 与基金,生成符合策略底线的候选股票池。

GEThttps://quote-fmp.com/stable/company-screener

数据更新周期

该接口暂无固定更新周期(多为按需更新的参考或静态数据)。

接口说明

  • 初始股票池筛选漏斗:在进入复杂的财务建模或多因子打分前,先通过市值下限、日均成交量门槛与正常交易状态过滤,一键剔除全市场中的微盘仙股、流动性枯竭标的以及 ETF 和封闭式基金,将研究范围收敛至高质量可交易个股。
  • 板块轮动与风格定型:支持按一级板块、二级细分行业、所在国家与交易所精确圈定赛道,并结合 Beta 波动率区间与年度现金派息门槛,快速切分出“高弹性成长股池”或“低波动高股息防御股池”。
  • 省配额两阶段选股起点:单次请求即可返回数百至上千只符合基础维度的股票代码与核心档案快照,避免对全市场数万只证券盲目发起单票查询,是配合下游批量财务比率接口开展多因子选股的标准第一环。

请求参数

20 个参数
参数类型要求示例说明
marketCapMoreThannumber可选1000000筛选市值大于该值(单位美元)的股票。
marketCapLowerThannumber可选10000000000000筛选市值小于该值(单位美元)的股票。
sectorstring可选Technology板块(sector),如 Technology、Healthcare,用于筛选股票。
industrystring可选Consumer Electronics细分行业(industry),如 Software、Biotechnology,用于筛选股票。
betaMoreThannumber可选0.5筛选 Beta 系数大于该值的股票。
betaLowerThannumber可选1.5筛选 Beta 系数小于该值的股票。
priceMoreThannumber可选10筛选最新价高于该价格(美元)的股票。
priceLowerThannumber可选500筛选最新价低于该价格(美元)的股票。
dividendMoreThannumber可选0.5筛选股息率高于该百分比数值的股票。
dividendLowerThannumber可选2筛选股息率低于该百分比数值的股票。
volumeMoreThannumber可选1000筛选成交量大于该股数的股票。
volumeLowerThannumber可选100000000筛选成交量小于该股数的股票。
exchangestring可选NASDAQ目标交易所代码或名称,如 NASDAQ、NYSE、AMEX。
countrystring可选US公司注册或上市国家,用于按地域筛选。
isEtfboolean可选false是否仅返回 ETF:true 仅 ETF,false 排除。
isFundboolean可选false是否仅返回基金:true 仅基金,false 排除。
isActivelyTradingboolean可选true是否仅返回在活跃交易的标的。
pagenumber可选0分页页码,从 0 开始,配合每页条数翻页取更多数据(从 0 起算的分页游标;当响应返回空数组 [] 时代表已翻至历史末页)
limitnumber可选1000返回结果条数上限,用于控制单次响应大小。
includeAllShareClassesboolean可选false是否包含同一公司全部股票类别(A/B/C 类股)。

调用代码示例

Python 关键代码

构建量化基础股票池时,建议固定携带 isEtf=false、isFund=false、isActivelyTrading=true 与 includeAllShareClasses=false 四个去噪参数。

Python(核心参数与字段清洗逻辑)
resp = requests.get(
    "https://quote-fmp.com/stable/company-screener",
    params={
        "exchange": "NASDAQ", "sector": "Technology",
        "marketCapMoreThan": 10_000_000_000,  # 单位为 1 美元(100 亿美元)
        "isEtf": "false", "isFund": "false", "isActivelyTrading": "true",
        "includeAllShareClasses": "false", "limit": 500, "apikey": FMP_KEY,
    },
)
df = pd.DataFrame(resp.json())
# lastAnnualDividend 为年度每股派息额(美元),除以 price 换算真实股息率百分比
df["dividendYieldPct"] = (df["lastAnnualDividend"] / df["price"] * 100).round(2)

参数使用和避坑

3 组参数组合 · 3 条避坑

以下列出本接口在高频投研与回测场景下的常用 Query 参数组合写法:

投研场景Query 参数组合示例返回数据特征与用途
构建美股大盘科技股纯股票池(剔除 ETF / 基金 / 多类股)exchange=NASDAQ&sector=Technology&marketCapMoreThan=10000000000&isEtf=false&isFund=false&isActivelyTrading=true&includeAllShareClasses=false返回纳斯达克市值 > 100 亿美元、正常交易的科技行业实体上市公司,且同一公司仅保留主交易代码。
筛选低波动、持续现金派息的防御型价值股country=US&marketCapMoreThan=5000000000&betaLowerThan=0.8&dividendMoreThan=2&isEtf=false&isFund=false过滤出美国市场市值 > 50 亿美元、Beta < 0.8 且过去一年每股派息金额 > 2 美元的稳健派息公司。
跨国市场(如港股 / 伦交所 / 多伦多)流动性初筛exchange=HKSE&marketCapMoreThan=10000000000&volumeMoreThan=1000000&isEtf=false按目标交易所代码(exchange)筛选市值与日均成交量达标的活跃个股。
防幸存者偏差严禁把当前筛选器返回结果直接当作长周期历史回测的静态股票池

本接口返回的是当前最新截面存活且市值达标的公司。如果拿今天筛出的「市值 > 500 亿美元科技股名单」去跑过去 10 年的历史回测,既漏掉了中途破产或被并购退市的公司,又相当于在 2016 年就提前知道了谁能涨到 500 亿美元(前视偏差 + 幸存者偏差,详见 如何消除美股回测中的幸存者偏差)。本接口仅应用于实盘每日/每周选股池生成。

枚举值校验sector 与 industry 传参大小写及拼写不匹配会静默返回空数组 []

如果手写非标准行业名称(例如把 "Technology" 简写为 "Tech",或把 "Consumer Electronics" 拼错),接口不会报 400 错误,而是返回 200 OK 空数组 []。写自动化筛选脚本前,务必先拉取 Available Sectors(可用板块清单)与 Available Industries(可用细分行业清单)缓存合法枚举词表。

基本面二次精筛如何叠加 PE / ROE / 自由现金流做多因子选股?用批量比率接口本地 Join

本接口仅包含行情与档案维度指标(市值、价格、Beta、成交量、派息额),不含市盈率(PE)或净资产收益率(ROE)。最高效的工程做法是:先用本接口 1 次请求筛出几百只流动性合格的候选 symbol,再调用 1 次 Ratios TTM Bulk(TTM 财务比率批量)或 Key Metrics TTM Bulk(TTM 关键指标批量),在本地 pandas 中按 symbol 关联即可秒级完成全市场价值因子选股。

返回数据

15 个字段

本接口示例响应共包含 15 个字段(数值型 5 个,文本/日期/布尔型 10 个)。下表列出全部字段名、类型、首条记录真实样本值与中文释义,实际返回会因接口与数据状态有所不同。

字段类型示例值说明
symbolstring"AAPL"证券代码
companyNamestring"Apple Inc."公司名称
marketCapnumber4885602246714总市值
sectorstring"Technology"板块
industrystring"Consumer Electronics"细分行业
betanumber1.097Beta 系数
pricenumber332.64001最新价
lastAnnualDividendnumber1.05最近一次年度每股派息
volumenumber29909012成交量
exchangestring"NASDAQ Global Select"交易所代码
exchangeShortNamestring"NASDAQ"交易所简称(如 NASDAQ)
countrystring"US"国家/地区
isEtfbooleanfalse是否为 ETF
isFundbooleanfalse是否为基金
isActivelyTradingbooleantrue是否在活跃交易
查看响应数据示例(原始 JSON)
[
{
"symbol": "AAPL",
"companyName": "Apple Inc.",
"marketCap": 4885602246714,
"sector": "Technology",
"industry": "Consumer Electronics",
"beta": 1.097,
"price": 332.64001,
"lastAnnualDividend": 1.05,
"volume": 29909012,
"exchange": "NASDAQ Global Select",
"exchangeShortName": "NASDAQ",
"country": "US",
"isEtf": false,
"isFund": false,
"isActivelyTrading": true
}
]

常见问题解答(FAQ)

3 个问题
为什么不传 isEtf=false 时,筛选结果里会混入 SPY、QQQ 等指数 ETF?

因为 FMP 的证券主表同时收录了上市公司股票、ETF 与封闭式基金。如果只传 marketCapMoreThan 或 volumeMoreThan 而不加类型限制,成交量巨大的宽基 ETF 和行业 ETF 也会命中条件。做纯个股选股时,请固定加上 isEtf=false&isFund=false。

includeAllShareClasses=false 具体解决了什么问题?

部分美股公司发行了多类不同投票权的股票并同时挂牌交易(如 Alphabet 的 GOOGL 与 GOOG、伯克希尔的 BRK-A 与 BRK-B)。若不设 includeAllShareClasses=false,同一家公司在筛选结果中会出现两次,导致等权组合或行业统计中该公司权重被重复计算。

返回字段里的 exchange 和 exchangeShortName 有什么区别?传参该用哪个?

exchange 是交易所全称(如 "NASDAQ Global Select"、"New York Stock Exchange"),而 exchangeShortName 是标准简写代码(如 "NASDAQ"、"NYSE"、"AMEX")。在向本接口传参过滤时,请始终使用简写代码(如 exchange=NASDAQ)。

同模块相关接口对比

Search

本接口路径 /stable/company-screener,无必填参数。 同一模块「Search」下共 7 个接口,下表列出其余 6 个, 按粒度与查询维度对比,避免选错接口。

接口路径核心差异与适用场景
股票代码检索Stock Symbol Search/stable/search-symbol按股票代码前缀或片段在全球多个证券市场中快速检索匹配标的,覆盖美股、国际股票与 ETF
公司名称检索Company Name Search/stable/search-name通过公司英文全称、简称或资产名称关键词反向检索全球交易所上市的股票与 ETF 代码
CIK 检索Search Cik/stable/search-cik按美国证监会(SEC)中央索引键(CIK)精确反查对应的上市公司档案、股票代码及挂牌交易所
CUSIP 检索CUSIP/stable/search-cusip按北美统一证券识别码(CUSIP)精确查询对应的上市公司名称、交易代码及实时市值
ISIN 检索Search Isin/stable/search-isin按 12 位国际证券识别码(ISIN)精确检索对应的证券名称、股票代码及最新市值
多交易所上市检索Exchange Variants/stable/search-exchange-variants查询单一上市公司在全球所有公开证券交易所的双重上市、交叉挂牌及不同币种交易代码变体

Search(证券搜索)全部接口目录 →

需要稳定访问 条件选股 数据?注册即可获取专属 API Key,免费体验全部接口。
免费试用 1 个月