SEC Administrative Proceedings Database API

Administrative Proceedings Filings Database API provides quick and reliable access to SEC administrative proceedings and related filings. Retrieve structured regulatory data in a consistent format for seamless integration, compliance, research, and analysis.

POST https://api.secfilingdata.com/v1/filings/administrative-proceedings/

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
  • cik
  • ticker
  • year
  • month
  • publishDate
  • dateRange (e.g. "query_value": "2024-01-01 to 2024-12-31")
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": "34-102233",
  "from": 0,
  "size": 10,
  "sort_order": "DESC"
}

Response

<?php

$url = "https://api.secfilingdata.com/v1/filings/administrative-proceedings/";

$auth_token = 'AUTH_TOKEN';

$postData = array(
    'query_type' => 'releaseNumber',
    'query_value' => '34-102233',
    '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/administrative-proceedings/"

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

payload = {
    "query_type": "releaseNumber",
    "query_value": "34-102233",
    "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/administrative-proceedings/";

const payload = {
    query_type: "releaseNumber",
    query_value: "34-102233",
    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/administrative-proceedings/";

const payload = {
    query_type: "releaseNumber",
    query_value: "34-102233",
    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/administrative-proceedings/' \
--header 'Content-Type: application/json' \
--header 'Authorization: AUTH_TOKEN' \
--data '{
    "query_type":"releaseNumber",
    "query_value":"34-102233",
    "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/administrative-proceedings/"

    payload := []byte(`{
        "query_type":"releaseNumber",
        "query_value":"34-102233",
        "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/administrative-proceedings/"
        );

        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\":\"aaerNumber\","
                + "\"query_value\":\"34-102233\","
                + "\"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"": ""aaerNumber"",
            ""query_value"": ""34-102233"",
            ""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/administrative-proceedings/",
            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/administrative-proceedings/"
)

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: "34-102233",
  from: 0,
  size: 10,
  sort_order: "DESC"
}.to_json

response = http.request(request)

puts response.body

Response Example

{
  "total": 1,
  "from": 0,
  "size": 20,
  "data": [
    {
      "sec_date": "2025-01-17 20:00:00",
      "title": "Michael Sealy",
      "detail_url": "https://www.sec.gov/files/litigation/admin/2025/34-102233.pdf",
      "release_no": [
        "34-102233"
      ],
      "summary": "This proceeding arises from an offering fraud scheme perpetrated by Richard Dale Sterritt, Jr., also known as \"Rich Richman\" (\"Sterritt\"), and other individuals, in which they raised at least $16 million from over 300 investors through unregistered and fraudulent sales of shares of a privately held purported oil-and-gas company, Zona Energy, Inc. (\"Zona\"). Between approximately August 2018 and October 2019 (the \"Relevant Period\"), Sealy acted as an unregistered broker on behalf of Zona, soliciting multiple investors through his network of business contacts. In return for soliciting investors, Sealy received transaction-based compensation.",
      "complaints": [
        "Sterritt misappropriated nearly all of the investor funds raised, using them for his unrelated businesses, wiring money to friends and family, withdrawing cash for himself, and funding luxury purchases and personal expenses."
      ],
      "entities": [
        {
          "name": "Michael Sealy",
          "type": "Individual"
        }
      ],
      "resources": [
        {
          "type": "Release",
          "title": "Michael Sealy",
          "url": "https://www.sec.gov/files/litigation/admin/2025/34-102233.pdf"
        }
      ],
      "tags": [
        "fraud",
        "investment_adviser"
      ],
      "violated_sections": [
        "SECTIONS 15(B)",
        "SECTIONS 5(A)",
        "SECTIONS 9(A)",
        "SECTIONS 15(A)",
        "RULES 10B",
        "SECTION 3(A)",
        "SECTION 15(A)",
        "SECTION 15(B)",
        "SECTION 308(A)",
        "SECTION 21F(G)",
        "SECTION 523(A)",
        "RULE 10B-5"
      ],
      "penalty_amounts": {
        "total": 200000,
        "breakdown": [
          {
            "respondent": "MICHAEL SEALY",
            "type": "CIVIL_PENALTY",
            "amount": 200000
          }
        ]
      },
      "settlement_agreed": 1,
      "respondents": [
        "Michael Sealy"
      ],
      "requested_relief": [
        "cease-and-desist order",
        "civil penalties",
        "disgorgement",
        "prejudgment interest"
      ],
      "comments_due": [],
      "file_number": "3-22434",
      "orders": [
        "Respondent Sealy cease and desist from committing or causing any violations and any future violations of Section 15(a) of the Exchange Act.",
        "Respondent Sealy is suspended from participating in any offering of a penny stock for a period of 12 months.",
        "Sealy shall, within 21 days of the entry of this Order, pay a civil money penalty of $200,000 to the Securities and Exchange Commission."
      ],
      "investigation_conducted_by": [],
      "litigation_led_by": [],
      "other_agencies_involved": []
    }
  ]
}
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 Administrative Proceedings API

Download the complete dataset of SEC Administrative Proceedings in a single JSON file, including release details, publication dates, case summaries, complaint details, respondents, related entities, penalty information, requested relief, violated sections, SEC document URLs, and associated tags. This endpoint is designed for bulk data access and full database synchronization.

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

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

$auth_token = 'AUTH_TOKEN';

$saveTo = __DIR__ . '/administrative-proceedings-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/administrative-proceedings/metadata/all.json"
auth_token = "AUTH_TOKEN"

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

save_to = "administrative-proceedings-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/administrative-proceedings/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 = "administrative-proceedings-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/administrative-proceedings/metadata/all.json";
const authToken = "AUTH_TOKEN";

const file = fs.createWriteStream("administrative-proceedings-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("administrative-proceedings-metadata-all.json");
    console.error(err.message);
});
curl -L \
  -H "Authorization: AUTH_TOKEN" \
  -H "Accept: application/json" \
  "https://api.secfilingdata.com/v1/filings/administrative-proceedings/metadata/all.json" \
  -o administrative-proceedings-metadata-all.json
package main

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

func main() {

    url := "https://api.secfilingdata.com/v1/filings/administrative-proceedings/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("administrative-proceedings-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/administrative-proceedings/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("administrative-proceedings-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/administrative-proceedings/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("administrative-proceedings-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/administrative-proceedings/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("administrative-proceedings-metadata-all.json", "w") do |file|
      response.read_body do |chunk|
        file.write(chunk)
      end
    end

    puts "Download complete"
  end
end

Dataset Coverage

The Administrative Proceedings database contains SEC administrative proceedings, including release numbers, publication dates, case summaries, complaint details, respondents, related entities, SEC document links, and associated tags.

  • Administrative Proceeding Release Numbers
  • SEC Release Numbers
  • Publication Dates
  • Case Summaries
  • Complaint Details
  • Respondents and Related Entities
  • SEC Documents and URLs
  • Tags and Categories