Tony Wang7 分で読めますSEC EDGAR のスクレイピング方法 2026年版(API & Python)
2026年に SEC EDGAR のファイリング・財務・インサイダーデータを取得する方法。EDGAR 公式の無料 API、またはパース済みセクションと XBRL 用の構造化 API。
SEC EDGAR は、このシリーズの中でも「これをスクレイピングする必要があるか」という問いへの正直な答えが「EDGAR がそもそも無料で提供している」から始まる数少ないプラットフォームの一つです。data.sec.gov と efts.sec.gov にある公式 API は公開されており認証不要で、企業のファイリング、提出履歴、XBRL 財務データを JSON として提供しています。キーもサインアップも要りません。EDGAR 独自の API がしないことは、10-K を実際に必要なリスクファクターのセクションに分解することや、XBRL タグを比率付きの正規化された損益計算書に変換することです。このガイドでは、EDGAR 独自の無料 API とその現実的な限界、ノーコードの選択肢、そしてパース作業のための構造化 API を取り上げ、それぞれの法的な実情を最初に示します。
なぜ SEC EDGAR をスクレイピングするのか?
SEC EDGAR はすべての米国上場企業のファイリング履歴を保持しており、次のような用途を支えます。
- 企業財務のリサーチ — ティッカーや CIK を指定して、比率付きの正規化された損益計算書・貸借対照表・キャッシュフローデータを取得できます。
- ファイリングと開示のモニタリング — 新しい 10-K、10-Q、8-K のファイリングが届いた時点で追跡したり、全フィラーを対象にトピックやフレーズの全文検索を再実行したりできます。
- デューデリジェンスとリスクリサーチ — 100ページの文書を最初から最後まで読む代わりに、特定のファイリングセクション(リスクファクター、MD&A)を抽出できます。
- インサイダーおよび機関投資家保有の分析 — 企業やマネージャーごとの Form 4 インサイダー取引と 13F 機関投資家保有を追跡できます。
- 市場データとの突き合わせ — SEC のファンダメンタルズを Yahoo Finance や Google Finance からのライブ株価や時価総額と組み合わせられます。
SEC EDGAR をスクレイピングするのは合法か?
選択肢1: EDGAR 独自の無料 API(とその現実的な限界)
SEC の開発者向けリソースとEDGAR API の概要では、企業の提出履歴と XBRL データには data.sec.gov、全文検索には efts.sec.gov を使うよう案内されています。どちらも公開 JSON で、準拠した User-Agent さえ送ればキーは不要です。
curl "https://data.sec.gov/submissions/CIK0000320193.json" \
-H "User-Agent: YourCompany research@yourcompany.com"
これは Apple の全ファイリング履歴——すべての 10-K、10-Q、8-K、Form 4 をアクセッション番号とドキュメント URL 付きで——を SEC から直接、無料で返します。生のファイリングメタデータと XBRL 企業データを取得する、正当でサインアップ不要な方法です。
本当にエンジニアリングの時間がかかり始めるのはここからです。
- 10-K はレコードではなくドキュメントです。
primary_doc_urlはファイリング全体の HTML を指しており、しばしば100ページ以上あります。リスクファクターや MD&A のセクションだけを取得するには、ドキュメント全体を取得して自分で HTML をパースする必要があります。EDGAR はそれをセグメント化してくれません。 - XBRL の「フレーム」にはタクソノミの知識が必要です。 企業横断で財務概念を取得する(
https://data.sec.gov/api/xbrl/frames/us-gaap/Assets/USD/CY2024Q4I.json)には、正確な US-GAAP タグ(Assets、Revenues、NetIncomeLossなど)と期間フォーマット(CY2024Q4I)を知っている必要があります。あいまい検索はなく、タグの使われ方の一貫性も企業によってばらつきます。 - フェアアクセスの制限は本物であり、飾りではありません。 IP あたり1秒間に10リクエストで User-Agent が必須という制限は、対話的な検索には十分ですが、数千の CIK をまたぐ一括バックフィルではすぐにボトルネックになります。そうしたケースに対する SEC 自身のガイダンスは、企業ごとの API 呼び出しではなく夜間の一括 ZIP アーカイブ(
companyfacts.zip、submissions.zip)です。
選択肢2: ノーコードツール
SEC データ向けのマーケットプレイスのスクレイパーアクターや BI コネクタは存在しますが、そのほとんどは同じ data.sec.gov エンドポイントをラップしているだけで、新しいアクセス手段を加えているわけではありません。スプレッドシートへの単発取得の手間は省けますが、パースの問題は解決してくれません。結局は生のファイリング HTML や XBRL タグがそのまま出てくる上に、SEC が直接公開している API に間接層を一枚加えることになります。
選択肢3: 構造化された SEC EDGAR API(Crawlora 経由)
本当に欲しいのが生の HTML や XBRL タグではなく、パース済みのファイリングセクションや正規化された財務諸表であれば、SEC EDGAR API が EDGAR 自身のデータの上でそれを行います。企業を検索して CIK を取得します。
curl "https://api.crawlora.net/api/v1/sec/company/search?q=apple" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "apple",
"count": 1,
"matches": [
{ "cik": 320193, "cik_padded": "CIK0000320193", "ticker": "AAPL", "name": "Apple Inc." }
],
"source_url": "https://www.sec.gov/files/company_tickers.json"
}
}
続いて、特定のファイリングのセクションと正規化された財務データを Python で取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/sec"
company = requests.get(f"{base}/company/search", headers=h, params={"q": "apple"}).json()["data"]["matches"][0]
cik = company["cik"]
sections = requests.get(f"{base}/filing/sections", headers=h, params={
"ticker": "AAPL", "accession": "0000320193-25-000079", "items": "1A"
}).json()["data"]
financials = requests.get(f"{base}/financials", headers=h, params={
"ticker": "AAPL", "statement": "income", "period": "annual"
}).json()["data"]
filing/sections は HTML ドキュメント全体の代わりに抽出済みの項目テキストを返します(実際のフィールドです。ドキュメントを確認してください)。
{
"data": {
"cik": 320193,
"accession_number": "0000320193-25-000079",
"form": "10-K",
"sections": [
{ "item": "1A", "title": "Risk Factors", "text": "The Company's business...", "char_count": 68562, "truncated": true }
],
"source_url": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm"
}
}
financials は生の XBRL タグの代わりに、算出済み比率付きの正規化された損益計算書(または貸借対照表、キャッシュフロー)の行データを返します。
{
"data": {
"cik": 320193, "ticker": "AAPL", "statement": "income", "period": "annual",
"line_order": ["revenue", "net_income"],
"periods": [{
"fiscal_year": 2025, "end_date": "2025-09-27", "form": "10-K", "currency": "USD",
"lines": { "revenue": 383285000000, "net_income": 96995000000 },
"ratios": { "gross_margin": 0.4413, "operating_margin": 0.2982, "net_margin": 0.2531, "revenue_growth_yoy": -0.028 }
}]
}
}
/sec/company/submissions(form や from/to で絞り込めるファイリング履歴)、/sec/company/intelligence(統合されたプロフィール、財務スナップショット、市場データ)、/sec/full-text-search(全フィラーを対象にした q、forms、from/to)、/sec/frames(タクソノミのタグ一覧を自分で追わずに済む、1期間・企業横断の US-GAAP 概念)、/sec/insider(Form 3/4/5 の取引)、/sec/institutional-holdings(マネージャーの CIK による 13F 保有情報)がこのグループを構成します。ファイリング、期間、または取引ごとに1行を保存し、スケジュールを組んで再実行しましょう。
収集できるもの
公開されている EDGAR のファイリングと財務データです。企業検索(CIK、ティッカー、名称)、ファイリング履歴とメタデータ(アクセッション番号、フォームタイプ、提出日/報告日、ドキュメント URL、XBRL フラグ)、項目番号ごとにパースされたファイリングセクション(リスクファクター、MD&A その他、文字数付き)、算出済み比率と前年同期比成長率付きの正規化された損益計算書・貸借対照表・キャッシュフローデータ、財務スナップショット・市場データ・直近のファイリングを統合した企業プロフィール、全 EDGAR ファイリングを対象にした全文検索、企業横断の1期間の XBRL 概念フレーム、Form 3/4/5 のインサイダー取引、そしてマネージャーごとの 13F 機関投資家保有情報です。
制約とよくある課題
- EDGAR 自体が無料の公式ソースであり、構造化 API がどこで価値を加えるかを理解しておく。 生の提出履歴、ファイリング、XBRL データはすでに
data.sec.govから無料で取得できます。構造化 API が価値を発揮するのは、パース済みセクションや正規化された財務諸表が必要なときであり、すでに得られている「アクセス」を提供するわけではありません。 - フェアアクセスの制限はどちらの経路でも適用される。 IP あたり1秒間に10リクエストと必須の User-Agent は、どの層を通して呼び出しても背後にある EDGAR の呼び出しに適用されます。
- XBRL のタグ付けは企業によって異なる。 すべてのフィラーがすべての概念を同じ方法でタグ付けしているわけではなく、一部の小規模フィラーは Apple のような大規模な加速フィラーに比べて XBRL のカバレッジがまばら、あるいは一貫性を欠くことがあります。
- ファイリングのテキストは長く、自由形式ではなく項目番号で構成される。 セクション抽出は、ファイリングが EDGAR の標準的な項目番号(1A、7、7A など)に従っていることに依存しており、ほとんどの——しかしすべてではない——ファイリングがそれに一貫して従っています。
- 公開データのみ。 これは企業がすでに SEC に開示した内容と、SEC がすでに公開している内容を収集するものであり、非公開情報を推測したり企業の実際の開示タイミングを回避したりする手段では決してありません。
どこで使われるか
- 金融リサーチとスクリーニング — ウォッチリストのティッカー群にわたって正規化された財務諸表と比率を取得できます。
- デューデリジェンスのパイプライン — 手作業で読む代わりに、AI 支援レビュー向けにリスクファクターと MD&A のセクションを抽出できます。
- コンプライアンスと開示のモニタリング — 新しいファイリング、インサイダー取引、機関投資家保有の変化を報告され次第追跡できます。
- 複数ソースをまたぐ金融リサーチ — SEC のファンダメンタルズを Yahoo Finance や Google Finance のライブ株価と組み合わせられます。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
企業検索、ファイリングセクション、財務データの各エンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。SEC EDGAR は企業が公式に開示した内容といつ開示したかを教えてくれます。Yahoo Finance と Google Finance はそこにライブ株価と市場コンテキストを加えます。ファンダメンタルズを一つのソースだけに頼らず、市場データと組み合わせましょう。あわせてウェブスクレイピング API の選び方とウェブスクレイピングは合法かもご覧ください。
よくある質問
SEC EDGAR 独自の API は無料ですか?それをそのまま使えばいいのでは?
はい——data.sec.gov と efts.sec.gov は無料で公式であり、サインアップも不要です。生のファイリング、提出履歴、XBRL データには EDGAR 独自の API を直接使ってください。構造化 API が価値を発揮するのは、生の HTML ドキュメントや US-GAAP の XBRL タグの代わりに、パース済みのファイリングセクションや比率付きの正規化された財務諸表が必要なときです。その価値はパースにあり、すでに得られていたはずのアクセス権にあるのではありません。
SEC EDGAR をスクレイピングするのは合法ですか?
SEC のファイリングは公開されている規制上の開示情報であり、ログインの壁やスクレイピング禁止規定はありません。実際の制約は EDGAR のフェアアクセスポリシーです。IP あたり1秒間に10リクエストと、必須の説明的な User-Agent ヘッダーです。これは法的助言ではありません——ウェブスクレイピングは合法かも参照してください。
CIK とは何ですか、どうやって取得しますか?
CIK(Central Index Key)は SEC がフィラーに割り当てる一意の識別子です。会社名やティッカーを /sec/company/search で検索することで取得でき、cik、cik_padded、ticker、name が返されます。
10-K のリスクファクターのような特定のセクションはどうやって取得しますか?
ファイリングのアクセッション番号を items パラメータ(リスクファクターなら "1A" など)とともに /sec/filing/sections に渡します。ファイリング全体の HTML の代わりに、タイトルと文字数付きで抽出済みの項目テキストが返ります。
生の XBRL の代わりに正規化された財務諸表を取得するには?
CIK またはティッカー、statement(income、balance、cash flow のいずれか)、period(annual または quarterly)を指定して /sec/financials を呼び出します。US-GAAP タクソノミのタグを自分でマッピングすることなく、行項目と、売上総利益率や売上成長率といった算出済み比率が返ります。
インサイダー取引や機関投資家保有を追跡できますか?
はい。/sec/insider は CIK またはティッカーによる Form 3/4/5 のインサイダー取引を、/sec/institutional-holdings はマネージャーの CIK による 13F 保有情報を、どちらも構造化された JSON として返します。
SEC EDGAR からどのようなデータを収集できますか?
企業検索、ファイリング履歴とメタデータ、パース済みのファイリングセクション、比率付きの正規化された財務諸表、統合された企業インテリジェンスプロフィール、全フィラーを対象にした全文検索、XBRL 概念フレーム、インサイダー取引、13F 機関投資家保有情報——すべて公開データです。