我厌倦了解析 XBRL,于是我构建了一个 SEC EDGAR API
Source: Dev.to

介绍
如果你曾尝试从 SEC 的 EDGAR 系统获取财务数据,你可能已经预料到接下来会怎样。
我想构建一个股票筛选器。想法很简单——只要显示几家公司的收入趋势。应该只要一个下午就能搞定,对吧?
不是的。首先你需要公司的 CIK 编号(Apple 是 0000320193——别问我为什么要填充到 10 位)。然后你要下载它们的 XBRL 文件,这些文件是带有命名空间的嵌套 XML,例如 us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax。不同公司对同一概念使用的标签略有不同,整个过程很快就会变成一个无底洞。
我在这上面花了太多时间,于是把整个过程封装成一个 REST API。传入股票代码,返回 JSON。完成。
公司信息
GET /v1/company/AAPL{
"cik": "320193",
"ticker": "AAPL",
"name": "Apple Inc.",
"sic": "3571",
"sic_description": "Electronic Computers",
"fiscal_year_end": "0926",
"state": "CA"
}无需进行 CIK 查询——只需使用股票代码。
财务报表
GET /v1/financials/AAPL?statement=income_statement&limit=3{
"ticker": "AAPL",
"name": "Apple Inc.",
"statements": {
"income_statement": [
{
"concept": "revenue",
"label": "Revenue from Contract with Customer",
"unit": "USD",
"data": [
{
"fiscal_year": 2025,
"fiscal_period": "FY",
"value": 383285000000.0,
"filed": "2025-10-31",
"form": "10-K"
}
]
}
]
}
}收入、净利润、每股收益(EPS)、运营费用——所有这些从 XBRL 中提取花了数小时的内容,现在只需一次调用即可获取。
用 Python 获取 Apple 的收入
import requests
url = "https://sec-edgar-data-api.p.rapidapi.com/v1/financials/AAPL"
headers = {
"x-rapidapi-key": "YOUR_API_KEY",
"x-rapidapi-host": "sec-edgar-data-api.p.rapidapi.com"
}
params = {"statement": "income_statement", "limit": 5}
response = requests.get(url, headers=headers, params=params)
data = response.json()
for item in data["statements"]["income_statement"]:
if item["concept"] == "revenue":
for year in item["data"]:
print(f"FY{year['fiscal_year']}: ${year['value']:,.0f}")FY2025: $383,285,000,000
FY2024: $394,328,000,000
FY2023: $365,817,000,000我提到的那个股票筛选器?终于完成了。
其他端点
搜索公司(模糊匹配)
GET /v1/company?q=tesla备案历史(10‑K、10‑Q、8‑K 等)
GET /v1/filings/TSLA?form=10-K&limit=5资产负债表和现金流
GET /v1/financials/MSFT?statement=balance_sheet
GET /v1/financials/MSFT?statement=cash_flow该 API 覆盖所有 10,000 多家在 SEC 注册的上市公司。数据直接来自 SEC EDGAR(data.sec.gov),因此会随公司提交文件而实时更新。
为什么不直接使用现有的 API?
大多数替代方案的基本访问费用为 $50+/month,或者在你只需要少数几个时就暴露出数十个端点。我想要的是一个初级开发者能在五分钟内上手的东西。如果文档比 README 还长,可能就太复杂了。
试一试
RapidAPI 免费套餐 — 每月 100 次请求,无需信用卡:
在 RapidAPI 上的 SEC EDGAR 数据 API
我还运营了一个机器人 @SECEdgarBot,它会在重要文件发布时发送推文,并标记有趣的金融信号。虽然还处于早期阶段,但构建过程非常有趣。
所有数据均来源于 SEC EDGAR(data.sec.gov)——公开的美国政府数据。