TL;DR. The SEC publishes every formal enforcement action as a Litigation Release (LR) on sec.gov, plus the underlying Administrative Proceedings (AP) and Civil Action complaints. These are public, free, and unstructured HTML. For compliance watchlists, AML name screening, law-firm conflict checks, or empirical research, you need them as structured data with defendants, charges, monetary sanctions, and case citations extracted. This guide covers the SEC's enforcement publication structure, the charge taxonomy that matters for downstream filtering, and a working Python pipeline using the SEC Litigation Releases actor.
How the SEC publishes enforcement actions
The SEC's Division of Enforcement issues three main public artifacts:
- Litigation Releases (LR-XXXXX) — short narrative summaries of civil actions filed in federal court. New ones land at sec.gov/litigation/litreleases typically within 1–2 business days of filing.
- Administrative Proceeding Releases (AP-XXXXX or Release No. XXXXX) — for actions resolved within the SEC's in-house administrative tribunal (cease-and-desist orders, suspensions, bars).
- Complaint PDFs and Order PDFs — the underlying legal documents, linked from each release page.
The SEC's enforcement actions data page provides some aggregate statistics but does not expose a per-action JSON API. The release pages themselves are clean HTML — the parsing problem is moderate (defendant names, case citations, charge codes are not in consistent fields) but tractable.
The charge taxonomy that matters
For compliance watchlist use, you typically care about which statute and which conduct. The SEC's most-cited charging statutes:
- Securities Act §17(a) — fraud in the offer or sale of securities
- Exchange Act §10(b) / Rule 10b-5 — fraud in connection with the purchase or sale (insider trading, accounting fraud)
- Investment Advisers Act §206 — fraud or deceit on advisory clients
- Investment Company Act §17 — affiliated transactions, custody
- FCPA — Exchange Act §13(b)(2) — books-and-records and internal-controls for foreign bribery cases
- Whistleblower retaliation — Exchange Act §21F
For AML and law-firm conflict screening, the defendant identity matters more than the charge — you want clean entity and individual extraction with normalization (Smith vs. Smith Jr. vs. John A. Smith).
Working Python example
The SEC Litigation Releases actor normalizes defendants, extracts charging statutes, and parses monetary sanctions. Curl:
curl -X POST "https://api.apify.com/v2/acts/nexgendata~sec-litigation-releases/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"since": "2026-01-01", "includeDefendants": true, "maxResults": 500}'
Python — daily compliance watchlist match:
import os, json, urllib.request
APIFY_TOKEN = os.environ["APIFY_TOKEN"]
ACTOR = "nexgendata~sec-litigation-releases"
# Your firm's counterparty / customer list
watchlist = {"acme capital management", "redwood securities llc", "john m doe"}
payload = json.dumps({
"since": "2026-05-01",
"includeDefendants": True,
}).encode("utf-8")
url = f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items?token={APIFY_TOKEN}"
req = urllib.request.Request(url, data=payload, method="POST",
headers={"Content-Type": "application/json"})
with urllib.request.urlopen(req, timeout=600) as r:
releases = json.loads(r.read())
for rel in releases:
defendants = {d.lower() for d in rel.get("defendants", [])}
hits = defendants & watchlist
if hits:
print(f"HIT: {rel['releaseNumber']} -- {hits}")
print(f" {rel['headline']}")
print(f" {rel['url']}")
Returned shape:
{
"releaseNumber": "LR-26031",
"releaseDate": "2026-05-15",
"headline": "SEC Charges Acme Capital and Its CEO with Securities Fraud",
"defendants": ["Acme Capital Management LLC", "Jane Doe"],
"charges": ["Securities Act 17(a)", "Exchange Act 10(b)", "Rule 10b-5"],
"sanctions": {"disgorgement": 4500000, "civil_penalty": 2000000},
"court": "S.D.N.Y.",
"url": "https://www.sec.gov/litigation/litreleases/2026/lr26031.htm",
"complaintUrl": "https://www.sec.gov/litigation/complaints/2026/comp26031.pdf"
}
What you can build on top
- AML name-screening append — augment your existing OFAC / sanctions screening with SEC enforcement defendants. Catches recently charged entities before they hit traditional adverse-media providers.
- Law firm intake conflict check — automatic search of new clients against the past 24 months of SEC litigation.
- Compliance trend monitoring — track which charging statutes are trending YoY (e.g., crypto-related Securities Act §17(a) cases since 2022, marketing rule enforcement since the 2024 amendments).
- Empirical legal research — sanction-amount distributions by charge type, judge / jurisdiction patterns, settlement-vs-trial rates.
Comparison: SEC enforcement data sources
| Source | Coverage | Structured fields | Cost |
|---|---|---|---|
| SEC.gov Litigation Releases (raw HTML) | Every LR + AP, back to 1995 | Headline, date, URL — you parse the rest | Free |
| Westlaw / Lexis SEC No-Action | Includes underlying complaints and orders | Yes | $200–$600/seat/mo |
| NERA / Cornerstone empirical reports | Aggregate stats only | Yes — but aggregated | Public reports free; per-case data not redistributed |
| SEC Action Tracker (Stanford Securities Class Action Clearinghouse) | Securities class actions specifically | Yes | Free (academic) |
| SEC Litigation Releases actor | All LRs + linked APs | Defendants, charges, sanctions, court | PPE per release |
Practical compliance pattern
Most RegTech compliance setups pair SEC enforcement data with FINRA BrokerCheck disclosures, OFAC sanctions, and adverse media. A nightly job pulling the past 30 days of LRs, deduping by release number, and intersecting against your watchlist is ~50 lines of Python and runs in under a minute.
Defendant-name normalization is the hard part
The SEC's litigation releases are written by enforcement staff and do not follow a single naming convention. "Acme Capital Management LLC" might also appear in another release as "Acme Capital Mgmt LLC" or "Acme Capital." Individual defendants get treated similarly — middle initials drop in and out, "Jr." appears in some releases and not others. For meaningful watchlist matching:
- Normalize both the watchlist and the extracted defendant names: lowercase, strip punctuation, expand common abbreviations ("Mgmt" → "Management", "LLC" → "Llc" or stripped), drop trailing entity-type tokens for the comparison pass
- Use fuzzy matching (Jaro-Winkler ≥ 0.92 is a sensible default) for the second pass
- Always preserve the original strings for human review — never silently match
- For individuals, include known aliases and prior names where you have them
The actor's defendants field is already post-normalized to a canonical form, which removes most of this work — but for high-stakes compliance (e.g., regulated bank AML programs) you'll still want a human review queue on every match.
Coverage of administrative proceedings
Litigation Releases cover SEC civil actions filed in federal court. Administrative Proceedings — actions resolved within the SEC's own administrative tribunal — are published separately as Releases No. (Securities Act, Exchange Act, Advisers Act, or Investment Company Act) and as orders. The bulk of SEC enforcement by case count actually settles through APs, not federal court, so for comprehensive compliance coverage you want both. The actor surfaces both streams.
For 8-K material-event surveillance alongside enforcement tracking, see our SEC 8-K filings guide. For monitoring private-placement issuers via Form D filings — useful for spotting suspect offerings before enforcement hits — see the Form D guide.
This same enforcement-watchlist pattern is what powers event-driven trading workflows on press release feeds — same architecture, different source.
Get started: Pull the past 90 days of SEC Litigation Releases at the actor page.
Related Reading
More from this series:
- SEC 8-K Filings API: Build a Material Events Tracker (2026 Guide)
- How to Vet a Stockbroker with FINRA BrokerCheck: Free API Guide
- SEC Event Router: One API for 8-K, Litigation, Form 4, Form D, and 13F
- Track Private Placements with SEC Form D: API Guide for VCs and M&A; Analysts
From the press release / event-driven series:
Top comments (0)