Track SEC administrative proceedings
Pull SEC administrative proceedings as JSON, page through history, and count releases by month and by the statute they cite.
The SEC brings many enforcement actions in its own administrative forum rather than in federal court: cease and desist orders, settled proceedings against firms and individuals, bars of accountants and investment professionals, and orders instituting proceedings. Each is published with a release number and a PDF. /v1/enforcement/administrative-proceedings returns the list as JSON, newest first, 100 releases per page.
Fields
| Field | Meaning |
|---|---|
publishedAt | When the release was published |
title | Respondents named in the release |
releaseNo | One or more release numbers, comma separated |
url and documents | The order or notice, usually a PDF |
fields | Extra labels from the SEC page, such as the file number |
The release number prefix tells you which statute the release is issued under: 33- Securities Act, 34- Exchange Act, IA- Investment Advisers Act, IC- Investment Company Act, and AAER- for accounting and auditing enforcement releases.
The code
import os
import re
from collections import Counter
import requests
BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}
releases = []
for page in range(3): # newest first, 100 releases per page
r = requests.get(f"{BASE}/v1/enforcement/administrative-proceedings", params={"page": page}, headers=HEADERS, timeout=120)
r.raise_for_status()
releases += r.json()["releases"]
print(len(releases), "administrative proceedings from", releases[-1]["publishedAt"][:10], "to", releases[0]["publishedAt"][:10])
ACTS = {"33": "Securities Act", "34": "Exchange Act", "IA": "Advisers Act", "IC": "Investment Company Act", "AAER": "AAER (accounting)"}
acts = Counter()
for rel in releases:
prefixes = {m.group(1) for m in re.finditer(r"\b(33|34|IA|IC|AAER)-\d+", rel.get("releaseNo") or "")}
acts.update(prefixes)
print("\nStatutes cited in release numbers (one release can cite several):")
for p, n in acts.most_common():
print(f" {ACTS[p]:24} {n:4}")
print("\nReleases per month:")
for month, n in sorted(Counter(rel["publishedAt"][:7] for rel in releases).items()):
print(f" {month} {n:4}")
print("\nLatest five:")
for rel in releases[:5]:
print(f" {rel['publishedAt'][:10]} {rel['title'][:44]:44} {rel['releaseNo']}")
Output
Run on 2026-10-13, three pages of history.
300 administrative proceedings from 2026-01-26 to 2026-10-09
Statutes cited in release numbers (one release can cite several):
Exchange Act 275
Advisers Act 37
AAER (accounting) 18
Securities Act 8
Investment Company Act 5
Releases per month:
2026-01 7
2026-02 22
2026-03 27
2026-04 23
2026-05 23
2026-06 24
2026-07 17
2026-08 63
2026-09 89
2026-10 5
Latest five:
2026-10-09 Jefferies LLC 34-106641
2026-10-08 Carlos Lopez, CPA 34-106633, AAER-4605
2026-10-02 CityVest Capital Inc., CV Manager LLC, and A IA-7021
2026-10-02 J.P. Morgan Securities LLC And JPMorgan Chas 34-106569
2026-10-01 Latch, Inc. 33-11450, 34-106568, AAER-4604
Reading the result
- Almost every proceeding cites the Exchange Act. Advisers Act releases mark cases involving investment advisers.
- Releases per month jump in August and September. The SEC's fiscal year ends on September 30, and published releases have tended to cluster near the end of it.
- The titles name respondents, which can be companies or individuals. These are public SEC records; the release text is the authority on what was alleged or found.
Variations
- Watch for new releases: poll page 0 on a schedule and alert on any
releaseNoyou have not seen. - Search by name: filter
titlefor a firm, or use full-text search for filings that mention it. - Accounting cases only: use the AAER endpoint.