SEC Enforcement Actions Database

The SEC Enforcement Actions Database provides quick and reliable access to structured SEC enforcement and regulatory action data from multiple SEC data sources, with comprehensive historical coverage dating back to 1997. The database includes Administrative Proceedings, Litigation, Enforcement Litigation, AAERs, Press Releases, Trading Suspensions, Stop Orders, and Delinquent Filings. Retrieve records in a consistent format for seamless integration, compliance, legal research, regulatory analysis, and historical research.

POST https://api.secfilingdata.com/v1/filings/enforcement-actions/

Authentication

All requests require an API token in the Authorization header.

Authorization: AUTH_TOKEN

Request Parameters

Parameter Type Required Description
query_type string Required Search type. Supported:
  • releaseNumber
  • year
  • month
  • dateRange
  • cik
  • ticker
query_value string Required Search value based on query_type
from integer Optional Pagination starting offset
size integer Optional Number of records to return (Maximum:100)
sort_order string Optional ASC or DESC

Request Example

{
  "query_type": "releaseNumber",
  "query_value": "2023-229",
  "from": 0,
  "size": 10,
  "sort_order": "DESC"
}

Response

<?php

$url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/";

$auth_token = 'AUTH_TOKEN';

$postData = array(
    'query_type' => 'releaseNumber',
    'query_value' => '2023-229',
    'from' => 0,
    'size' => 10,
    'sort_order' => 'DESC'
);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));

curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: ' . $auth_token,
]);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
import requests

url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/"

headers = {
    "Content-Type": "application/json",
    "Authorization": "AUTH_TOKEN"
}

payload = {
    "query_type": "releaseNumber",
    "query_value": "2023-229",
    "from": 0,
    "size": 10,
    "sort_order": "DESC"
}

response = requests.post(
    url,
    headers=headers,
    json=payload
)

print(response.json())
const url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/";

const payload = {
    query_type: "releaseNumber",
    query_value: "2023-229",
    from: 0,
    size: 10,
    sort_order: "DESC"
};

fetch(url, {
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        "Authorization": "AUTH_TOKEN"
    },
    body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
const axios = require("axios");

const url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/";

const payload = {
    query_type: "releaseNumber",
    query_value: "2023-229",
    from: 0,
    size: 10,
    sort_order: "DESC"
};

axios.post(url, payload, {
    headers: {
        "Content-Type": "application/json",
        "Authorization": "AUTH_TOKEN"
    }
})
.then(response => {
    console.log(response.data);
})
.catch(error => {
    console.error(error);
});
curl --location 'https://api.secfilingdata.com/v1/filings/enforcement-actions/' \
--header 'Content-Type: application/json' \
--header 'Authorization: AUTH_TOKEN' \
--data '{
    "query_type":"releaseNumber",
    "query_value":"2023-229",
    "from":0,
    "size":10,
    "sort_order":"DESC"
}'
package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {

    url := "https://api.secfilingdata.com/v1/filings/enforcement-actions/"

    payload := []byte(`{
        "query_type":"releaseNumber",
        "query_value":"2023-229",
        "from":0,
        "size":10,
        "sort_order":"DESC"
    }`)

    req, _ := http.NewRequest(
        "POST",
        url,
        bytes.NewBuffer(payload),
    )

    req.Header.Set(
        "Content-Type",
        "application/json",
    )

    req.Header.Set(
        "Authorization",
        "AUTH_TOKEN",
    )

    client := &http.Client{}

    resp, err := client.Do(req)

    if err != nil {
        panic(err)
    }

    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)

    fmt.Println(string(body))
}
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

public class Main {

    public static void main(String[] args)
    throws Exception {

        URL url = new URL(
            "https://api.secfilingdata.com/v1/filings/enforcement-actions/"
        );

        HttpURLConnection conn =
            (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("POST");

        conn.setRequestProperty(
            "Content-Type",
            "application/json"
        );

        conn.setRequestProperty(
            "Authorization",
            "AUTH_TOKEN"
        );

        conn.setDoOutput(true);

        String jsonInputString = "{"
                + "\"query_type\":\"releaseNumber\","
                + "\"query_value\":\"2023-229\","
                + "\"from\":0,"
                + "\"size\":10,"
                + "\"sort_order\":\"DESC\""
                + "}";

        try(OutputStream os =
                conn.getOutputStream()) {

            byte[] input =
                jsonInputString.getBytes("utf-8");

            os.write(input, 0, input.length);
        }

        Scanner scanner =
            new Scanner(conn.getInputStream());

        while(scanner.hasNext()) {

            System.out.println(
                scanner.nextLine()
            );
        }

        scanner.close();
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var client = new HttpClient();

        client.DefaultRequestHeaders.Add(
            "Authorization",
            "AUTH_TOKEN"
        );

        var json = @"{
            ""query_type"": ""releaseNumber"",
            ""query_value"": ""2023-229"",
            ""from"": 0,
            ""size"": 10,
            ""sort_order"": ""DESC""
        }";

        var content = new StringContent(
            json,
            Encoding.UTF8,
            "application/json"
        );

        var response = await client.PostAsync(
            "https://api.secfilingdata.com/v1/filings/enforcement-actions/",
            content
        );

        var result =
            await response.Content
            .ReadAsStringAsync();

        Console.WriteLine(result);
    }
}
require 'net/http'
require 'json'
require 'uri'

