Accounting and Auditing Enforcement Release Database API
The Accounting and Auditing Enforcement Release (AAER) Database API offers a repository of all AAER releases published by the SEC from 1997 to present. It provides all metadata and extracted structured data of published enforcement actions, including their documents (proceedings, summaries, judgements, etc) as PDF, HTML and their respective text versions (PDF and HTML converted to text).
1
{
2
"dateTime": "2025-01-17T08:45:03-05:00",
3
"aaerNo": "AAER-4558",
4
"releaseNo": ["33-11356", "34-102226"],
5
"respondents": [
6
{
7
"name": "American Electric Power Company, Inc.",
8
"type": "company"
9
}
10
],
11
"urls": [ ... ],
12
"summary": "The SEC has instituted cease-and-desist proceedings against American Electric Power Company, Inc. for misleading statements and failure to disclose material related party transactions, resulting in a $19 million penalty.",
13
"tags": ["disclosure fraud", "accounting violations"],
14
"entities": [
15
{
16
"name": "American Electric Power Company, Inc.",
17
"type": "company",
18
"role": "respondent",
19
"cik": "4904",
20
"ticker": "AEP"
21
},
22
...
23
],
24
"complaints": [
25
"American Electric Power issued a misleading press release omitting key facts about contributions to Generation Now.",
26
"American Electric Power failed to disclose material related party transactions in its 2019 Form 10-K.",
27
"American Electric Power failed to keep accurate books and records and maintain sufficient internal accounting controls."
28
],
29
"parallelActionsTakenBy": ["Department of Justice"],
30
"hasAgreedToSettlement": true,
31
"hasAgreedToPayPenalty": true,
32
"penaltyAmounts": [
33
{
34
"penaltyAmount": "19000000",
35
"penaltyAmountText": "$19,000,000",
36
"imposedOn": "American Electric Power Company, Inc."
37
}
38
],
39
"requestedRelief": [
40
"cease-and-desist order",
41
"civil penalties"
42
],
43
"violatedSections": [
44
"Section 17(a)(2) of the Securities Act",
45
"Sections 13(a), 13(b)(2)(A), and 13(b)(2)(B) of the Exchange Act",
46
"Rules 12b-20 and 13a-1"
47
],
48
"otherAgenciesInvolved": []
49
}
Key Features
- Metadata: Includes release date/time, respondents, and URLs to all related documents — ranging from proceedings to judgments.
- Document Conversion: Access documents in various formats — PDF, HTML, and their converted text versions.
- Tagging System: AAER proceedings are tagged with ticker symbols and Central Index Key (CIK) for ease of reference.
- Search Functionality: A search API allows users to query the AAER database based on various criteria like involved parties (respondents), release dates, and more.
- Bulk Download Option: For extensive research and analysis, users have the option to use the bulk-download APIs to obtain the entire AAER metadata and their associated documents in ZIP files.
AAER Overview
The SEC publishes Accounting and Auditing Enforcement Releases (AAERs) as a part of its effort to inform the public about its enforcement activities related to financial reporting, auditing and accounting. AAERs represent only a subset of the SEC's broader enforcement activities. The actions published typically encompass:
- Civil Lawsuits: These are lawsuits brought by the SEC in federal court against individuals or entities accused of violations related to accounting and auditing standards or financial reporting requirements.
- Administrative Proceedings: These are actions initiated by the SEC to address violations within its jurisdiction but outside the court system. Such proceedings can lead to various outcomes, including penalties, disgorgement of ill-gotten gains, or professional bars.
- Settlements: Often, the SEC reaches settlements with respondents or defendants without a trial. These settlements typically involve penalties or other remedies, and the respondents or defendants often do not admit or deny the allegations.
- Cease-and-Desist Orders: These are orders issued by the SEC to an individual or entity to stop an ongoing or potential violation of securities laws.
- Bars or Suspensions: The SEC can bar or suspend professionals from appearing or practicing before it. This can impact accountants, auditors, attorneys, or other professionals who violate securities laws or professional standards.
- Opinions and Adjudicatory Orders: These are decisions made by the SEC following administrative proceedings.
- Notices: The SEC issues notices about various actions, including the institution of administrative proceedings or other relevant updates about AAERs.
API Endpoints
Search API
API to search the AAER database: POST requests to https://api.sec-api.io/aaers
Bulk Download API
API to bulk-download all AAER metadata: GET request to https://api.sec-api.io/aaers/metadata/all.json
API to bulk-download all AAER documents per year as ZIP files: GET request to https://api.sec-api.io/aaers/documents/{YEAR}.zip
Single File Download API
API to download single AAER documents: GET requests to https://api.sec-api.io/aaers/{aaerNo}/{type}-{filename}
API to download single PDFs/HTMLs converted to text: GET requests to https://api.sec-api.io/aaers/{aaerNo}/{type}-{filename}.txt
Examples:
Download PDF: https://api.sec-api.io/aaers/aaer-4452/primary-34-98243.pdf?token=YOUR_API_KEY
Download PDF converted to text: https://api.sec-api.io/aaers/aaer-4452/primary-34-98243.pdf.txt?token=YOUR_API_KEY
Download HTML of administrative summary: https://api.sec-api.io/aaers/aaer-4452/administrative%20summary-34-98243-s?token=YOUR_API_KEY
Download HTML of administrative summary as text: https://api.sec-api.io/aaers/aaer-4452/administrative%20summary-34-98243-s.html.txt?token=YOUR_API_KEY
Authentication
To authenticate your API requests, use the API key displayed in your user profile. You can utilize your API key in one of two ways. Choose the method that best fits your use case:
- Authorization Header: Include your API key as an
Authorizationheader in your requests. For instance, before sending aPOSTrequest tohttps://api.sec-api.io/aaers, ensure the header is set as follows:Authorization: YOUR_API_KEY. - Query Parameter: Alternatively, append your API key directly to the URL as a query parameter. For example, when making
POSTrequests, use the URLhttps://api.sec-api.io/aaers?token=YOUR_API_KEYinstead of the base endpoint.
Search API
To search the AAER database, make a POST request to https://api.sec-api.io/aaers, providing your search criteria as a JSON payload.
Request Structure - Search API
The Search API recognizes the following JSON payload parameters:
query(string, required) - The search term or expression, formatted using the Lucene syntax.
Examples:respondents.name:"Plug Power"orentities.ticker:UPS.from(string, optional) - Pagination control to specify the starting position of the results. Max: 10000. Default: 0.size(string, optional) - Determines the number of results to be returned per request. Max: 50. Default: 50.sort(array, optional) - Specifies the field by which results should be sorted. By default, results are sorted bydateTimein descending order, starting with the most recent AAERs.
Request Examples
Retrieve the Most Recent AAERs
To retrieve the metadata and extracted structured data of the 50 most recently published AAERs, use the following request. The example Lucene query aaerNo:* will return all AAERs, and the sort parameter will sort the results by the dateTime field in descending order, starting with the most recent AAERs.
Response
Retrieve All AAERs Published Between January 2010 and December 2020
The following request can be used to retrieve the metadata and structured data of all AAERs published between January 2010 and December 2020. The Lucene query dateTime:[2010-01-01 TO 2020-12-31] searches for all AAERs filed between January 1, 2010, and December 31, 2020, and returns the first 50 results sorted by the dateTime field in descending order. In order to retrieve all AAERs, the from parameter should be incremented by 50 in subsequent requests until no more results are returned.
Response
Retrieve the Most Recent AAERs Involving Insider Trading Allegations
The following request can be used to retrieve the metadata and structured data of the 20 most recent AAERs tagged with insider trading. The Lucene query tags:"insider trading" searches for all AAERs tagged with "insider trading" and returns the first 20 results sorted by the dateTime field in descending order.
Response
Retrieve the Most Recent AAERs Involving Accounting Fraud Allegations
The following request can be used to retrieve the metadata and structured data of the 20 most recent AAERs tagged with accounting fraud. The Lucene query tags:"accounting fraud" searches for all AAERs tagged with "accounting fraud" and returns the first 20 results sorted by the dateTime field in descending order.
Response
Response Structure - Search API
When the Search API locates matches within the AAER database, it returns a JSON response including two fields: total and data. The value field inside the total object indicates the total number of AAERs that match the search criteria, while the data field contains an array of AAER objects that match the query. The maximum number of AAERs inside the data array is determined by the size and limited to 50. Each AAER object comprises the following fields:
id(string): Unique system-internal identifier of the AAER. Example:dc5b96fb8b3c223b79d8181cab79a7cd.aaerNo(string): AAER release number. Example:AAER-44371.releaseNumbers(array of strings): Representing other release numbers associated with the AAER, such as litigation release numbers. Example:['33-11219', '34-98065', 'IA-6323].dateTime(date): Timestamp indicating the release date and time of the AAER. Example:2025-01-29T12:56:13-05:00.respondents(array of objects): List of respondents involved in the AAER.
Example:[{"name":"Jason M. Boucher, CPA","type":"individual"}]name(string): Name of the respondent. Example: "Wang, Jia Roger Qian, CPA".type(string): Type of the respondent. Example: "person" or "company".
urls(array of objects): Each object contains atypeand aurlfield. The types and their corresponding URLs include:- Primary Proceeding (always included):
https://www.sec.gov/files/litigation/admin/2023/34-98103.pdf - Administrative Summary (optional):
https://www.sec.gov/enforce/33-11209-s - SEC Complaint PDF (optional):
https://www.sec.gov/files/litigation/complaints/2023/comp-pr2023-126.pdf - Judgement PDF (optional): For example, "Final Judgement - Jeffrey A. Hastings" might link to
https://www.sec.gov/files/litigation/litreleases/2023/judg25700-hastings.pdf - Order PDF (optional): For instance, "Order - Lori Hastings" could link to
https://www.sec.gov/files/litigation/litreleases/2023/order25700-hastings.pdf - Press Release:
https://www.sec.gov/news/press-release/2020-265 - Administrative Proceedings Release:
https://www.sec.gov/files/litigation/admin/2022/34-94714.pdf - Litigation Release:
https://www.sec.gov/files/litigation/litreleases/2022/lr25364.htm
- Primary Proceeding (always included):
summary(string): A brief summary of the AAER. Example: "The SEC has instituted public administrative proceedings against ...".tags(array of strings): Tags describing the AAER. Example:["fraud", "misrepresentation"].entities(array of objects): Entities involved in the enforcement action. Thetickerandcikfields are optional and only populated if the entitynamematches a known public company.name(string): Name of the entity. Example: "GrubMarket, Inc.".type(string): Type of the entity. Example: "company", "individual", "other".role(string): Role of the entity in the AAER. Example: "respondent", "defendant", "plaintiff", "involved party", "employer", etc.cik(string, optional): Central Index Key of the entity. Example:1090727.ticker(string, optional): Ticker symbol of the entity. Example:UPS.
complaints(array of strings): SEC complaints associated with the AAER. Example:["UPS failed to adhere to the basic accounting principle of fair value, resulting in material misrepresentations to investors regarding its earnings and other reported items."]parallelActionsTakenBy(array of strings): List of other regulatory bodies or organizations that have taken parallel actions. Example:["Tokyo District Court"].hasAgreedToSettlement(boolean):trueif the respondent has agreed to a settlement,falseotherwise.hasAgreedToPayPenalty(boolean):trueif the respondent has agreed to pay a penalty,falseotherwise.penaltyAmounts(array of objects): List of penalties imposed on the respondents. Each object contains the following fields:penaltyAmount(string): Amount of the penalty. Example: "4000000".penaltyAmountText(string): Textual description of the penalty amount. Example: "$4 million".imposedOn(string): Entity on which the penalty is imposed. Example: "BIT Mining Ltd".
requestedRelief(array of strings): List of requested reliefs. Example:["disgorgement", "cease and desist order"]violatedSections(array of strings): List of violated securities laws or regulations. Example:["Section 30A of the Exchange Act", "Section 13(b)(2)(A) of the Exchange Act"]otherAgenciesInvolved(array of objects): List of other regulatory bodies or organizations involved in the enforcement action. This field is only populated if other agencies are involved. Each object contains the following fields:name(string): Name of the agency. Example: "Brazilian Ministerio Publico Federal"country(string): Country where the agency is located. Example: "Brazil"
Response Example
1
{
2
"total": {
3
"value": 241,
4
"relation": "eq"
5
},
6
"data": [
7
{
8
"id": "e9f5e13f8812a0cf9bc8ee69c132b8d9",
9
"dateTime": "2025-01-17T08:47:55-05:00",
10
"aaerNo": "AAER-4559",
11
"releaseNo": [
12
"34-102227"
13
],
14
"respondents": [
15
{
16
"name": "Celsius Holdings, Inc.",
17
"type": "company"
18
}
19
],
20
"respondentsText": "Celsius Holdings, Inc.",
21
"urls": [
22
{
23
"type": "primary",
24
"url": "https://www.sec.gov/files/litigation/admin/2025/34-102227.pdf"
25
},
26
{
27
"type": "Administrative Summary",
28
"url": "https://www.sec.gov/enforcement-litigation/administrative-proceedings/34-102227-s"
29
}
30
],
31
"summary": "The SEC has instituted cease-and-desist proceedings against Celsius Holdings, Inc. for violations related to SEC reporting, books and records, internal accounting controls, and disclosure controls and procedures, resulting in a $3 million civil penalty.",
32
"tags": [
33
"disclosure fraud",
34
"accounting violations"
35
],
36
"entities": [
37
{
38
"name": "Celsius Holdings, Inc.",
39
"type": "company",
40
"role": "respondent",
41
"cik": "1341766",
42
"ticker": "CELH"
43
}
44
],
45
"complaints": [
46
"Celsius improperly accounted for stock-based compensation expenses, resulting in materially inaccurate and misleading financial statements.",
47
"Celsius failed to maintain disclosure controls and procedures for non-financial information.",
48
"Celsius violated issuer reporting provisions and internal accounting controls provisions of the Exchange Act."
49
],
50
"parallelActionsTakenBy": [],
51
"hasAgreedToSettlement": true,
52
"hasAgreedToPayPenalty": true,
53
"penaltyAmounts": [
54
{
55
"penaltyAmount": "3000000",
56
"penaltyAmountText": "$3,000,000.00",
57
"imposedOn": "Celsius Holdings, Inc."
58
}
59
],
60
"requestedRelief": [
61
"cease and desist from committing or causing any violations and any future violations of Sections 13(a), 13(b)(2)(A), and 13(b)(2)(B) of the Exchange Act and Rules 12b-20, 13a-11, 13a-13, and 13a-15 thereunder"
62
],
63
"violatedSections": [
64
"Sections 13(a), 13(b)(2)(A), and 13(b)(2)(B) of the Exchange Act",
65
"Rules 12b-20, 13a-11, 13a-13, and 13a-15 under the Exchange Act"
66
],
67
"otherAgenciesInvolved": []
68
},
69
{
70
"id": "dc5b96fb8b3c223b79d8181cab79a7cd",
71
"dateTime": "2023-09-01T11:06:57-04:00",
72
"aaerNo": "AAER-4453",
73
"releaseNo": [
74
"34-98272",
75
"IA-6393"
76
],
77
"respondents": [
78
{
79
"name": "SQN Capital Management, LLC",
80
"type": "company"
81
},
82
{
83
"name": "Jeremiah Silkowski",
84
"type": "individual"
85
}
86
],
87
"respondentsText": "SQN Capital Management, LLC and Jeremiah Silkowski",
88
"urls": [
89
{
90
"type": "primary",
91
"url": "https://www.sec.gov/files/litigation/admin/2023/34-98272.pdf"
92
},
93
{
94
"type": "Administrative Summary",
95
"url": "https://www.sec.gov/enforce/34-98272-s"
96
}
97
],
98
"summary": "The SEC has instituted administrative and cease-and-desist proceedings against SQN Capital Management, LLC and its CEO Jeremiah Silkowski for failing to distribute audited financial statements and violating the custody and compliance rules under the Advisers Act, resulting in a $200,000 penalty for SQN Capital and a $100,000 penalty for Silkowski.",
99
"tags": [
100
"compliance rule violation",
101
"custody rule violation",
102
"reporting violations"
103
],
104
"entities": [
105
{
106
"name": "SQN Capital Management, LLC",
107
"type": "company",
108
"role": "respondent",
109
"cik": "51762",
110
"ticker": ""
111
},
112
{
113
"name": "Jeremiah Silkowski",
114
"type": "individual",
115
"role": "respondent"
116
}
117
],
118
"complaints": [
119
"SQN Capital failed to timely distribute annual audited financial statements prepared in accordance with GAAP to investors in two private and two public funds.",
120
"SQN Capital failed to adopt and implement written policies and procedures reasonably designed to prevent violations of the Advisers Act.",
121
"Silkowski willfully aided and abetted and caused SQN Capital’s custody rule and compliance rule violations.",
122
"The two public funds failed to file annual and quarterly periodic reports with the Commission."
123
],
124
"parallelActionsTakenBy": [],
125
"hasAgreedToSettlement": true,
126
"hasAgreedToPayPenalty": true,
127
"penaltyAmounts": [
128
{
129
"penaltyAmount": "200000",
130
"penaltyAmountText": "$200,000",
131
"imposedOn": "SQN Capital Management, LLC"
132
},
133
{
134
"penaltyAmount": "100000",
135
"penaltyAmountText": "$100,000",
136
"imposedOn": "Jeremiah Silkowski"
137
}
138
],
139
"requestedRelief": [
140
"cease-and-desist order",
141
"censure",
142
"civil monetary penalties"
143
],
144
"violatedSections": [
145
"Section 206(4) of the Advisers Act",
146
"Rule 206(4)-2",
147
"Rule 206(4)-7",
148
"Section 13(a) of the Exchange Act",
149
"Rules 13a-1 and 13a-13"
150
],
151
"otherAgenciesInvolved": []
152
}
153
]
154
}
Bulk-Download AAERs
Two bulk-download APIs for AAER metadata and AAER documents are available.
Bulk-Download AAER Metadata
Download the entire database of AAER metadata (publication date, respondents, release numbers, URLs to documents) of all AAERs published from 1997 to present as a single JSON file.
Endpoint: GET https://api.sec-api.io/aaers/metadata/all.json
The JSON file mirrors the structure of the Search API response, but containing all AAERs instead of a filtered subset. The JSON file contains an array of AAER metadata objects with the following structure:
aaerNo: String indicating the AAER number. Example:AAER-44371releaseNumbers: Array of strings representing the release numbers associated with the AAER. Example:['33-11219', '34-98065', 'IA-6323]dateTime: Timestamp indicating the release date and time of the AAER. Example:2023-09-01T15:06:57Zrespondents: Array of strings listing the respondents involved in the AAER. Example:['Wang, Jia Roger Qian, CPA', 'Wang Certified Public Accountant, P.C.']urls: Array of objects, each containing atypeand aurl. The types and their corresponding URLs might include:- Primary Proceeding (always included):
https://www.sec.gov/files/litigation/admin/2023/34-98103.pdf - Administrative Summary (optional):
https://www.sec.gov/enforce/33-11209-s - SEC Complaint PDF (optional):
https://www.sec.gov/files/litigation/complaints/2023/comp-pr2023-126.pdf - Judgement PDF (optional): For example, "Final Judgement - Jeffrey A. Hastings" might link to
https://www.sec.gov/files/litigation/litreleases/2023/judg25700-hastings.pdf - Order PDF (optional): For instance, "Order - Lori Hastings" could link to
https://www.sec.gov/files/litigation/litreleases/2023/order25700-hastings.pdf - Press Release:
https://www.sec.gov/news/press-release/2020-265 - Administrative Proceedings Release:
https://www.sec.gov/files/litigation/admin/2022/34-94714.pdf - Litigation Release:
https://www.sec.gov/files/litigation/litreleases/2022/lr25364.htm
- Primary Proceeding (always included):
Example JSON file:
1
[
2
{
3
"dateTime": "2023-09-25T16:16:53Z",
4
"aaerNo": "AAER-4461",
5
"releaseNo": ["34-98499"],
6
"respondents": ["Michael D. Messina, CPA"],
7
"urls": [
8
{
9
"type": "primary",
10
"url": "https://www.sec.gov/files/litigation/admin/2023/34-98499.pdf"
11
},
12
{
13
"type": "Administrative Summary",
14
"url": "https://www.sec.gov/enforce/34-98499-s"
15
}
16
]
17
}
18
// ... more AAER objects
19
]
Bulk-Download AAER Documents by Year
Download a collection of all AAER documents, including proceedings, summaries, judgments, and more. These documents are available in PDF, HTML, and their corresponding text versions. They are organized annually, packaged as compressed ZIP files and contain all AAERs published in the respective year.
Endpoint: GET https://api.sec-api.io/aaers/documents/{YEAR}.zip
Inside the ZIP file, you'll find distinct folders, each representing an individual AAER. Here's a breakdown of the contents and structure:
- Folder Naming: Each AAER has its designated folder, named using the format
/aaer-{aaerNo}. - Contents:
- Metadata: Each AAER folder contains a JSON file capturing its metadata.
- Original Documents: You'll find all relevant documents pertaining to the AAER, such as primary proceedings, administrative summaries, press releases, SEC complaints, judgments, litigation releases, and more. These are available in PDF and HTML formats, depending on how the SEC published the document. The HTML files mirror documents hosted as websites on SEC.gov.
- Text Versions: Every PDF and HTML document has a corresponding text file, making content easily accessible. These text files retain the original document's name but append a
.txtextension. For instance, the text counterpart ofaaer-3254.pdfwould beaaer-3254.pdf.txt.
Example structure of an unzipped ZIP file of AAERs published in 2022:
- ZIP file name:
2022.zip - Unzipped folder structure:
/aaer-3254/aaer-3254.json(metadata)aaer-3254.pdf(primary proceeding)aaer-3254.pdf.txt(primary proceeding converted to text)aaer-3254-administrative-summary.html(administrative summary)aaer-3254-administrative-summary.html.txt(administrative summary converted to text)aaer-3254-press-release.html(press release)aaer-3254-press-release.html.txt(press release converted to text)aaer-3254-sec-complaint.pdf(SEC complaint)aaer-3254-sec-complaint.pdf.txt(SEC complaint converted to text)aaer-3254-judgement.pdf(judgement)aaer-3254-judgement.pdf.txt(judgement converted to text)aaer-3254-litigation-release.html(litigation release)aaer-3254-litigation-release.html.txt(litigation release converted to text)
FAQ
Common questions about querying the Accounting and Auditing Enforcement Release Database API, the response shape, and the bulk archives.
How do I pull up the most recent accounting and auditing enforcement actions the SEC has published?
To pull the most recently published Accounting and Auditing Enforcement Releases, search the /aaers endpoint with a query that matches every AAER (any value of aaerNo) and sort the results by release timestamp (dateTime) in descending order. This returns the freshest AAERs first, with the full structured record for each — release identifier (aaerNo), publication timestamp (dateTime), short narrative (summary), tags (tags), respondents (respondents), involved companies and individuals (entities), penalties (penaltyAmounts), and links to the underlying documents (urls).
The default page returns 50 results. To walk further back in time, increment the starting offset (from) by the page size (size) on each successive call up to the maximum offset of 10000.
How can I look up the details of a specific SEC enforcement release if I already know its release number?
When you already know the AAER release identifier (for example AAER-4558), look it up on the /aaers endpoint by filtering on the release number field (aaerNo). The matching record returns the full structured payload: a narrative description (summary), the parties involved (respondents, entities), the listed violations (violatedSections), penalty figures (penaltyAmounts), and links to the underlying proceeding documents (urls).
If the case is also identified by an SEC release number like 34-102226 rather than an AAER number, the same lookup works against the releaseNo array on each record.
How do I find every SEC accounting enforcement action brought against a particular company by name?
To find every AAER brought against a specific company by name, search the /aaers endpoint and filter on the respondent name (respondents.name) — for example a value of J.P. Morgan Chase & Co. or Archer-Daniels-Midland Company. The respondents array holds the parties the SEC formally named in the proceeding, so this catches cases where the company itself is the target.
A company can also appear in a case without being a named respondent — for instance as the audited entity, the issuer, or a related party. To catch those too, also filter on the broader entities list by name (entities.name), which includes every individual and organization referenced in the action along with the role they played (entities.role).
How do I search SEC enforcement actions by the public company's ticker symbol?
To search AAERs by a public company's ticker symbol, query the /aaers endpoint filtering on the ticker field of the entities array (entities.ticker) — for example UPS, JPM, or ADM. The ticker is populated on entity objects whose name matches a known public company, which lets you locate every enforcement action that names that issuer either as respondent or in any other role (entities.role).
Keep in mind that not all entities have a populated ticker — individuals and private companies have no ticker, and the field is omitted when the name does not match a known public company.
How can I retrieve all SEC enforcement cases involving a company by its CIK identifier?
To retrieve every AAER involving a company identified by its Central Index Key, search the /aaers endpoint filtering on the CIK field of the entities array (entities.cik) — for example 1090727 for UPS or 19617 for J.P. Morgan Chase. Because CIK is assigned by the SEC and stable across name changes, this is the most reliable way to track all enforcement activity tied to a single issuer.
The CIK is populated only on entities whose name matches a known public company, so individuals and private entities will not have one. If you only have a ticker or company name, the /aaers endpoint accepts those too via entities.ticker or entities.name.
How do I get all SEC accounting enforcement actions that were published in a specific year or date range?
To pull every AAER published in a specific year or date range, search the /aaers endpoint with a range filter on the release timestamp (dateTime) — for example the value of dateTime should fall between 2010-01-01 and 2020-12-31 to retrieve everything published across those eleven calendar years. Sorting on the same field (dateTime) in descending order returns the newest filings first within the window.
To walk through the full window when it contains more than 50 records, increment the starting offset (from) by the page size (size) on each successive call, up to the maximum offset of 10000.
How can I find SEC enforcement cases that allege insider trading?
To surface AAERs that allege insider trading, search the /aaers endpoint filtering on the tags array (tags) for the value insider trading. AAERs are pre-tagged with one or more topical labels — for example insider trading, accounting fraud, disclosure fraud, audit failure, backdating — so this is the most direct way to pull a topical slice of the database without needing free-text search.
The matching records describe the alleged conduct in the narrative (summary) and itemized allegations (complaints), and list the cited securities-law provisions (violatedSections) — most commonly Section 10(b) of the Securities Exchange Act of 1934 and Rule 10b-5 for insider trading cases.
How do I pull enforcement actions tagged as accounting fraud, financial misstatements, or revenue recognition issues?
To pull enforcement actions tagged with accounting-fraud-related topics, filter the /aaers endpoint on the tags array (tags) for the relevant label — for example accounting fraud, disclosure fraud, financial misstatement, fraudulent revenue recognition, or accounting violations. Each AAER carries one or more of these topical tags, so you can mix them to target an exact topic (such as combining accounting fraud with disclosure fraud).
The narrative field (summary) and the itemized allegations (complaints) describe the exact nature of the misconduct in plain English, which is useful for verifying that tag-based matches reflect the angle you care about.
How do I distinguish enforcement actions where the company or individual settled with the SEC from those that were contested?
To distinguish settled cases from contested ones on the /aaers endpoint, filter on the settlement flag (hasAgreedToSettlement). The value of hasAgreedToSettlement should be true for cases where the respondent agreed to a settlement, and false for cases that were litigated, are still pending, or where no settlement has been reached. For example, the J.P. Morgan Chase Enron case (AAER-1820) carries hasAgreedToSettlement set to true, while the Edward Richardson Jr. auditor case (AAER-3860) has it set to false.
A companion flag (hasAgreedToPayPenalty) indicates whether a monetary penalty was agreed to, which is independent of settlement — a respondent can settle without paying a penalty, for example in cease-and-desist or reinstatement orders.
How can I list enforcement actions that resulted in the respondent agreeing to pay a monetary penalty?
To list AAERs where the respondent agreed to pay a monetary penalty, search the /aaers endpoint and filter on the penalty-payment flag (hasAgreedToPayPenalty) — the value should be true. Each matching record itemizes the penalties in the penaltyAmounts array, where every object names the amount as a numeric string (penaltyAmounts.penaltyAmount), the human-readable text (penaltyAmounts.penaltyAmountText), and the party the penalty was imposed on (penaltyAmounts.imposedOn).
This flag is independent of whether the respondent settled (hasAgreedToSettlement), since some settlements involve cease-and-desist orders or suspensions without any monetary component.
How do I find SEC enforcement cases with penalties above a certain dollar threshold?
To find enforcement actions with penalties above a dollar threshold, search the /aaers endpoint with a numeric range filter on the penalty-amount field inside the penalties array (penaltyAmounts.penaltyAmount). For example, to find cases where the imposed penalty is at least 10 million dollars, the value of penaltyAmounts.penaltyAmount should be 10000000 or higher. The field is stored as a numeric string per penalty object, so the range filter matches any AAER where at least one penalty in the array meets the threshold.
Each matched record also includes the human-readable amount (penaltyAmounts.penaltyAmountText) and the entity the penalty was imposed on (penaltyAmounts.imposedOn), which is useful when a single AAER imposes several penalties on different parties (for example the Archer-Daniels-Midland AAER imposed $40,000,000 on the company and smaller penalties on two executives).
How do I rank companies by total dollar penalties imposed across all their AAERs?
To rank companies by the total dollar penalties they have been hit with across all their AAERs, paginate the /aaers endpoint (using from incremented by size up to the offset cap of 10000) and aggregate client-side over the resulting penalty records. For each retrieved AAER, walk the penalties array and sum the numeric amount (penaltyAmounts.penaltyAmount) grouped by the entity the penalty was imposed on (penaltyAmounts.imposedOn). Because the imposed-on string is not normalized, you may want to also key by company identifier (entities.cik) or ticker (entities.ticker) when the entity is a known public company.
If you want to rank exhaustively across the whole database without paginating, the bulk-metadata endpoint at /aaers/metadata/all.json returns every AAER in a single JSON file, which you can stream-aggregate locally.
How can I find enforcement actions brought against auditors or audit firms for failing to follow PCAOB standards?
To find AAERs brought against auditors or audit firms, search the /aaers endpoint and filter on the topical tag (tags) for values such as audit failure, auditor misconduct, false audit reports, auditor independence, or improper professional conduct. These tags surface cases like the EisnerAmper Infinity Q audit case or the Edward Richardson Jr. PCAOB-standards case (AAER-3860).
You can also filter on the role of the entity in the action (entities.role) — for example a value of auditor or respondent paired with an entity name (entities.name) such as EisnerAmper LLP — and on the free-text allegations (complaints) for phrases like PCAOB standards or professional skepticism. The cited statute field (violatedSections) frequently surfaces Rule 102(e) of the Commission's Rules of Practice and Rule 2-02(b)(1) of Regulation S-X for auditor cases.
How do I find enforcement actions where the SEC acted alongside the DOJ, FBI, or a US Attorney's Office?
To find AAERs where the SEC acted alongside the Department of Justice, the FBI, or a US Attorney's Office, search the /aaers endpoint and filter on the parallel-actions field (parallelActionsTakenBy) for values like Department of Justice, Federal Bureau of Investigation, or a specific district such as U.S. Attorney's Office for the Southern District of New York. This field is a list of bodies that pursued related actions alongside the SEC — for example the Michael H. Johnson Carter's case (AAER-3421) lists both U.S. Attorney's Office for the Northern District of Georgia and Federal Bureau of Investigation.
The companion field (otherAgenciesInvolved) returns objects that include both the agency name (otherAgenciesInvolved.name) and the country (otherAgenciesInvolved.country), and is populated whenever any other regulator was involved.
How can I identify SEC enforcement cases that had parallel actions taken by foreign regulators or courts?
To identify AAERs where parallel actions were taken by foreign regulators, search the /aaers endpoint and filter on the country field of the other-agencies array (otherAgenciesInvolved.country) — anything other than United States flags a foreign authority. Each object inside otherAgenciesInvolved also names the agency (otherAgenciesInvolved.name), so you can target a specific body like Brazilian Ministerio Publico Federal or Tokyo District Court.
The parallel-actions string field (parallelActionsTakenBy) sometimes references foreign courts and authorities directly by name, so combining both signals catches cross-border cases consistently.
How do I find every enforcement case where a named individual (e.g. a former CFO or CEO) was a respondent or defendant?
To find every AAER where a named individual was a respondent or defendant, search the /aaers endpoint and filter on the name field of the respondents array (respondents.name) for the person's name — for example John S. Sokol or Vince Macciocchi. To restrict the match to individuals (and not exclude or include company respondents accidentally), also constrain the respondent type field (respondents.type) to the value individual.
Individuals also frequently appear inside the broader entities array as defendants, co-conspirators, or related parties. To catch those, filter on the entity name (entities.name) with the entity type (entities.type) set to individual. The role they played in the action is named on each entity object (entities.role) — common values include respondent, defendant, co-conspirator, and related entity.
How do I narrow the results to actions taken specifically against company respondents rather than individuals?
To narrow AAER results to actions brought against companies rather than individuals, search the /aaers endpoint and filter on the respondent type field (respondents.type) — the value should be company. This excludes AAERs where only natural persons (CPAs, executives, traders) were named as respondents, surfacing entity-level cases like the Scientific-Atlanta Adelphia matter (AAER-2443) or the J.P. Morgan Chase Enron settlement (AAER-1820).
If you want to allow mixed cases (companies and individuals jointly named), keep the respondent-type filter on company — AAERs with multiple respondents match as long as at least one entry in the respondents array has the matching type.
How can I search the actual SEC complaint language to find cases about a particular allegation, like stock option backdating or revenue manipulation?
To search the actual SEC complaint language for a particular allegation, run a free-text query against the complaints field on the /aaers endpoint (complaints). The complaints array holds the SEC's itemized allegations in plain prose — for example Illegally granted undisclosed, in-the-money options by backdating stock option grants. from the Research in Motion case, or Belden Inc. improperly accelerated revenue at its subsidiary Grass Valley. For a topic like option backdating, target the word backdating; for revenue recognition, target phrases like revenue recognition or accelerating revenue.
This is more granular than the topical tags (tags), since the tag set is fixed but complaint language captures the specific factual pattern the SEC alleged. You can read the short narrative (summary) on each result to confirm relevance without parsing the underlying PDF.
How do I find enforcement cases that cite violations of a specific securities-law provision such as Rule 10b-5 or Section 13(b)(2)(A)?
To find AAERs that cite violations of a specific statute or rule, search the /aaers endpoint and filter on the violated-sections array (violatedSections). The values are stored as the canonical statute names exactly as the SEC writes them in the order — for example Rule 10b-5, Section 10(b) of the Securities Exchange Act of 1934, Section 13(b)(2)(A) of the Exchange Act, Section 17(a) of the Securities Act of 1933, or Rule 102(e) of the Commission's Rules of Practice.
Because the phrasing varies across releases (for example Section 13(b)(2)(A) of the Exchange Act versus Sections 13(a), 13(b)(2)(A), and 13(b)(2)(B) of the Exchange Act), a substring match on the relevant rule or section number is the most reliable way to surface every case that cites it.
How can I retrieve a quick narrative of what each case was about without parsing the full PDFs?
To get a quick narrative of each case without parsing the underlying PDFs, read the summary field on each record returned by the /aaers endpoint. The summary is a short paragraph in plain English that captures the nature of the proceeding, the parties involved, the alleged conduct, and the outcome — for example The SEC has instituted cease-and-desist proceedings against Celsius Holdings, Inc. for violations related to SEC reporting, books and records, internal accounting controls, and disclosure controls and procedures, resulting in a $3 million civil penalty.
For more detail without leaving the structured payload, the itemized allegations (complaints), the topical tags (tags), and the violated provisions (violatedSections) give you the full picture of what the SEC alleged and which laws it invoked.
How do I get the PDF and text-version download links for the underlying proceedings, complaints, and judgments tied to an enforcement action?
To get the underlying document links for an enforcement action, read the URLs array on each result from the /aaers endpoint (urls). Every object inside the array names the document type (urls.type) — for example primary, Administrative Summary, SEC Complaint, Press Release, Litigation Release, or Administrative Proceedings Release — and the direct SEC.gov link (urls.url).
The SEC.gov links can also be re-served through sec-api.io to access both the original document and a text-converted version. The single-file endpoint at /aaers/{aaerNo}/{type}-{filename} returns the original PDF or HTML, and appending .txt to the same endpoint returns the converted plain-text version — for example /aaers/aaer-4452/primary-34-98243.pdf for the primary proceeding and /aaers/aaer-4452/primary-34-98243.pdf.txt for its text version.
How can I download the full enforcement-action document as plain text for downstream NLP rather than parsing PDFs myself?
To download an enforcement-action document as plain text for downstream natural-language processing, hit the single-file endpoint at /aaers/{aaerNo}/{type}-{filename} and append .txt to the path. For example, the primary proceeding for AAER-4452 is served at /aaers/aaer-4452/primary-34-98243.pdf, and its text-converted version is served at the same path with .txt appended — /aaers/aaer-4452/primary-34-98243.pdf.txt. The same convention applies to HTML documents, where appending .html.txt returns the converted text.
This avoids parsing PDFs locally — the conversion is done server-side from the original PDF or HTML, and the document type segment (for example primary, administrative summary) corresponds to the entries in the URLs array (urls.type) on the parent AAER record.
How do I bulk-download the entire enforcement database in one shot instead of paginating?
To bulk-download the entire AAER database in a single response instead of paginating, use the bulk-metadata endpoint at /aaers/metadata/all.json. It returns one JSON file containing every AAER published from 1997 to present, with the same per-record fields as the search endpoint — publication timestamp (dateTime), release number (aaerNo), other release numbers (releaseNo), respondents (respondents), and document links (urls).
This is the practical choice when you intend to compute aggregates locally (counts by year, total penalties by company, tag frequencies over time) without bumping against the search endpoint's per-page maximum of 50 results and offset cap of 10000.
How do I bulk-download all enforcement documents for a given calendar year as a single archive?
To bulk-download all enforcement documents published in a calendar year as a single archive, use the per-year documents endpoint at /aaers/documents/{YEAR}.zip — for example /aaers/documents/2022.zip returns every AAER published in 2022 packaged as one ZIP file. Inside the archive, each AAER lives in its own folder named aaer-{aaerNo}, which contains the metadata JSON, the original PDF and HTML documents (primary proceeding, administrative summary, press release, SEC complaint, judgment, litigation release), and a text-converted version of each PDF or HTML with a .txt extension appended to the original filename.
This is the right choice when you need the full document corpus for a year rather than just the structured metadata, since the search endpoint at /aaers returns the metadata and direct links but not the document bytes.
How do I page through more than 50 enforcement results returned by a single search query?
To page through more than 50 AAER results from a single search query, send successive requests to the /aaers endpoint with the starting offset (from) incremented by the page size (size) each time. The page size (size) is capped at 50 per request and defaults to 50, and the starting offset (from) is capped at 10000, so a single search can walk through up to ten thousand records by stepping 0, 50, 100, and so on. Keep the query and sort identical across requests so that pagination is stable.
If your result set is genuinely larger than ten thousand records or you want every AAER without paginating, switch to the bulk-metadata endpoint at /aaers/metadata/all.json, which returns every AAER in one response.
How do I sort enforcement actions by oldest first to study historical fraud patterns?
To sort AAERs from oldest to newest for historical analysis, query the /aaers endpoint and set the sort field to the release timestamp (dateTime) with the order set to ascending. This returns the earliest published AAERs first — the database covers releases from 1997 forward, so you can start with the late-1990s and early-2000s wave of cases (for example the Sulcus Computer Corporation reinstatement matter AAER-1900 from 2003).
The sort applies to whatever query you pair it with, so combining ascending order with a tag filter (tags) lets you reconstruct the historical chronology of a particular topic like backdating or revenue recognition.
How can I track how often SEC enforcement actions cite a specific accounting issue over time?
To track how often the SEC cites a specific accounting issue over time, query the /aaers endpoint with a filter that targets the issue — either a topical tag (tags) like accounting fraud or fraudulent revenue recognition, or a free-text query on the complaint language (complaints) for the exact phrase you care about. Paginate through the full result set, then bucket the matched records client-side by year using the release timestamp (dateTime) on each AAER.
For exhaustive time series across the whole database, the bulk-metadata endpoint at /aaers/metadata/all.json returns every AAER in a single response, which makes year-over-year aggregation straightforward without needing to walk the search endpoint's pagination.
How do I find reinstatement orders where a previously suspended CPA was allowed to practice again before the SEC?
To find reinstatement orders allowing a previously suspended CPA to practice again before the SEC, search the /aaers endpoint with the tag (tags) set to reinstatement. The matching records include cases like the Joseph Jennings reinstatement (AAER-4586), the Clinton Ronald Greenman reinstatement (AAER-3522), and the William G. Stayduhar reinstatement (AAER-1900). The narrative on each record (summary) confirms the reinstatement context — for example has been reinstated by the SEC to appear and practice before the Commission as an accountant.
A free-text query on the summary field (summary) for the word reinstated is a useful complement, since some older orders may use the language without being explicitly tagged.
How can I pull every enforcement action where a specific audit firm is named as the auditor of the company under investigation?
To pull every AAER where a specific audit firm is named, search the /aaers endpoint and filter on the name field inside the entities array (entities.name) — for example EisnerAmper LLP or Prager Metis CPAs, LLC. To narrow to instances where the firm is acting as the auditor rather than the respondent, also constrain the entity role field (entities.role) to a value like auditor. The role values vary across releases — common ones include auditor, respondent, defendant, and related entity.
The respondents array (respondents.name) holds the parties the SEC formally named, so when the audit firm is itself the respondent in the proceeding (for example EisnerAmper LLP in the Infinity Q Diversified Alpha Fund matter), filtering there is the more precise way to find those direct enforcement actions.
How do I cross-reference SEC enforcement actions with the press releases the SEC issued for them?
To cross-reference an AAER with the SEC press release that announced it, read the URLs array on each result from the /aaers endpoint (urls) and filter the array entries to those whose type (urls.type) is Press Release. The URL on each matching entry (urls.url) points to the SEC.gov press-release page — for example a URL like https://www.sec.gov/news/press-release/2020-265.
The same URLs array also returns links to the primary proceeding, the administrative summary, the SEC complaint, the judgement, the order, the litigation release, and any administrative proceedings release tied to the case, each tagged by document type (urls.type). This lets you assemble the complete public document trail for any AAER from a single record.
References
Research Papers
- The Financial and Market Effects of the SEC's Accounting and Auditing Enforcement Releases
- A textual analysis of the US Securities and Exchange Commission's accounting and auditing enforcement releases relating to the Sarbanes–Oxley Act
- Fraud detection in publicly traded U.S firms using Beetle Antennae Search: A machine learning approach
- Fraud Type and Auditor Litigation: An Analysis of SEC Accounting and Auditing Enforcement Releases
- How Are Earnings Managed? Examples from Auditors
- Predicting Material Accounting Misstatements
- The effects of audit committee activity and independence on corporate fraud
- Undisclosed SEC Investigations
- What are You Saying? Using Topic to Detect Financial Misreporting