5 分钟快速接入(Quick Start)

三步调通第一个请求:注册领取试用 Key → 把请求域名换成本站国内加速网关地址 → 发起调用,返回的全部 283 个接口数据与 FMP 官方 Ultimate 档位完全一致。

1
注册,领取试用 Key

微信扫码注册后,登录个人中心即可领取 1 个月免费试用 Key,无需充值,全部 283 个接口即刻可用。

微信扫码注册 →
2
替换请求地址(Base URL)

请求地址改成下面这个,统一支持 /stable/ 标准路径(旧版 v3 / v4 路径已退役):

https://quote-fmp.com/stable/

原生转发、不做二次加工,解决国内直连超时与 yfinance 429 封 IP 问题。

3
发起第一个请求

参考下方任一语言示例,几行代码即可拿到实时行情与财报数据。分钟限流与滚动 30 天流量在个人中心实时可见。

三行代码调通

cURL / Python / JavaScript

以查询苹果公司(AAPL)的 Stock Quote(股票实时报价)(路径 /stable/quote)为例,建议将 API Key 存入环境变量 FMP_KEY 即可运行:

curl
curl "https://quote-fmp.com/stable/quote?symbol=AAPL&apikey=你的APIKEY"
Python(requests)
import os
import requests

r = requests.get(
    "https://quote-fmp.com/stable/quote",
    params={"symbol": "AAPL", "apikey": os.environ["FMP_KEY"]},
    timeout=10,
)
print(r.json())
JavaScript(fetch)
const r = await fetch(
  "https://quote-fmp.com/stable/quote?symbol=AAPL&apikey=" + process.env.FMP_KEY
);
const data = await r.json();
console.log(data);

Python 量化与投研实战模板

pandas DataFrame + 429 自动退避

在批量拉取多年 Income Statement(利润表)、Stock Price and Volume Data(历史日线行情) 或轮询股票池时,建议封装一个带 requests.Session() 连接池复用与 HTTP 429 指数退避重试的辅助函数,直接将返回的 JSON 数组转为 pandas.DataFrame 分析:

Python(requests + pandas 生产级封装)
import os
import time
import requests
import pandas as pd

BASE_URL = "https://quote-fmp.com/stable"
API_KEY = os.environ["FMP_KEY"]
session = requests.Session()

def fmp_get(endpoint: str, **params):
    query = {**params, "apikey": API_KEY}
    for attempt in range(3):
        resp = session.get(f"{BASE_URL}/{endpoint.lstrip('/')}", params=query, timeout=15)
        if resp.status_code == 429:
            message = resp.text.lower()
            if "bandwidth limit" in message or "rolling 30-day" in message:
                raise RuntimeError("滚动 30 天流量额度不足:停止重试,先在个人中心核对用量")
            if attempt == 2:
                resp.raise_for_status()
            # 仅短期限流作有限重试;优先尊重 Retry-After,没有提示时等一个分钟窗口
            try:
                delay = max(1.0, float(resp.headers.get("Retry-After", "60")))
            except ValueError:
                delay = 60.0
            time.sleep(delay)
            continue
        resp.raise_for_status()
        return resp.json()
    raise RuntimeError(f"请求超限: {endpoint}")

# 示例:拉取苹果 (AAPL) 最近 4 期年度利润表并按 acceptedDate 对齐
df = pd.DataFrame(fmp_get("income-statement", symbol="AAPL", period="annual", limit=4))
print(df[["date", "filingDate", "acceptedDate", "reportedCurrency", "revenue", "netIncome", "eps"]])

多市场标的代码传参规则

Multi-Market Symbol Rules

FMP 使用统一的 symbol 参数标识全球不同交易所与资产类别的标的。调用美股、港股财报、A股行情、外汇汇率、加密货币或黄金原油接口前,请按以下格式传参(不确定代码时可先调 Stock Symbol Search(证券代码搜索) 或 Company Name Search(公司名称搜索)):

市场 / 资产类别symbol 传参格式规则常用标的代码示例代表接口入口
US Equities & ETFs(美股与美股 ETF)直接传交易所挂牌代码(无需后缀)AAPL、NVDA、MSFT、SPY、QQQStock Quote(股票实时报价)
HK & China A-Shares(港股与沪深 A 股)港股加 .HK;上交所加 .SS;深交所加 .SZ0700.HK、9988.HK、600519.SS、000858.SZIncome Statement(利润表)
Global Indexes(全球主要股票指数)指数代码前加 ^(URL 中可转义为 %5E)^GSPC(标普500)、^NDX(纳指100)、^HSI、^VIXIndex Quote(指数实时报价)
Forex Pairs(实时外汇汇率)6 位基准货币+计价货币拼写EURUSD、USDJPY、GBPUSD、USDCNH(离岸人民币)Forex Quote(外汇实时报价)
Cryptocurrency(加密货币行情)币种代码 + USD 计价后缀BTCUSD、ETHUSD、SOLUSDFull Cryptocurrency Quote(加密货币报价)
Commodities(黄金原油等大宗商品)商品代码 + USD(或主力合约代码)GCUSD(黄金)、SIUSD(白银)、CLUSD(原油)Commodities Quote(大宗商品报价)