url = URI(
  "https://api.secfilingdata.com/v1/filings/enforcement-actions/"
)

http = Net::HTTP.new(
  url.host,
  url.port
)

http.use_ssl = true

request = Net::HTTP::Post.new(url)

request["Content-Type"] =
  "application/json"

request["Authorization"] =
  "AUTH_TOKEN"

request.body = {
  query_type: "releaseNumber",
  query_value: "2023-229",
  from: 0,
  size: 10,
  sort_order: "DESC"
}.to_json

response = http.request(request)

puts response.body

Response Example

{
  "total": 1,
  "from": 0,
  "size": 10,
  "data": [
    {
      "sec_date": "1997-12-23 14:06:28",
      "title": "Louis Loss, Former Commission Staffer and Authority on Securities Laws, Leaves Scholarly Legacy",
      "detail_url": "https://www.sec.gov/news/press/pressarchive/1997/2023-229.txt",
      "release_no": [
        "2023-229"
      ],
      "summary": "Immediate Release 2023-229 Louis Loss, Former Commission Staffer and Authority on Securities Laws, Leaves Scholarly Legacy Washington D.C., December 23, 1997 -- Louis Loss, a former member of the Commission's staff and thereafter a professor at Harvard Law School, died at the age of 83 on December 13. recognized as the foremost authority on securities regulation and the most influential commentator on the federal securities laws, Professor Loss joined the Commission's staff in 1937 upon graduation from Yale Law School.",
      "summary_title": null,
      "complaints": [],
      "case_citations": [],
      "cases": [],
      "entities": [
        {
          "name": "Louis Loss",
          "type": "Individual"
        },
        {
          "name": "Leaves Scholarly Legacy",
          "type": "Individual"
        }
      ],
      "resources": [],
      "tags": [],
      "violated_sections": [],
      "penalty_amounts": {
        "total": null,
        "breakdown": []
      },
      "settlement_agreed": 0,
      "respondents": [
        "Louis Loss",
        "Leaves Scholarly Legacy"
      ],
      "requested_relief": [],
      "comments_due": [],
      "file_number": null,
      "orders": [],
      "investigation_conducted_by": [],
      "litigation_led_by": [],
      "other_agencies_involved": [],
      "parallel_actions_taken_by": []
    }
  ]
}
Important:
Requests must use: Content-Type:application/json
POST body must be JSON encoded using:json_encode($postData)

HTTP Status Codes

Status Code Description
200 Successful request
400 Invalid request parameters
401 Unauthorized / Invalid token
500 Internal server error

Bulk Download SEC Enforcement Actions API

Download the complete dataset of SEC Enforcement and Regulatory Actions in a single JSON file, combining structured data from multiple SEC sources, including Administrative Proceedings, Litigation, Enforcement Litigation, AAERs, Press Releases, Trading Suspensions, Stop Orders, and Delinquent Filings. The dataset includes enforcement action numbers, publication dates, case summaries, complaint details, respondents, related entities, case citations, SEC resources, penalties, and associated tags. This endpoint is designed for bulk data access, compliance research, regulatory analysis, historical research, and full database synchronization.

GET https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json
<?php

$url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json";

$auth_token = 'AUTH_TOKEN';

$saveTo = __DIR__ . '/enforcement-actions-metadata-all.json';

$fp = fopen($saveTo, 'w');

$ch = curl_init($url);

curl_setopt_array($ch, [
    CURLOPT_FILE => $fp,
    CURLOPT_HTTPHEADER => [
        'Authorization: ' . $auth_token,
        'Accept: application/json'
    ],
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_TIMEOUT => 0,
]);

curl_exec($ch);

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_error($ch);

curl_close($ch);
fclose($fp);

/*
|--------------------------------------------------------------------------
| VALIDATION
|--------------------------------------------------------------------------
*/

if ($curl_error) {
    unlink($saveTo);
    die("Curl error: " . $curl_error);
}

if ($http_code !== 200) {
    unlink($saveTo);
    die("Download failed. HTTP: " . $http_code);
}

echo "Download complete. HTTP: " . $http_code;
import requests

url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json"
auth_token = "AUTH_TOKEN"

headers = {
    "Authorization": auth_token,
    "Accept": "application/json"
}

save_to = "litigation-metadata-all.json"

with requests.get(url, headers=headers, stream=True) as r:
    if r.status_code != 200:
        raise Exception(f"Download failed: {r.status_code}")

    with open(save_to, "wb") as f:
        for chunk in r.iter_content(chunk_size=8192):
            if chunk:
                f.write(chunk)

