我厌倦了解析 XBRL,于是我构建了一个 SEC EDGAR API

发布: (2026年3月14日 GMT+8 09:24)
4 分钟阅读
原文: Dev.to

Source: Dev.to

《我厌倦了解析 XBRL,于是我构建了一个 SEC EDGAR API》封面图片

介绍

如果你曾尝试从 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)——公开的美国政府数据。

0 浏览
Back to Blog

相关文章

阅读更多 »