# SEC Enforcement Tracker — Litigation, Proceedings & AAER (`foxlabs/sec-enforcement-actions`) Actor

Official SEC.gov enforcement feed: litigation releases, administrative proceedings and accounting & auditing enforcement (AAER). Filter by type, keyword, date. Defendants, release/file numbers, complaint links. Regulatory intel for compliance, securities lawyers, journalists.

- **URL**: https://apify.com/foxlabs/sec-enforcement-actions.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Business, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<p align="center"><a href="https://apify.com/foxlabs/sec-enforcement-actions"><img src="https://data.foxlabs.com.tr/img/sec-enforcement-actions-banner.svg" alt="SEC Enforcement Tracker — Litigation, Proceedings and AAER" width="100%" /></a></p>

## SEC Enforcement Tracker — Litigation Releases, Administrative Proceedings & AAER

Track **every new U.S. SEC enforcement action the moment it is published** — straight from the official [SEC.gov enforcement listings](https://www.sec.gov/enforcement-litigation), as clean, structured JSON. This Actor covers **all three enforcement feeds** — Litigation Releases (civil court actions), Administrative Proceedings (in-house orders), and Accounting & Auditing Enforcement Releases (AAER) — with defendants named, release/file numbers, and links to the underlying complaint, order and judgment documents.

Because it reads **public-domain U.S. government pages**, there's **no API key, no login and no proxies** — one feed for regulatory intelligence, compliance monitoring, securities-law research and financial journalism.

- ⚖️ **All three official SEC feeds** — Litigation Releases, Administrative Proceedings & AAER in one dataset
- 🔎 **Filter by type, defendant/respondent name and date** — from *Last 24 hours* to the *full archive*
- 📄 **Case documents included** — complaint / order / judgment PDF links, plus optional full release text
- ⚡ **No key, no login, no proxies** — public-domain data, one clean flat row per release (JSON / CSV / Excel / API)

### Quick start (API)

Get the last 30 days of litigation releases in a single call:

```bash
curl -X POST "https://api.apify.com/v2/acts/foxlabs~sec-enforcement-actions/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "releaseTypes": ["litigation_release"], "datePreset": "last_30_days", "maxResults": 100 }'
```

Prefer no code? Open the **Input** tab, pick your filters, and click **Start** — then download the results as JSON, CSV or Excel.

### What you get

One clean, flat record per enforcement release:

| Field | Type | Description |
|---|---|---|
| `releaseType` | string | Feed key: `litigation_release`, `administrative_proceeding`, or `aaer` |
| `releaseTypeLabel` | string | Human label: *Litigation Release*, *Administrative Proceeding*, *Accounting & Auditing Enforcement Release* |
| `releaseNumber` | string | SEC release number (e.g. `LR-26568`, `34-105730`, `AAER-4593`) |
| `date` | string | Publication date, `YYYY-MM-DD` |
| `dateTime` | string | Full ISO 8601 publication timestamp |
| `respondents` | string | Defendants / respondents named in the release |
| `fileNumber` | string / null | SEC file number (administrative proceedings, e.g. `3-22327`); `null` for litigation releases |
| `commentsDue` | string / null | Public comment deadline as an ISO date, `YYYY-MM-DD`. `null` when SEC stated it relative to the notice ("30 days from date of this Notice") instead of naming a date |
| `commentsDueRaw` | string / null | The deadline exactly as SEC published it, absolute or relative |
| `seeAlso` | string / null | "See also" label(s) on the release (e.g. consent, final judgment) |
| `detailUrl` | string | Link to the release detail page (HTML) or the document (PDF) |
| `documentUrls` | string\[] | All linked case documents — complaints, orders, judgments (PDF). Empty array if none |
| `source` | string | Provenance string (`SEC Enforcement & Litigation (public domain, sec.gov)`) |
| `scrapedAt` | string | ISO 8601 timestamp of when the row was scraped |
| `summary` *(full-text only)* | string | Short summary from the release body — only with **Include full release text** |
| `fullText` *(full-text only)* | string | Full release body text — only with **Include full release text** |

#### Sample output

A litigation release (illustrative — field shape matches real output):

```json
{
  "releaseType": "litigation_release",
  "releaseTypeLabel": "Litigation Release",
  "releaseNumber": "LR-26568",
  "date": "2026-06-16",
  "dateTime": "2026-06-16T14:02:03Z",
  "respondents": "Bruce Cameron Conway",
  "fileNumber": null,
  "commentsDue": null,
  "commentsDueRaw": null,
  "seeAlso": "Consent of Defendant, Final Judgment",
  "detailUrl": "https://www.sec.gov/enforcement-litigation/litigation-releases/lr-26568",
  "documentUrls": [
    "https://www.sec.gov/files/litigation/litreleases/2026/cons26568.pdf",
    "https://www.sec.gov/files/litigation/litreleases/2026/judg26568.pdf"
  ],
  "source": "SEC Enforcement & Litigation (public domain, sec.gov)",
  "scrapedAt": "2026-06-18T17:45:07.179Z"
}
```

Administrative proceedings additionally populate `fileNumber` and `commentsDue` (they don't exist for litigation releases, so they're `null` there):

```json
{
  "releaseType": "administrative_proceeding",
  "releaseTypeLabel": "Administrative Proceeding",
  "releaseNumber": "34-105804",
  "date": "2026-06-29",
  "fileNumber": "3-22349",
  "commentsDue": "2026-07-29",
  "commentsDueRaw": "July 29, 2026",
  "respondents": "Example Advisers LLC",
  "detailUrl": "https://www.sec.gov/enforcement-litigation/administrative-proceedings/34-105804"
}
```

When SEC states the deadline relative to the notice instead of naming a date, `commentsDueRaw` keeps the wording and `commentsDue` stays `null` — the notice date needed to resolve it isn't published in the listing:

```json
{ "commentsDue": null, "commentsDueRaw": "Thirty (30) days from the date of this Notice" }
```

With **Include full release text** on, HTML detail-page rows also carry `summary` and `fullText`.

### Input & filters

- **Release types** — pick Litigation Releases, Administrative Proceedings, AAER, or leave empty for all three.
- **Keyword** — case-insensitive substring match on the defendant/respondent names and release/file numbers (e.g. `Coinbase`, `Tesla`, `LR-26568`). Leave empty to list everything.
- **Date range** — quick presets (*Last 24 hours / 7d / 30d / 90d / 365d / Year to date / All time*) or a **Custom** From/To window.
- **Include full release text** — fetch each HTML detail page for the full body, a short summary and any linked complaint/order documents (slower, one extra request per release).
- **Max results** — hard cap on rows across all selected feeds (`0` = unlimited) to control cost and runtime.
- **Custom User-Agent** *(advanced)* — SEC.gov requires a descriptive User-Agent; a sensible default is used, override only if you have a reason.

### Example inputs (copy & paste)

```jsonc
// 1) Daily alert: every new enforcement action in the last 24 hours
{ "datePreset": "last_24_hours", "maxResults": 0 }

// 2) Screen a company / person across the full archive (scans newest-first)
{ "searchTerm": "Coinbase", "datePreset": "all_time", "maxResults": 500 }

// 3) Accounting-fraud (AAER) cases year-to-date, with full body text
{ "releaseTypes": ["aaer"], "datePreset": "ytd", "includeFullText": true, "maxResults": 200 }

// 4) Civil court actions only: litigation releases in the last 30 days, with full text
{ "releaseTypes": ["litigation_release"], "datePreset": "last_30_days", "includeFullText": true, "maxResults": 100 }

// 5) In-house orders: administrative proceedings in the last 90 days
{ "releaseTypes": ["administrative_proceeding"], "datePreset": "last_90_days", "maxResults": 200 }

// 6) Due-diligence name screen over a custom window, with full text
{ "searchTerm": "Musk", "datePreset": "custom", "dateFrom": "2018-01-01", "dateTo": "2026-01-01", "includeFullText": true, "maxResults": 200 }

// 7) Whole-market pull: all three feeds from the last 365 days
{ "datePreset": "last_year", "maxResults": 1000 }
```

### Use cases

- **Regulatory & compliance monitoring.** Track every new enforcement action against the companies, executives, advisers, auditors or funds in your coverage universe — schedule a daily run and never miss a release.
- **Securities-litigation intelligence.** Surface defendants, case captions and complaint/judgment documents the moment a release is published; feed your case database or litigation-funding pipeline.
- **Due diligence, KYC & KYB.** Screen a company or individual against the SEC's enforcement history by name before you onboard, invest or partner.
- **Journalism & research.** Build datasets of SEC enforcement activity over time — by type, defendant or topic — for reporting, academic work or trend analysis.
- **Enforcement alerts on autopilot.** Schedule a run filtered to your keywords and pipe results to Slack, email, a CRM or an LLM via Make / Zapier / n8n.
- **RegTech & data products.** Enrich a compliance or risk platform with a clean, structured enforcement feed — including links to the primary source documents.

### Performance & throughput

Each run reads the SEC's official list views one page at a time, self-throttled (~200 ms between requests) to respect SEC fair-access guidance — and **stops as soon as it passes your date cutoff** (listings are newest-first), so recent-window runs finish quickly. Keyword filtering is applied locally, so it doesn't add requests. Leaving **Include full release text** off keeps runs lean (one request per list page); turning it on adds **one request per release**, so pair it with a tight date range or **Max results**. There are no external keys, proxies or rate limits — throughput is bounded only by your Apify plan.

### Integrations

**JavaScript** (`apify-client`):

```js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/sec-enforcement-actions').call({
  releaseTypes: ['litigation_release'], datePreset: 'last_30_days', maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

**Python** (`apify-client`):

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("foxlabs/sec-enforcement-actions").call(run_input={
    "releaseTypes": ["litigation_release"], "datePreset": "last_30_days", "maxResults": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["date"], item["releaseNumber"], item.get("respondents"))
```

Also works with **Make / n8n / Zapier** (Apify app → run this Actor, map the input), scheduled runs, webhooks, and the **Apify MCP server** for AI agents.

### Data quality

Values come **only** from what the SEC publishes — never fabricated; fields that don't apply are `null` (or an empty array for `documentUrls`).

| Field | Availability |
|---|---|
| `releaseType`, `releaseTypeLabel`, `source`, `scrapedAt` | Always present |
| `date`, `dateTime` | Present whenever the release carries a date (effectively all listed releases) |
| `releaseNumber`, `respondents`, `detailUrl` | Present for virtually all releases |
| `documentUrls` | Populated when the release links case PDFs; empty array otherwise |
| `fileNumber`, `commentsDue`, `commentsDueRaw` | Administrative proceedings only; `null` for litigation releases and AAER. Even there the comment deadline is rare and fades with age — measured 2026-07-28: 5 of the newest 100 administrative proceedings, 6 of 500, 6 of 1,500 releases across all three feeds |
| `seeAlso` | When the release carries a "see also" reference |
| `summary`, `fullText` | Only with **Include full release text** on (HTML detail pages) |

The SEC's list view has no working free-text search, so keyword filtering is applied client-side over the selected date range — always confirm a hit against the linked official release.

### Pricing

The Actor reads free, public government web pages, so runs are fast and cheap — a typical filtered run of a few hundred releases costs a small fraction of a compute unit. Leaving **Include full release text** off keeps runs lean; turning it on adds one request per release, so use a tight **Date range** or **Max results** to control cost. There's an Apify **free tier** to evaluate the full feature set, and no proxies or third-party costs.

### FAQ

**Is this legal / can I use the data commercially?** Yes. The Actor only retrieves publicly available pages from the SEC's official website, and U.S. government works — including SEC enforcement releases — are in the **public domain**. This Actor and its author are **not affiliated with or endorsed by the SEC**.

**Do I need an API key or an SEC account?** No. No key, no login — SEC enforcement listings are public.

**How fresh is the data?** Each run reads the SEC's live listings, so you get what's published at run time. Schedule a daily run for near-real-time alerts.

**What export formats are available?** JSON, CSV, Excel, or via the Apify API/integrations.

**Can I search for a specific company or person?** Yes — put the name (or a release/file number) in **Keyword**. Note it scans the listings newest-first within your date range, so for older cases widen the **Date range** (e.g. *All time*) and raise **Max results**.

**Why are `fileNumber` / `commentsDue` `null` on some rows?** Those fields exist only for **administrative proceedings**; litigation releases and AAER don't carry them, so they're `null` there. `commentsDue` is also `null` when SEC wrote the deadline as a relative phrase ("30 days from date of this Notice") rather than a date — the wording is still in `commentsDueRaw`, so nothing is lost and the ISO field never carries a value that isn't a date.

**How do I get the full text of a release?** Turn on **Include full release text** — HTML detail-page rows then include `summary` and `fullText`, plus any linked document PDFs.

**How far back does the archive go?** Choose **All time** to crawl the full archive (back to the 1990s). Recent-window presets are far faster.

**Is there a rate limit?** No external key or quota. The Actor self-throttles to respect SEC fair-access guidance; throughput is otherwise bounded only by your Apify plan.

**Can I automate daily enforcement alerts?** Yes — schedule a run with **Date range = Last 24 hours** and your keyword filters, and wire the output to Slack, email or a CRM.

### Troubleshooting

- **0 results** → your filters are too narrow or the date window is too short. Widen the **Date range**, clear the **Keyword**, or add more **Release types**.
- **Keyword misses an older case** → the search scans newest-first within your **Date range**. Widen it (e.g. *All time*) and raise **Max results** so the crawl reaches further back.
- **Full-text run is slow** → **Include full release text** adds one request per release. Tighten the **Date range** or lower **Max results**, or leave it off for fast list-only runs.
- **A `403` from SEC.gov** → SEC requires a descriptive User-Agent. The built-in default satisfies this; if you override **Custom User-Agent**, keep it descriptive and include a contact address.

### Notes, limits & legal (honest)

- **Public domain.** SEC enforcement releases are U.S. government works, free to use and redistribute. Each row carries a `source` provenance string.
- **Not affiliated** with the U.S. Securities and Exchange Commission; this Actor redistributes their public pages.
- **Personal data.** Defendant/respondent names are part of public enforcement records published by the SEC itself. Use them in compliance with applicable laws for legitimate research, compliance, journalism and due-diligence purposes.
- **Client-side keyword search.** The SEC list view has no working free-text search param, so keyword filtering is applied client-side over the selected date range (not a full-archive search index).
- **Full text scope.** `summary` / `fullText` come from HTML detail pages; some releases link directly to a PDF, which is captured in `documentUrls` / `detailUrl` instead.
- **Accuracy.** Data mirrors what the SEC publishes; always confirm against the linked official release before relying on it for legal or investment decisions.

### Support

Found a bug, want an extra field, or need another source (FTC, DOJ, state regulators)? Open the **Issues** tab on this Actor, or email **info@foxlabs.com.tr**. We reply fast.

*If this Actor saves you time, a ⭐ review really helps.*

### Changelog

#### 0.2.1 — 2026-07-28

- **`commentsDue` is an ISO date now.** The field passed SEC's free text straight through — `"July 29, 2026"` on one row, `"30 days from date of this Notice"` on the next — while this README documented an ISO date, so nothing downstream could sort or filter on it. Dates are now normalised to `YYYY-MM-DD`; relative phrases keep `commentsDue: null` because the notice date they refer to isn't published in the listing. The original wording always survives in the new **`commentsDueRaw`**. Measured 2026-07-28 over 1,500 live releases: 6 carry the field, 1 became an ISO date, 5 stayed raw with a null ISO, and **0** non-date strings remain in `commentsDue`.

#### 0.2 — 2026-07-05

- Reworked docs: API quick-start, typed field table, sample output (litigation + administrative), integration snippets (JS / Python / Make / MCP), use cases, data-quality guide, FAQ & troubleshooting.

#### 0.1 (2026-06-18)

- Initial release: Litigation Releases, Administrative Proceedings and AAER feeds; release-type / keyword / date filters; optional full-text enrichment; defendants, release/file numbers and document links.
- Consolidated all case-document links into a single `documentUrls` array (populated across every release type) and cleaned up the output schema.

***

Part of the **[foXLabs data platform](https://data.foxlabs.com.tr/)** — official public-data company, contact, ownership, procurement, financial, regulatory & AI-search intelligence scrapers. Browse the full suite at **[data.foxlabs.com.tr](https://data.foxlabs.com.tr/)**.

# Actor input Schema

## `releaseTypes` (type: `array`):

Which SEC enforcement feeds to pull. Leave empty for all three. Litigation Releases = civil court actions. Administrative Proceedings = SEC in-house orders. AAER = accounting & auditing enforcement.

## `searchTerm` (type: `string`):

Optional filter matched against the defendant/respondent names and release/file numbers within the selected date range (e.g. a company or person, 'Tesla', 'Coinbase', 'LR-26568'). Case-insensitive substring match. Widen the date range to search further back. Leave empty to list everything.

## `datePreset` (type: `string`):

Quick filter on the release publication date. Pick 'Custom' to use the From/To fields. Choose 'All time' to crawl the full archive (back to the 1990s).

## `dateFrom` (type: `string`):

YYYY-MM-DD (e.g. 2026-01-01). Only used when Date range = Custom.

## `dateTo` (type: `string`):

YYYY-MM-DD. Only used when Date range = Custom. Leave empty for 'today'.

## `maxResults` (type: `integer`):

Hard cap on dataset rows (across all selected release types). Helps control cost and runtime. Set to 0 for unlimited.

## `includeFullText` (type: `boolean`):

Fetch each release's detail page and add the full body text, a short summary and linked complaint/order documents. Slower and pricier (one extra request per release). Works for HTML detail pages; PDF-only releases just keep their document link.

## `userAgent` (type: `string`):

SEC.gov requires a descriptive User-Agent. A sensible default is used; override only if you have a reason (e.g. include your own contact email).

## Actor input object example

```json
{
  "releaseTypes": [],
  "datePreset": "last_30_days",
  "maxResults": 100,
  "includeFullText": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "releaseTypes": [],
    "datePreset": "last_30_days",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/sec-enforcement-actions").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "releaseTypes": [],
    "datePreset": "last_30_days",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/sec-enforcement-actions").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "releaseTypes": [],
  "datePreset": "last_30_days",
  "maxResults": 100
}' |
apify call foxlabs/sec-enforcement-actions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=foxlabs/sec-enforcement-actions",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/vPnFSJhnN0PwdVypM/builds/UvJ4YCgG6x1vpuo6s/openapi.json