print("Download complete")
const url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json";
const authToken = "AUTH_TOKEN";

fetch(url, {
    method: "GET",
    headers: {
        "Authorization": authToken,
        "Accept": "application/json"
    }
})
.then(response => {
    if (!response.ok) {
        throw new Error("Download failed: " + response.status);
    }
    return response.blob();
})
.then(blob => {
    const link = document.createElement("a");
    link.href = window.URL.createObjectURL(blob);
    link.download = "litigation-metadata-all.json";
    link.click();
})
.catch(err => console.error(err));
const fs = require("fs");
const https = require("https");

const url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json";
const authToken = "AUTH_TOKEN";

const file = fs.createWriteStream("litigation-metadata-all.json");

https.get(url, {
    headers: {
        "Authorization": authToken,
        "Accept": "application/json"
    }
}, (res) => {

    if (res.statusCode !== 200) {
        console.log("Download failed:", res.statusCode);
        res.resume();
        return;
    }

    res.pipe(file);

    file.on("finish", () => {
        file.close();
        console.log("Download complete");
    });

}).on("error", (err) => {
    fs.unlinkSync("litigation-metadata-all.json");
    console.error(err.message);
});
curl -L \
  -H "Authorization: AUTH_TOKEN" \
  -H "Accept: application/json" \
  "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json" \
  -o litigation-metadata-all.json
package main

import (
    "io"
    "net/http"
    "os"
)

func main() {

    url := "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json"
    authToken := "AUTH_TOKEN"

    client := &http.Client{}

    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Add("Authorization", authToken)
    req.Header.Add("Accept", "application/json")

    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    if resp.StatusCode != 200 {
        panic(resp.Status)
    }

    out, err := os.Create("litigation-metadata-all.json")
    if err != nil {
        panic(err)
    }
    defer out.Close()

    io.Copy(out, resp.Body)

    println("Download complete")
}
import java.io.*;
import java.net.*;

public class DownloadFile {
    public static void main(String[] args) throws Exception {

        String urlStr = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json";
        String authToken = "AUTH_TOKEN";

        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("GET");
        conn.setRequestProperty("Authorization", authToken);
        conn.setRequestProperty("Accept", "application/json");

        if (conn.getResponseCode() != 200) {
            System.out.println("Failed: " + conn.getResponseCode());
            return;
        }

        InputStream in = conn.getInputStream();
        FileOutputStream out = new FileOutputStream("litigation-metadata-all.json");

        byte[] buffer = new byte[8192];
        int bytesRead;

        while ((bytesRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
        }

        out.close();
        in.close();

        System.out.println("Download complete");
    }
}
using System;
using System.Net.Http;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var url = "https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json";
        var authToken = "AUTH_TOKEN";

        using var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", authToken);

        var response = await client.GetAsync(url);

        if (!response.IsSuccessStatusCode)
        {
            Console.WriteLine("Failed: " + response.StatusCode);
            return;
        }

        var stream = await response.Content.ReadAsStreamAsync();
        var file = File.Create("litigation-metadata-all.json");

        await stream.CopyToAsync(file);

        file.Close();

        Console.WriteLine("Download complete");
    }
}
require 'net/http'
require 'uri'

url = URI("https://api.secfilingdata.com/v1/filings/enforcement-actions/metadata/all.json")
auth_token = "AUTH_TOKEN"

Net::HTTP.start(url.host, url.port, use_ssl: true) do |http|

  request = Net::HTTP::Get.new(url)
  request["Authorization"] = auth_token
  request["Accept"] = "application/json"

  http.request(request) do |response|

    if response.code != "200"
      puts "Failed: #{response.code}"
      exit
    end

    File.open("litigation-metadata-all.json", "w") do |file|
      response.read_body do |chunk|
        file.write(chunk)
      end
    end

    puts "Download complete"
  end
end

Dataset Coverage

The SEC Enforcement Actions database contains SEC enforcement actions and related regulatory information, including release numbers, publication dates, case summaries, complaints, respondents, related entities, case citations, SEC resources, tags, violated sections, penalties, settlements, requested relief, comments due, file numbers, orders, investigation details, litigation information, and involvement of other agencies.

  • SEC Enforcement Action Release Numbers
  • Publication Dates
  • Release Titles
  • Detailed SEC Release URLs
  • Case Summaries
  • Summary Titles
  • Complaint Information
  • Respondents
  • Related Entities
  • Case Citations
  • Cases
  • SEC Resources and URLs
  • Tags and Categories
  • Violated Sections
  • Penalty Amounts and Breakdown
  • Settlement Information
  • Requested Relief
  • Comments Due
  • File Numbers
  • Orders
  • Investigation Conducted By
  • Litigation Led By
  • Other Agencies Involved
  • Parallel Actions Taken By