AAER Filings Database API

Retrieve SEC Accounting and Auditing Enforcement Releases (AAER) using the API.

POST https://api.secfilingdata.com/v1/filings/aaer/

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
  • aaerNumber
  • year
  • month
  • publishDate
  • yearMonth (e.g. "query_value": "2019-04")
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": "aaerNumber",
  "query_value": "AAER-2181",
  "from": 0,
  "size": 10,
  "sort_order": "DESC"
}

Response

<?php

$url = "https://api.secfilingdata.com/v1/filings/aaer/";

$auth_token = 'AUTH_TOKEN';

$postData = array(
    'query_type' => 'aaerNumber',
    'query_value' => 'AAER-2181',
    '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/aaer/"

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

payload = {
    "query_type": "aaerNumber",
    "query_value": "AAER-2181",
    "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/aaer/";

const payload = {
    query_type: "aaerNumber",
    query_value: "AAER-2181",
    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/aaer/";

const payload = {
    query_type: "aaerNumber",
    query_value: "AAER-2181",
    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/aaer/' \
--header 'Content-Type: application/json' \
--header 'Authorization: AUTH_TOKEN' \
--data '{
    "query_type":"aaerNumber",
    "query_value":"AAER-2181",
    "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/aaer/"

    payload := []byte(`{
        "query_type":"aaerNumber",
        "query_value":"AAER-2181",
        "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/aaer/"
        );

        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\":\"AAER-2181\","
                + "\"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"": ""AAER-2181"",
            ""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/aaer/",
            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/aaer/"
)

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: "aaerNumber",
  query_value: "AAER-2181",
  from: 0,
  size: 10,
  sort_order: "DESC"
}.to_json

response = http.request(request)

puts response.body

Response Example

[
  {
  "total": 1,
  "from": 0,
  "size": 2,
  "data": [
    {
      "sec_date": "2005-02-08",
      "title": "Elan Corporation, plc",
      "detail_url": "https://www.sec.gov/enforcement-litigation/litigation-releases/lr-19066",
      "release_no": [
        "LR-19066"
      ],
      "aaer_no": "AAER-2181",
      "summary": "The SEC filed a settled civil action against Elan Corporation, plc, charging the Irish pharmaceutical company with violating federal securities laws. The complaint alleges that Elan engaged in a fraudulent 'round-trip' transaction scheme from 2002 to 2004, failing to disclose material information regarding the true source of its revenues in periodic reports and quarterly earnings releases. To settle the charges, Elan consented to a permanent injunction and agreed to pay a $15 million civil penalty and $1 in disgorgement.",
      "complaints": [
        "The SEC alleges that Elan Corporation orchestrated a series of 'round-trip' transactions to artificially inflate its revenue and mislead investors regarding the company's financial health.",
        "The complaint states that Elan provided funds to joint venture partners, which the partners then used to pay license fees back to Elan, creating the appearance of legitimate revenue.",
        "Elan failed to disclose these transactions in its periodic filings and press releases, thereby disseminating materially misleading information about its financial results to the U.S. markets.",
        "The company's failure to disclose the nature of these transactions violated the antifraud, reporting, and record-keeping provisions of the federal securities laws."
      ],
      "respondents": [
        "Elan Corporation"
      ],
      "urls": [
        {
          "label": "Elan Corporation, plc",
          "url": "https://www.sec.gov/enforcement-litigation/litigation-releases/lr-19066"
        },
        {
          "label": "SEC Complaint in this matter",
          "url": "https://www.sec.gov/litigation/complaints/comp19066.pdf"
        }
      ],
      "tags": [
        "fraud"
      ],
      "file_no": null,
      "violated_sections": [
        "SECTION 10(B)",
        "SECTIONS 13(A)",
        "RULES 12B",
        "RULE 10B-5"
      ],
      "penalty_amounts": {
        "total": 15000001,
        "breakdown": [
          {
            "respondent": "Elan Corporation",
            "amount": 15000000,
            "type": "CIVIL_PENALTY"
          },
          {
            "respondent": "Elan Corporation",
            "amount": 1,
            "type": "DISGORGEMENT"
          }
        ]
      },
      "settlement_agreed": 1,
      "entities": [
        {
          "name": "Elan Corporation",
          "type": "company"
        }
      ],
      "requested_relief": [
        "civil penalties",
        "disgorgement"
      ]
    }
  ]
}
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 AAER API

Download the complete dataset of AAER filings and SEC releases in a single JSON file, including all metadata such as release details, organizations, dates, penalty, summary, complaints, respondents, requested relief, violated sections, tags and document URLs. This endpoint is designed for bulk data access and full database synchronization.

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

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

$auth_token = 'AUTH_TOKEN';

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

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

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

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

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

func main() {

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

    puts "Download complete"
  end
end

Dataset Coverage

The AAER database contains SEC Accounting and Auditing Enforcement Releases (AAERs), including release numbers, publication dates, enforcement summaries, complaint text, related entities, SEC document links, and associated tags.

  • AAER Release Numbers
  • SEC Release Numbers
  • Publication Dates
  • Enforcement Summaries
  • Complaint Text
  • Related Entities
  • SEC Documents and URLs
  • Tags and Categories