常见 HTTP 状态码与排查指南

Status Codes & Troubleshooting

网关严格遵循标准 HTTP 状态码规范。当脚本出现非预期响应或空数组 [] 时,可按下表快速定位原因:

HTTP 状态码状态含义排查方法与解决建议
200 OK请求成功并返回 JSON / CSV 数据若返回空数组 [],请检查:① 港股/A股是否漏写 .HK / .SS 后缀;② from / to 日期是否落在周末或休市日(可调 Holidays By Exchange(交易所休市日历) 核对);③ 非美股标的是否误调了仅限美股的 13F 或国会交易接口。
400 Bad Request凭据冲突(Query 与 Header 的 apikey 不一致)或参数错误两种情形:① 缺必填参数或参数值非法时,上游返回 400 Query Error: Invalid or missing query parameter - xxx,注意该响应体是纯文本而非 JSON 数组,客户端请先看 Content-Type 再决定是否调用 resp.json();② 在 URL 查询参数与 HTTP Header 中同时传入不同的 apikey,触发 Conflicting API KEY credentials.,统一保留一处即可。
401 UnauthorizedAPI Key 缺失、拼写错误、已过期或已被重置作废网关对未传 Key、错误 Key、已过有效期(expires_at)或已重置作废的 Key 统一返回 401 Invalid API KEY.;请登录「个人中心」核对有效期与最新 Key。
403 Forbidden端点处于网关策略封禁列表(block_paths)仅当路径命中网关策略封禁配置时返回(当前生产环境 block_paths 为空,/stable/* 全量开放,正常调用不会触发)。
404 Not Found接口路径不存在或使用了旧版 v3/v4 前缀本站仅支持 FMP 最新 /stable/* 标准路径(不支持旧版 /api/v3/ 或 /api/v4/),请对照 接口总览 核对端点名称。
429 Too Many Requests触发每分钟调用次数(RPM)或滚动 30 天流量上限先看响应原因:分钟限流可按 Retry-After 提示有限重试,没有提示时等待分钟窗口;若响应说明 Bandwidth limit reached for the rolling 30-day window.,请停止密集重试,在个人中心核对用量,等待旧消耗滑出窗口或升级档位。Bulk(全市场批量数据) 可减少请求次数,但不保证减少响应字节,也不能解除已耗尽的流量额度。

提示:请妥善保管你的 API Key,通过环境变量 os.environ["FMP_KEY"] 读取,不要硬编码提交到公开 GitHub 仓库或前端页面。若 Key 不慎泄露,可随时在个人中心一键更换。更多计费与限流细节请见 常见问题 FAQ。

量化回测与数据清洗三大实盘避坑

Data Hygiene & Field Pitfalls

将接口数据接入回测引擎或投研数据库前,请重点留意以下三个高频字段口径细节:

1. 财报回测防未来函数(acceptedDate vs date)

三大财务报表同时返回 date(财期截止日)、filingDate(披露日)与 acceptedDate(SEC 精确到秒接收时间,季报常滞后 30~45 天)。构建 Point-in-Time 量化因子必须按 acceptedDate 对齐交易日。

Income Statement(利润表) →
2. 日线前复权与 vwap 四价均值口径

常规历史日线(historical-price-eod/full)仅做拆股调整且已结算日线的 vwap = (open+high+low+close)/4(四价均值)。回测需含现金分红的前复权价格序列时,请调用 dividend-adjusted 接口。

Dividend-Adjusted Price Chart(复权日线) →
3. 跨市场 ADR 财报币种与 13F CIK 补零

台积电(TSM)等 ADR 的股价为 USD,但原始财报 reportedCurrency 为 TWD(新台币),直接相除会算错 PE;机构 13F 查询时 cik 参数须用 zfill(10) 补齐 10 位前导零(如 0001067983)。

Financial Ratios(财务比率公式对账) →

常用核心接口直达

Core Endpoints

还没有 Key?现在领取免费试用

微信扫码注册即可领取 1 个月试用 Key,全部接口可用;每个账号限领一次。

免费试用 1 个月 →