SEC Administrative Proceedings Database API
The SEC Administrative Proceedings Database API provides access to structured data of over 18,000 administrative proceedings from 1995 to present. The API allows searching proceedings by release number, type of order, involved entities, violated securities laws, and more. Structured data is extracted from newly published proceedings and made available in real-time as soon as they are released by the SEC.
The database includes all types of administrative proceedings, such as cease-and-desist orders, notice of proposed plan of distributions, imposing remedial sanctions, and more.
1
{
2
"releasedAt": "2024-11-22T09:00:40-05:00",
3
"releaseNo": ["33-11328", "34-101702", "AAER-4542"],
4
"fileNumbers": ["3-22327"],
5
"respondents": [
6
{
7
"name": "United Parcel Service, Inc.",
8
"type": "company",
9
"role": "respondent",
10
"cik": "1090727",
11
"ticker": "UPS"
12
}
13
],
14
"resources": [ ... ],
15
"title": "ORDER INSTITUTING CEASE-AND-DESIST PROCEEDINGS PURSUANT TO SECTION 8A OF THE SECURITIES ACT OF 1933 AND SECTION 21C OF THE SECURITIES EXCHANGE ACT OF 1934, MAKING FINDINGS, AND IMPOSING A CEASE-AND-DESIST ORDER",
16
"summary": "The SEC has instituted cease-and-desist proceedings against United Parcel Service, Inc. (UPS) for failing to adhere to accounting principles, resulting in material misrepresentations to investors regarding its earnings and other reported items.",
17
"tags": [
18
"accounting fraud",
19
"misrepresentation",
20
"disclosure violations"
21
],
22
"entities": [ ... ],
23
"complaints": [
24
"UPS failed to adhere to the basic accounting principle that the 'fair value' of an asset is the price that would be received to sell that asset in an orderly transaction between market participants.",
25
"UPS made various disclosures regarding the amount of its earnings, goodwill balances, and shareowners’ equity that were materially misleading.",
26
"UPS engaged in conduct that materially misled investors and failed to comply with its reporting, books and records, internal accounting controls, internal control over financial reporting, and disclosure controls and procedures obligations."
27
],
28
"hasAgreedToSettlement": true,
29
"hasAgreedToPayPenalty": true,
30
"penaltyAmounts": [
31
{
32
"penaltyAmount": "45000000",
33
"penaltyAmountText": "$45 million",
34
"imposedOn": "United Parcel Service, Inc."
35
}
36
],
37
"requestedRelief": [
38
"cease and desist from committing or causing any violations and any future violations of Section 17(a)(2) and (3) of the Securities Act and Sections 13(a), 13(b)(2)(A) and 13(b)(2)(B) of the Exchange Act, and Rules 12b-20, 13a-1, 13a-11, 13a-13, and 13a-15 thereunder"
39
],
40
"violatedSections": [
41
"Section 17(a)(2) and (3) of the Securities Act",
42
"Sections 13(a), 13(b)(2)(A) and 13(b)(2)(B) of the Exchange Act",
43
"Rules 12b-20, 13a-1, 13a-11, 13a-13, and 13a-15"
44
],
45
"orders": [
46
"Respondent shall cease and desist from committing or causing any violations and any future violations of Section 17(a)(2) and (3) of the Securities Act and Sections 13(a), 13(b)(2)(A) and 13(b)(2)(B) of the Exchange Act, and Rules 12b-20, 13a-1, 13a-11, 13a-13, and 13a-15 thereunder.",
47
"Respondent shall, within 10 days of the entry of this Order, pay a civil money penalty in the amount of $45 million to the Securities and Exchange Commission."
48
]
49
}
API Endpoint
To search the Administrative Proceedings Database, send a HTTP POST request with the search criteria as JSON payload to the following API endpoint:
Supported HTTP methods: POST
Request and response content type: JSON
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/sec-administrative-proceedings, 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/sec-administrative-proceedings?token=YOUR_API_KEYinstead of the base endpoint.
Search API
To search the Administrative Proceedings Database, make a POST request to https://api.sec-api.io/sec-administrative-proceedings, providing your search criteria as a JSON payload.
Request Structure
The Search API recognizes the following JSON payload parameters:
query(string, required) - The search criteria in the formatfield:valuedefining the structured datafieldto search in and thevalueto search for in this field. The search expression is formatted with the Lucene syntax and supportsANDandORoperators. Examples:entities.ticker:UPSortags:"insider trading" AND releasedAt:[2024-01-01 TO 2024-12-31].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 byreleasedAtin descending order.
Query Examples
Loading All Data
To download structured data for all administrative proceedings published between 1995 and 2024, you can use a date range query as shown below. The search request will return the first 50 results. To retrieve additional results, paginate through the dataset by incrementing the from parameter by 50 with each subsequent request.
The API can return a maximum of 10,000 results per query. Since there are more than 10,000 proceedings between 1995 and 2024, you need to divide the search universe into smaller date ranges, such as by year. For instance:
- Fetch all proceedings from 2024 with
releasedAt:[2024-01-01 TO 2024-12-31], incrementing thefromparameter by 50 for each additional request. - Once all releases from 2024 have been retrieved, repeat the process for 2023, 2022, and earlier years until all data has been fetched.
Monitoring Most Recent Administrative Proceedings
To monitor the most recent administrative proceedings published by the SEC, you can use the following search request. This request will return the 50 most recently released proceedings. You can then periodically query the API to retrieve the latest releases, for example, every 60 seconds.
Searching for Specific Companies
If you are interested in administrative proceedings involving specific companies, you can use the ticker or cik filters. The example will return proceedings involving Twitter (ticker: UPS, CIK: 1090727).
Response Structure
The Search API returns a JSON object with two main fields: total and data. The total field indicates the total number of results matching the search criteria, while the data field contains an array of administrative proceedings that match the query. Each object in the data array represents a proceeding and includes the following fields:
id(string) - A system internal unique identifier of the administrative proceeding.releasedAt(string) - The publication date and time of the proceeding, e.g.2025-02-04T10:00:21-05:00. Format:yyyy-MM-ddTHH:mm:ssXXX.releaseNo(array of strings) - The SEC release numbers of the proceeding. If an AAER release number is available, it is listed here, e.g.,["33-11364", "34-102332", "AAER-4562"].fileNumbers(array of strings) - The file numbers of the proceeding, e.g.,["3-22448"]. If multiple proceedings are available, such as an initial cease-and-desist order followed by a distribution plan, each proceeding will have the same file number, but different release numbers. The file number is used to link multiple releases to the primary proceeding.respondents(array of objects) - An array of objects representing the respondents involved in the proceeding. Each object includes thename,type,role, and optionaltickerandcikfields. Thetypefield can beindividual,company, orother.resources(array of objects) - An array of objects withlabelandurlfields, providing links to source documents and related material, such as submission for comments.title(string) - The title of the proceeding as stated in the official release.summary(string) - A brief summary of the proceeding.tags(array of strings) - Tags associated with the proceeding, such asaccounting fraud,audit failure, etc.entities(array of objects) - An array of objects representing the parties involved in the proceeding. Thetickerandcikfields are optional and are only present if thenamewas successfully matched to a known publicly traded company.name(string) - The name of the party involved.type(string) - The type of the party, such asindividual,company, orother.role(string) - The role of the party, such asrespondent,defendant,affected entityorother.ticker(string) - The ticker symbol of the party, if available.cik(string) - The Central Index Key (CIK) of the party, if available.
complaints(array of strings) - An array of complaints or charges, such as "The deliberate and systematic failure to audit and review public company and SEC-registered broker-dealer clients’ financial statements in accordance with PCAOB standards."parallelActionsTakenBy(array of strings) - An array of other agencies that took parallel actions related to the proceeding, such asU.S. Department of Justicein case of criminal charges.hasAgreedToSettlement(boolean) - Indicates whether the respondent has agreed to a settlement.hasAgreedToPayPenalty(boolean) - Indicates whether the respondent has agreed to pay a penalty.penaltyAmounts(array of objects) - An array of penalty objects withpenaltyAmount,penaltyAmountTextandimposedOnfields. Each object represents a penalty imposed on a party involved in the proceeding. A proceeding can state multiple penalties, for example, if multiple respondents are involved.penaltyAmount(string) - The cleaned penalty amount in USD.penaltyAmountText(string) - The original penalty amount as stated in the enforcement action.imposedOn(string) - The party on which the penalty was imposed.
requestedRelief(array of strings) - An array of requested reliefs, such ascease-and-desist order,permanent injunctions,civil penalties, etc.violatedSections(array of strings) - An array of securities laws violated by the respondents, such asSection 17(a)(3) of the Securities Act of 1933orRules 13a-14 and 13b2-1.orders(array of strings) - An array of orders issued by the SEC in the proceeding, such as "Respondent is suspended from appearing or practicing before the Commission as an accountant".otherAgenciesInvolved(array of objects) - An array of other agencies involved in the proceeding, such as{ "name": "Autorité des Marchés Financiers", "country": "Canada" }
Response Example
1
{
2
"total": {
3
"value": 166,
4
"relation": "eq"
5
},
6
"data": [
7
{
8
"id": "3391e850ed3168135e6211daaf8cf67c",
9
"releasedAt": "2025-01-17T11:56:58-05:00",
10
"releaseNo": [
11
"33-11359",
12
"IA-6830",
13
"IC-35453"
14
],
15
"fileNumbers": [
16
"3-22435"
17
],
18
"respondents": [
19
{
20
"name": "The Vanguard Group, Inc.",
21
"type": "company",
22
"role": "respondent",
23
"cik": "102909",
24
"ticker": ""
25
}
26
],
27
"resources": [
28
{
29
"label": "primary",
30
"url": "https://www.sec.gov/files/litigation/admin/2025/33-11359.pdf"
31
}
32
],
33
"title": "ORDER INSTITUTING ADMINISTRATIVE AND CEASE-AND-DESIST PROCEEDINGS, PURSUANT TO SECTION 8A OF THE SECURITIES ACT OF 1933, SECTIONS 203(e) AND 203(k) OF THE INVESTMENT ADVISERS ACT OF 1940, AND SECTION 9(f) OF THE INVESTMENT COMPANY ACT OF 1940, MAKING FINDINGS, AND IMPOSING REMEDIAL SANCTIONS AND A CEASE-AND-DESIST ORDER",
34
"summary": "The SEC has instituted proceedings against The Vanguard Group, Inc. for misleading statements regarding tax consequences to investors, resulting in remedial sanctions and a cease-and-desist order.",
35
"tags": [
36
"misleading statements",
37
"tax consequences",
38
"investment funds"
39
],
40
"entities": [
41
{
42
"name": "The Vanguard Group, Inc.",
43
"type": "company",
44
"role": "respondent",
45
"cik": "102909",
46
"ticker": ""
47
}
48
],
49
"complaints": [
50
"Vanguard made misleading statements about potential tax consequences to investors in the Vanguard Investor Target Retirement Funds.",
51
"Vanguard failed to disclose the potential for increased capital gains distributions resulting from redemptions of fund shares by newly-eligible investors."
52
],
53
"parallelActionsTakenBy": [
54
"Office of the New York State Attorney General",
55
"North American Securities Administrators Association"
56
],
57
"hasAgreedToSettlement": true,
58
"hasAgreedToPayPenalty": true,
59
"penaltyAmounts": [
60
{
61
"penaltyAmount": "135000000",
62
"penaltyAmountText": "$135 million",
63
"imposedOn": "The Vanguard Group, Inc."
64
},
65
{
66
"penaltyAmount": "13500000",
67
"penaltyAmountText": "$13.5 million",
68
"imposedOn": "The Vanguard Group, Inc."
69
}
70
],
71
"requestedRelief": [
72
"disgorgement of profits",
73
"civil penalties"
74
],
75
"violatedSections": [
76
"Section 17(a)(2) of the Securities Act",
77
"Section 206(4) of the Advisers Act",
78
"Rule 206(4)-8",
79
"Rule 206(4)-7",
80
"Section 34(b) of the Investment Company Act"
81
],
82
"orders": [
83
"Vanguard cease and desist from committing or causing any violations and any future violations of Section 17(a)(2) of the Securities Act, Section 206(4) of the Advisers Act and Rules 206(4)-7 and 206(4)-8 promulgated thereunder, and Section 34(b) of the Investment Company Act.",
84
"Vanguard is censured.",
85
"Vanguard is ordered to pay disgorgement in the amount of $14,700,000 and prejudgment interest thereon in the amount of $3,500,000.",
86
"Vanguard shall, within 10 days of the entry of this Order, pay a civil money penalty in the amount of $13,500,000 to the Commission."
87
],
88
"investigationConductedBy": [
89
"Division of Enforcement"
90
],
91
"litigationLedBy": [
92
"Division of Enforcement"
93
],
94
"otherAgenciesInvolved": [
95
{
96
"name": "Office of the New York State Attorney General",
97
"country": "United States"
98
},
99
{
100
"name": "North American Securities Administrators Association",
101
"country": "United States"
102
}
103
]
104
},
105
// ...
106
]
107
}
FAQ
Common questions about querying the SEC Administrative Proceedings Database API, the response shape, and the bulk archives.
How do I look up an SEC enforcement action by its release number?
To find a specific administrative proceeding by its SEC release number, search the /sec-administrative-proceedings endpoint and filter on the release-number field that lists every release tied to a proceeding (releaseNo). Release numbers are issued by the SEC in series such as Securities Act (33-), Exchange Act (34-), Investment Advisers Act (IA-), Investment Company Act (IC-), and Accounting and Auditing Enforcement Release (AAER-); the value of releaseNo should equal the full string as published, for example 34-101702 or AAER-4542.
Because releaseNo is an array — a single proceeding can carry multiple release numbers issued under different statutes — any one of the listed values will retrieve the proceeding. The response includes the full structured record for the matching action, including the title (title), summary (summary), and the linked source documents (resources.url).
How do I find all SEC enforcement actions brought against a specific public company by ticker symbol?
To retrieve every administrative proceeding involving a particular public company by its stock ticker, search the /sec-administrative-proceedings endpoint and filter on the ticker carried on each party in the entities array (entities.ticker). The value of entities.ticker should equal the ticker as listed by the SEC, for example UPS for United Parcel Service.
The entities array enumerates every party named in the proceeding, and the ticker is only populated when the SEC's party name was matched to a known publicly traded company. Sort the results by release date in descending order (releasedAt) to walk the company's enforcement history from most recent to earliest.
How do I pull every SEC administrative proceeding involving a company using its CIK identifier?
To retrieve every administrative proceeding involving a company by its SEC-assigned Central Index Key, search the /sec-administrative-proceedings endpoint and filter on the CIK carried on each party in the entities array (entities.cik). The value of entities.cik should equal the numeric CIK as a string, for example 1090727 for United Parcel Service or 320193 for Apple.
Filtering on entities.cik is more reliable than filtering on ticker because not every respondent has a ticker — private companies, foreign issuers, and individuals are also represented in the entities array but only carry a CIK when one is known. Sort the results by releasedAt in descending order to retrieve the most recent actions first.
How do I fetch SEC enforcement actions released within a specific calendar year and page through all of them?
To fetch every administrative proceeding released within a calendar year, search the /sec-administrative-proceedings endpoint and restrict the publication date to that year (releasedAt). The value of releasedAt should be between January 1 and December 31 of the target year, for example between 2024-01-01 and 2024-12-31.
The endpoint returns up to 50 results per page, so to walk the full year set the page size (size) to 50 and increment the starting offset (from) by 50 between requests — 0, 50, 100, and so on. The total number of matching proceedings is reported in the response on the total.value field, which tells you when to stop paginating. Sort the page by releasedAt in descending order so the iteration is stable.
How do I monitor the SEC's enforcement docket in near real-time and pull only the latest proceedings every minute?
To monitor the SEC's enforcement docket in near real-time, poll the /sec-administrative-proceedings endpoint on a fixed interval (for example, once every 60 seconds) and request the most recent page of proceedings. Use a query that matches any proceeding with a release number assigned (releaseNo should have any value), keep the offset (from) at 0, set the page size (size) to the maximum of 50, and sort by publication date in descending order (releasedAt).
On each poll, compare the release date (releasedAt) or the system identifier (id) of the returned items against the most recent ones you have already seen, and process only the new entries. Because new proceedings are added to the database as they are released by the SEC, this pattern surfaces every new action within the polling interval.
How do I download the entire history of SEC administrative proceedings from 1995 to today when the dataset exceeds the 10,000-result cap per query?
To download the full history of SEC administrative proceedings from 1995 to the present, you cannot do it with a single query because the /sec-administrative-proceedings endpoint returns at most 10000 results per query. Split the search universe into yearly buckets on the publication date (releasedAt) — for example, 2024-01-01 through 2024-12-31, then 2023-01-01 through 2023-12-31, and so on back to 1995 — and download each year independently.
Within each yearly bucket, paginate by holding the page size (size) at the maximum of 50 and incrementing the starting offset (from) by 50 between requests until you have retrieved every result for that year (the total is reported on total.value). If a particularly active year approaches the 10000-result cap, subdivide that year further into quarters or months. Sorting each bucket by releasedAt in descending order keeps the pagination stable.
How do I link multiple related enforcement releases — for example an initial cease-and-desist order and its follow-on distribution plan — back to the same underlying case?
To link multiple related releases back to the same underlying case, group proceedings on the shared SEC file number that the Commission assigns to a case (fileNumbers). When the SEC publishes a sequence of orders against the same respondents — for example, an initial cease-and-desist order followed by a notice of proposed plan of distribution and later an extension order — each release carries its own value in releaseNo but they all share the same value in fileNumbers, for example 3-22327.
Search the /sec-administrative-proceedings endpoint and filter on fileNumbers set to the case's file number. Sort the results by releasedAt in ascending order to reconstruct the chronological progression of the case, from the initial order through any follow-on procedural releases.
How do I find SEC enforcement actions that resulted in a settlement?
To find administrative proceedings in which the respondent agreed to settle, search the /sec-administrative-proceedings endpoint and filter on the settlement flag (hasAgreedToSettlement should be true). This flag is set on the proceeding record when the SEC's order indicates that the respondent agreed to the entry of the order without admitting or denying the findings.
Combine the settlement filter with a date range on releasedAt to scope to a particular period, or with entities.cik or entities.ticker to restrict to a specific firm. To narrow further to settlements that included a financial component, also require the penalty-agreement flag (hasAgreedToPayPenalty should be true).
How do I identify enforcement actions where the respondent agreed to pay a monetary penalty?
To identify administrative proceedings in which the respondent agreed to pay a monetary penalty, search the /sec-administrative-proceedings endpoint and filter on the penalty-agreement flag (hasAgreedToPayPenalty should be true). The matching proceedings will have one or more entries on the penalties array (penaltyAmounts) describing each monetary sanction.
Each penalty entry reports the cleaned amount in USD as a string (penaltyAmounts.penaltyAmount), the amount as originally stated in the order text (penaltyAmounts.penaltyAmountText, for example $135 million), and the party the penalty was imposed on (penaltyAmounts.imposedOn). Note that a single proceeding can carry multiple entries on penaltyAmounts when the SEC imposes separate disgorgement, prejudgment interest, and civil penalty amounts, or when multiple respondents are sanctioned.
How do I rank SEC enforcement actions by the size of the monetary penalty imposed?
To rank administrative proceedings by the size of the monetary penalty, search the /sec-administrative-proceedings endpoint and read the penalty amount on each entry of the penalties array (penaltyAmounts.penaltyAmount). The value of penaltyAmounts.penaltyAmount is the cleaned amount in USD, but it is stored as a string — for example 45000000 for a $45 million penalty or 135000000 for a $135 million penalty — so you must coerce it to a number client-side before comparing.
Because a single proceeding can carry multiple entries on penaltyAmounts (separate disgorgement, prejudgment interest, and civil penalty amounts, or amounts imposed on different respondents), decide whether you want to rank on the largest entry, the per-respondent sum, or the per-proceeding sum, and aggregate accordingly. To restrict to proceedings the respondent has agreed to pay, also require the penalty-agreement flag (hasAgreedToPayPenalty should be true).
How do I sum the total dollar penalties levied against a specific firm across all of its SEC enforcement actions?
To sum the total dollar penalties levied against a specific firm, search the /sec-administrative-proceedings endpoint, filter to that firm using either its ticker (entities.ticker) or its CIK identifier (entities.cik), and walk every matching proceeding. Within each proceeding, iterate the penalties array (penaltyAmounts) and sum the entries whose target party (penaltyAmounts.imposedOn) matches the firm's name, coercing the cleaned amount (penaltyAmounts.penaltyAmount) from string to number.
Filtering on penaltyAmounts.imposedOn matters because a proceeding can name multiple respondents — for example a company and one of its officers — and penaltyAmounts carries one entry per imposed amount per party. Walk the full result set by paginating with the page size (size) at the maximum of 50 and incrementing the starting offset (from) by 50 between requests until you have read every matching proceeding.
How do I find enforcement actions tied to accounting fraud or financial restatements?
To find administrative proceedings tied to accounting fraud or financial restatements, search the /sec-administrative-proceedings endpoint and filter on the topical tag (tags) for the phrase accounting fraud. The tags array carries short topical labels attached to each proceeding such as accounting fraud, audit failure, misrepresentation, and disclosure violations.
The SEC also publishes an Accounting and Auditing Enforcement Release alongside many accounting-related actions, identifiable by a release number prefixed with AAER- in the release-number array (releaseNo, for example AAER-4542). Combining a tag filter on tags for accounting fraud with a prefix filter on releaseNo for AAER- captures the bulk of accounting-related enforcement. Note that sec-api.io also offers a dedicated /aaer endpoint specifically for the AAER series if you only need that subset.
How do I find SEC enforcement actions related to insider trading?
To find administrative proceedings related to insider trading, search the /sec-administrative-proceedings endpoint and filter on the topical tag (tags) for the phrase insider trading. The tags array carries short topical labels attached to each proceeding by the SEC's classification of the case.
Combine the tag filter with a date range on releasedAt to scope to a particular period, or with a party filter such as entities.cik, entities.ticker, or respondents.type set to individual to restrict to a specific company or to individuals only. The summary (summary), the complaints array (complaints), and the violated-law list (violatedSections) on each returned proceeding describe the conduct in more detail.
How do I search proceedings by the specific securities law that was allegedly violated, such as Rule 10b-5 or Section 17(a)?
To search proceedings by the specific securities law allegedly violated, search the /sec-administrative-proceedings endpoint and filter on the violated-law array (violatedSections). The violatedSections array carries one string per cited statute, section, or rule — for example Rule 10b-5, Section 17(a)(2) of the Securities Act, Section 206(4) of the Advisers Act, or Exchange Act Section 13(a) — as written in the order.
Because the SEC's wording varies across orders (Section 17(a) may appear as Section 17(a)(2), Section 17(a)(3), or Section 17(a)(2) and (3) of the Securities Act), use a phrase or substring match on the key statute name rather than an exact-equals match. The summary (summary) and complaints (complaints) often repeat the cited law in narrative form, so combining a filter on violatedSections with a free-text match on those fields catches additional cases.
How do I find enforcement actions where the SEC barred an individual from associating with broker-dealers or investment advisers?
To find proceedings in which the SEC barred an individual from associating with broker-dealers or investment advisers, search the /sec-administrative-proceedings endpoint and run a phrase match on the orders array (orders) for language such as barred from association. The orders array carries one string per order the SEC issued in the proceeding, and association bars are written there with wording like barred from association with any broker, dealer, investment adviser, municipal securities dealer, municipal advisor, transfer agent, or nationally recognized statistical rating organization.
Many association bars include a right to reapply after a specific number of years (for example, with the right to apply for reentry after two years), so the same field also tells you whether the bar is permanent or time-limited. To restrict to cases against natural persons, also require the respondent type to be an individual (respondents.type should be individual).
How do I pull every enforcement action in which the SEC sought disgorgement of profits as a remedy?
To pull every administrative proceeding in which the SEC sought disgorgement of profits, search the /sec-administrative-proceedings endpoint and filter on the requested-relief array (requestedRelief) for the phrase disgorgement of profits. The requestedRelief array carries one string per remedy the SEC asked for in the proceeding, such as disgorgement of profits, civil penalties, cease-and-desist order, and permanent injunctions.
To separate proceedings where disgorgement was actually ordered (not merely requested), also scan the orders array (orders) for entries that direct the respondent to pay disgorgement, and read the per-party amounts on the penalties array (penaltyAmounts.penaltyAmount, penaltyAmounts.imposedOn). The penalty entries describe each disgorgement, prejudgment interest, and civil penalty amount the SEC imposed.
How do I find enforcement actions against companies that failed to file required periodic reports such as 10-Ks or 10-Qs?
To find administrative proceedings against companies that failed to file required periodic reports, search the /sec-administrative-proceedings endpoint and filter on the topical tag (tags) for the phrase failure to file reports. These proceedings typically result in revocation of the company's securities registration under Section 12(j) of the Exchange Act and are tagged accordingly.
As a complementary filter, the violated-law array (violatedSections) on these cases cites Exchange Act Section 13(a) together with the periodic-report rules Rule 13a-1 (annual reports on Form 10-K) and Rule 13a-13 (quarterly reports on Form 10-Q), so a phrase match on violatedSections for Section 13(a) or Rule 13a-1 catches the same population. The narrative complaints (complaints) on these proceedings describe the missed filings and the SEC's delinquency notices.
How do I find SEC cases that were brought against individuals rather than against companies?
To find administrative proceedings brought against natural persons rather than against companies, search the /sec-administrative-proceedings endpoint and filter on the respondent type (respondents.type should be individual). The respondents.type field is one of individual, company, or other, and identifies each named respondent.
If you want strictly individual-only cases (no company co-respondents), also require that no entry on respondents.type is company. To rank or scope the results, combine the filter with a date range on releasedAt or with a topical tag on tags such as insider trading or fraud. The individual's name appears on respondents.name.
How do I get the list of every individual respondent named in a given administrative proceeding?
To list every individual respondent named in a given proceeding, retrieve the proceeding from the /sec-administrative-proceedings endpoint — by its release number (releaseNo), its file number (fileNumbers), or its system identifier (id) — and read the respondents array (respondents). Filter that array client-side to entries whose type (respondents.type) is individual and read the person's name (respondents.name) and role in the case (respondents.role, for example respondent).
Individual respondents do not typically carry a CIK or ticker, so those fields on the entry will usually be absent. If you want every party named in the proceeding — including non-respondent participants such as associated companies or affected entities — use the broader entities array (entities) instead and filter the same way on entities.type set to individual.
How do I find proceedings against registered investment advisers, such as Advisers Act Section 206 violations?
To find administrative proceedings against registered investment advisers, search the /sec-administrative-proceedings endpoint and filter on the violated-law array (violatedSections) for the phrase Section 206 — the antifraud provision of the Investment Advisers Act of 1940. Sub-sections appear in the data as Section 206(2) of the Advisers Act, Section 206(4) of the Advisers Act, Rule 206(4)-7 (compliance policies), and Rule 206(4)-8 (pooled investment vehicles), so a substring or phrase match on Section 206 catches all variants.
Combine the violated-law filter with the topical tag (tags) for investment adviser to narrow further to cases the SEC itself classified as adviser-related. The proceedings against advisers commonly impose remedies described in the orders array (orders) such as censures, cease-and-desist orders, disgorgement, and civil penalties tracked on the penalties array (penaltyAmounts).
How do I find enforcement cases that ran in parallel with criminal charges brought by the Department of Justice or with state attorneys general?
To find administrative proceedings that ran in parallel with actions by other prosecutors or regulators, search the /sec-administrative-proceedings endpoint and filter on the parallel-actions array (parallelActionsTakenBy). The parallelActionsTakenBy array carries one string per outside agency that took a related action, for example U.S. Department of Justice for parallel criminal charges or Office of the New York State Attorney General for a state-level action.
For a broad sweep of criminally parallel cases, match on parallelActionsTakenBy for Department of Justice. For state-attorney-general actions, match on Attorney General. The other-agencies array (otherAgenciesInvolved) carries a complementary list of agencies involved in the underlying investigation with their country (otherAgenciesInvolved.name, otherAgenciesInvolved.country), which is useful when you also want non-prosecutorial coordination.
How do I find SEC actions that were coordinated with a foreign securities regulator?
To find administrative proceedings coordinated with a foreign securities regulator, search the /sec-administrative-proceedings endpoint and filter on the other-agencies array (otherAgenciesInvolved). Each entry on otherAgenciesInvolved carries the agency name (otherAgenciesInvolved.name, for example Autorité des Marchés Financiers) and its country (otherAgenciesInvolved.country). To isolate the foreign coordination cases, require the country value on otherAgenciesInvolved.country to be anything other than United States.
Alternatively, to scope to a specific foreign regulator, match directly on its name on otherAgenciesInvolved.name — for example Financial Conduct Authority for the UK or Ontario Securities Commission for Canada. For parallel formal enforcement actions taken abroad, also scan the parallel-actions array (parallelActionsTakenBy).
How do I retrieve the underlying PDF order document for each administrative proceeding so I can review the full text?
To retrieve the underlying PDF order document for a proceeding, retrieve the proceeding from the /sec-administrative-proceedings endpoint and read the resources array (resources). Each entry on resources carries a label (resources.label) and a URL (resources.url); the entry whose label is primary points at the SEC's published order document, typically a PDF at https://www.sec.gov/files/litigation/admin/....
Some proceedings include additional resources alongside the primary order — for example an administrative summary page or a related supporting order — each as its own entry on resources with its own label such as Administrative Summary or the Order in this matter. Iterate the full array if you want every linked document, or filter to resources.label equal to primary for just the main order.
How do I identify proceedings that have an associated Accounting and Auditing Enforcement Release?
To identify proceedings that carry an associated Accounting and Auditing Enforcement Release, search the /sec-administrative-proceedings endpoint and filter on the release-number array (releaseNo) for entries beginning with the AAER- prefix, for example AAER-4542 or AAER-4562. The releaseNo array carries every release number assigned to the proceeding across the various SEC release series, and the presence of an AAER- value signals that the SEC also classified the action as an accounting or auditing enforcement matter.
If you only want the AAER series itself rather than the broader proceeding record, sec-api.io also offers a dedicated /aaer endpoint that exposes the AAER releases directly. For analysis that ties the AAER classification back to penalties, tags, and respondents, stay on /sec-administrative-proceedings and read the full proceeding record.
How do I aggregate yearly counts of SEC enforcement actions to chart enforcement intensity over time?
To aggregate yearly counts of SEC enforcement actions, query the /sec-administrative-proceedings endpoint once per year, restricting the publication date (releasedAt) to that year — for example between 2024-01-01 and 2024-12-31 for 2024 — and read the total count off the response field (total.value). The total.value field reports the number of matching proceedings without requiring you to download every record.
Repeat for each year from 1995 to the present and you have the time series. To break the counts down by topical theme, repeat the same yearly queries with an additional filter on the topical tag (tags, for example accounting fraud or insider trading) or on the violated-law array (violatedSections). Sorting is not necessary when you only consume total.value, but keep the page size (size) at 1 to minimize transfer if you do not need the records themselves.
How do I produce a leaderboard of the companies most frequently named as respondents across SEC enforcement history?
To produce a leaderboard of the companies most frequently named as respondents, walk the full enforcement history on the /sec-administrative-proceedings endpoint and group the returned records by respondent. The respondents array (respondents) on each proceeding carries one entry per named respondent, with respondents.name, respondents.role, respondents.type, and — when the SEC's name was matched to a known public company — respondents.cik and respondents.ticker.
Filter each entry to those where the type (respondents.type) is company and the role (respondents.role) is respondent, and accumulate counts keyed on respondents.cik (preferred when available, because it normalizes name variants) or on the normalized respondents.name for entries without a CIK. To walk the full history, paginate yearly buckets on releasedAt with the page size (size) at the maximum of 50 and the starting offset (from) incrementing by 50 per page, as described for any full-history download from this endpoint.
How do I find enforcement actions that mention a specific keyword anywhere in their narrative — for example "Ponzi" or "kickback"?
To find administrative proceedings that mention a specific keyword anywhere in their narrative, search the /sec-administrative-proceedings endpoint and run a free-text match across the narrative fields the keyword is likely to appear in — the summary (summary), the complaints array (complaints), and the topical tags (tags). For a term like Ponzi, expect hits primarily in complaints and tags (the tag is often Ponzi scheme); for a term like kickback, expect hits primarily in complaints and summary.
To broaden the search, also include the orders array (orders) and the title (title), which can carry distinctive vocabulary such as revoking registration or cease-and-desist. Phrase matches on multi-word keywords (for example commercial bribery) are more precise than single-token matches; combine with a date range on releasedAt or a party filter on entities.cik to narrow the population.
How do I tell whether a proceeding is a substantive enforcement action versus a procedural follow-up such as an extension order or a notice of distribution plan?
To distinguish a substantive enforcement action from a procedural follow-up, read both the proceeding's text fields and its structured fields on the /sec-administrative-proceedings endpoint. Procedural follow-ups carry titles (title) such as EXTENSION ORDER, ORDER GRANTING EXTENSION OF TIME TO FILE PROPOSED PLAN OF DISTRIBUTION, or NOTICE OF PROPOSED PLAN OF DISTRIBUTION, and summaries (summary) describing administrative actions like granting an extension rather than findings of misconduct.
Structurally, procedural releases typically have empty arrays for complaints (complaints), violated laws (violatedSections), and penalty amounts (penaltyAmounts), and a short orders array (orders) describing only the procedural ruling (for example The Division's request for an extension of time is granted.). Substantive enforcement actions, by contrast, carry populated complaints, violatedSections, and usually penaltyAmounts or detailed orders describing sanctions. A useful heuristic is to require at least one entry in complaints and at least one entry in violatedSections for a proceeding to count as substantive; for related groupings of substantive and procedural releases, link them on the shared file number (fileNumbers).
How do I retrieve a publicly traded respondent's full enforcement history along with associated entities — for example a broker-dealer or an affiliated fund — that were also named in those proceedings?
To retrieve a publicly traded respondent's full enforcement history along with the associated entities named alongside it, search the /sec-administrative-proceedings endpoint and filter on the CIK of the target firm carried on the entities array (entities.cik). For each matching proceeding, read the complete entities array to see every party the SEC named: the role field (entities.role) distinguishes the primary respondent from other parties carrying roles such as associated entity, other relevant entity, affected entity, or defendant.
For each non-primary entry, the same fields are available — name (entities.name), type (entities.type), CIK (entities.cik) when matched, and ticker (entities.ticker) when matched — which lets you build a graph of the target firm together with affiliated funds, broker-dealers, and named officers. Walk the full result set by paginating with the page size (size) at the maximum of 50 and incrementing the starting offset (from) by 50 until you have read every proceeding.
How do I structure my search to retrieve more than 50 results, given the per-request size cap?
To retrieve more than 50 results from the /sec-administrative-proceedings endpoint, keep the page size (size) at its maximum of 50 and paginate by incrementing the starting offset (from) by 50 between requests — 0, 50, 100, and so on. The total count of matching proceedings is reported on the response field total.value, which tells you when to stop paginating. The starting offset (from) has a hard cap of 10000, so a single query can return at most 10,000 records.
When the matching population exceeds 10,000 records — for example, the entire history of SEC administrative proceedings — split the search universe into narrower date ranges on the publication date (releasedAt), typically by year, and paginate each range independently. Sort each page by releasedAt in descending order (the default) so that the pagination is stable across requests.