Form 8-K Item 4.01 Structured Data API
The Form 8-K Item 4.01 Structured Data API provides access to a database of changes in accountants and auditors, extracted from material event disclosures filed under Item 4.01 of Form 8-K: "Changes in Registrant's Certifying Accountant." Item 4.01 in Form 8-K filings discloses details regarding changes in a company's independent auditor, a significant event with potential implications for investor confidence and financial reporting. The database encompasses all 8-K filings that disclose Item 4.01, spanning from the present back to 2004, when Item 4.01 was first introduced, with over 25,000 change-of-accountant notices to date.
The data is extracted from the text section disclosed under Item 4.01 and is provided in a structured JSON format with key/value properties, enabling easy analysis and evaluation of the disclosure. The extracted information include:
- Key components of the disclosure, including details about the termination of the former accountant, the engagement of the new accountant, and any reported disagreements or material weaknesses
- Identification of the former and newly appointed accounting firms
- Dates marking the engagement and termination of the respective accountants
- Reasons for the change, including explicit disclosures of dismissal, resignation, dissolution, and declination to stand for reappointment
- Details of disagreements with the former accountant over accounting principles or auditing scope
- Details about qualification of audit reports, such as whether the audit report was unqualified, qualified, or adverse
- Statements about material weaknesses in internal controls over financial reporting
- Any mention of "going concern" issues or other reportable events
- Specifics regarding board or audit committee approvals
- Additional contextual data, such as attachments or exhibits referenced in the filings
API Endpoint
Search and retrieve structured details about accountant and auditor changes from Form 8-K filings by sending POST HTTP requests with search parameters as JSON-formatted 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 available in your user profile. You can utilize your API key in one of two ways. Choose the method that best fits your implementation:
- Authorization Header: Include your API key as an
Authorizationheader in yourPOSTrequests. For instance, before sending aPOSTrequest tohttps://api.sec-api.io/form-8k, 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/form-8k?token=YOUR_API_KEYinstead of the base endpoint.
Request Parameters
You can retrieve structured data extracted from Item 4.01 in Form 8-K filings by sending a search query to the API. All fields of the extracted data are searchable. For a complete list of searchable fields, refer to the Response Structure section below. Send a search query as a JSON-formatted payload to the API using the structure explained below.
Request parameters:
query(string) - Your search criteria in the formatfield:valuedefining the fields to search in and the values to search for in those fields. The query is written in Lucene syntax and supports boolean operators (AND, OR, NOT), range queries across date and number fields using square brackets ([,]), wildcards (*) and search expression grouping with normal brackets ((,)). More information on Lucene is available here. Query examples are available below.from(integer) - Specifies the starting position of your results, allowing for pagination. For instance, setfromto 50 to skip the first 50 results. Default: 0. Maximum: 10,000, which is also the cap for the maximum number of results returned perquery. To retrieve all results in your search universe, incrementfromby the value of thesizeparameter (e.g., 50) until no more results are returned or the 10,000 limit is reached. For example, use 0, 50, 100, and so on. If yourquerylocates more than 10,000 results, consider narrowing your search by refining your filter criteria, such as using a date range filter to iterate over months or years. One approach would be to search for items with afiledAtdate range filter, e.g.,filedAt:[2023-01-01 TO 2023-01-31](all filings from January 2023), then paginate through the results by incrementingfrom, and once completed, repeat the process for the next month, and so on.size(integer) - The number of results to be returned per request. Default: 50. Maximum: 50.sort(array) - An array of objects that specify how the returned results are sorted. The default sorting order is descending by thefiledAtdate, most recent filings first. The sorting order can be changed to ascending by settingordertoasc. The default sorting order can be overridden by specifying a different sorting field.
Request Examples
Find all change-of-accountant notices under Item 4.01 in Form 8-K filings disclosed in 2022, with the result sorted by the filing date, starting with the most recent filings. Increment the from parameter by 50 on each subsequent request to paginate through the results.
Retrieve a history of accountant and auditor changes for a specific company using its trading symbol (ticker). In this example, the API returns all change-of-accountant disclosures for the company with the ticker symbol "BLNC".
Find all change-of-accountant disclosures which state that a going concern statement is included in the audit report, where the date of disclosure is between January 1st and December 31st, 2022, with the result sorted by the filing date, starting with the most recent filings.
Response Structure
Response type: JSON
The API response represents a JSON object with two fields: total (object) and data (array). The total.value field indicates the total number of results matching your search query. The data array holds up to 50 items per request, each item representing the extracted data from a change-of-accountant disclosure with the following structure:
id(string) - System-internal unique identifier of the item.accessionNo(string) - Unique accession number of the Form 8-K filing, e.g.0001607062-24-000205.filedAt(date) - Date and time at which the filing was accepted by SEC EDGAR for processing, e.g.2024-05-15T16:17:15-04:00.periodOfReport(date) - The date of the occurrence of the event. Format:YYYY-MM-DD. For example, a company might dismiss its certifying accountant on May 1, 2024, and disclose the change in a Form 8-K filing on May 2, 2024. In this case, theperiodOfReportwould be2024-05-01.formType(string) - EDGAR form type. Possible values:8-K,8-K/A. For example, a company might file an amended Form 8-K (8-K/A) to provide additional information or clarification regarding a previously disclosed change in its certifying accountant.cik(string) - The Central Index Key (CIK) of the issuer, e.g.1862068. Leading zeros are removed.ticker(string) - The trading symbol of the issuer at the time of filing indexation, e.g.TSLAfor Tesla Inc.companyName(string) - The name of the issuer, e.g.Rubicon Technologies, Inc..items(array of strings) - List of items disclosed in the Form 8-K filing, e.g.["Item 4.01: ...", "Item 5.02: ...", "Item 9.01: ..."]. An 8-K filing may contain multiple items, each representing a different event disclosure.item4_01(object) - Information about the change in the registrant's certifying accountant. The object contains the following properties:keyComponents(string) - Key components of the accountant change in one or two sentences, e.g."GlobalSCAPE, Inc. dismissed BDO USA, LLP as its independent auditor on August 1, 2017...".newAccountantDate(string) - Date the new accountant was engaged, formatYYYY-MM-DD, e.g."2023-08-03".engagedNewAccountant(boolean) - Whether the registrant engaged the new accountant, e.g.false.formerAccountantDate(string) - Date the former accountant's engagement ended, formatYYYY-MM-DD, e.g."2023-06-30".engagementEndReason(string) - Reason for the former accountant's disengagement. Possible values:resignation,dismissal,dissolution,declination to stand for reappointment. E.g."dismissal".reasonDetails(string) - Details explaining the engagement's end, e.g."Unable to rotate partners as required by the Sarbanes-Oxley Act of 2002.".formerAccountantName(string) - Name of the former accounting firm, e.g."Mayer Hoffman McCann P.C.".newAccountantName(string) - Name of the newly engaged accounting firm, e.g."RBSM LLP".consultedNewAccountant(boolean) - Whether the registrant consulted the new accountant, e.g.false.reportedDisagreements(boolean) - Whether disagreements with the former accountant were mentioned, e.g.false.disagreementsList(array of strings) - List of specific disagreements, e.g.["Use of non-independent counsel to lead investigation."].resolvedDisagreements(boolean) - Whether disagreements were resolved, e.g.trueor no disagreements reported.reportableEventsExist(boolean) - Whether reportable events exist, e.g.false.reportableEventsList(array of strings) - List of reportable events, e.g.["The accountant advised of the need to expand significantly the scope of its audit."].attachments(array of strings) - Attachments or exhibits referenced in the text, e.g.["Exhibit 16.1"].reportedIcfrWeakness(boolean) - Whether material ICFR weaknesses were disclosed, e.g.true.icfrWeaknessesDetails(string) - Details of ICFR weaknesses, e.g."Inadequate IT general controls impacting financial systems.".remediatedIcfrWeakness(boolean) - Whether ICFR weaknesses were remediated, e.g.true.remediatedIcfrWeaknessDetails(string) - Details about the remediation of ICFR weaknesses, e.g."The company implemented a monthly reconciliation process...".goingConcern(boolean) - Whether the former accountant expressed a going concern, e.g.true.goingConcernDetail(string) - Details regarding the going concern, e.g."The former accountant expressed substantial doubt about the company's ability to continue as a going concern...".opinionType(string) - Type of opinion in the accountant's report (unqualified,qualified,adverse), e.g."unqualified".auditDisclaimer(boolean) - Whether the audit report included a disclaimer, e.g.false.disclaimerDetails(string) - Details about the disclaimer in the audit report, e.g."The audit report included a disclaimer of opinion due to insufficient evidence...".authorizedInquiry(boolean) - Whether the registrant authorized inquiries between accountants, e.g.true.approvedChange(boolean) - Whether the change was approved by the board or audit committee, e.g.true.
Response Example
1
{
2
"total": {
3
"value": 192,
4
"relation": "eq"
5
},
6
"data": [
7
{
8
"id": "92822ef5a957fc84101700659e72cd02",
9
"accessionNo": "0000950135-08-006951",
10
"filedAt": "2008-11-05T17:00:08-05:00",
11
"periodOfReport": "2008-10-30",
12
"formType": "8-K",
13
"cik": "1145404",
14
"ticker": "CRTX",
15
"companyName": "CORNERSTONE THERAPEUTICS INC",
16
"items": [
17
"Item 1.01: Entry into a Material Definitive Agreement",
18
"Item 2.01: Completion of Acquisition or Disposition of Assets",
19
"Item 2.03: Creation of a Direct Financial Obligation or an Obligation under an Off-Balance Sheet Arrangement of a Registrant",
20
"Item 2.05: Cost Associated with Exit or Disposal Activities",
21
"Item 3.03: Material Modifications to Rights of Security Holders",
22
"Item 4.01: Changes in Registrant's Certifying Accountant",
23
"Item 5.01: Changes in Control of Registrant",
24
"Item 5.02: Departure of Directors or Certain Officers; Election of Directors; Appointment of Certain Officers: Compensatory Arrangements of Certain Officers",
25
"Item 5.03: Amendments to Articles of Incorporation or Bylaws; Change in Fiscal Year"
26
],
27
"item4_01": {
28
"keyComponents": "Cornerstone's Audit Committee approved the retention of Grant Thornton as its independent registered public accounting firm following the merger and the dismissal of Deloitte as its independent auditor. There were no disagreements with Deloitte, and Deloitte's reports did not contain any adverse opinion or disclaimer, except for a going concern explanatory paragraph.",
29
"newAccountantDate": "2008-10-31",
30
"engagedNewAccountant": true,
31
"formerAccountantDate": "2008-10-31",
32
"engagementEndReason": "dismissal",
33
"reasonDetails": "The merger was treated as a reverse acquisition, and Grant Thornton was retained as the independent auditor.",
34
"formerAccountantName": "Deloitte & Touche LLP",
35
"newAccountantName": "Grant Thornton LLP",
36
"consultedNewAccountant": false,
37
"reportedDisagreements": false,
38
"reportableEventsExist": true,
39
"reportableEventsList": [
40
"Material weakness in internal control over financial reporting related to non-routine transactions."
41
],
42
"attachments": [
43
"Exhibit 16.1",
44
"Exhibit 16.2"
45
],
46
"reportedIcfrWeakness": true,
47
"icfrWeaknessesDetails": "This material weakness related to the operation of controls over accounting for non-routine transactions, specifically the accrual of milestone obligations.",
48
"remediatedIcfrWeakness": true,
49
"remediatedIcfrWeaknessDetails": "Critical Therapeutics' management determined that this material weakness had been remediated as of December 31, 2007.",
50
"goingConcern": true,
51
"goingConcernDetail": "Deloitte's report contained an explanatory paragraph relating to Critical Therapeutics' ability to continue as a going concern.",
52
"opinionType": "unqualified",
53
"auditDisclaimer": false,
54
"authorizedInquiry": true,
55
"approvedChange": true
56
}
57
}
58
]
59
}
FAQ
Common questions about querying the Form 8-K Item 4.01 Structured Data API, the response shape, and the bulk archives.
How can I find all SEC filings in which a public company announced a change of its independent auditor?
Auditor changes are disclosed under Item 4.01 of Form 8-K. The /form-8k endpoint returns structured data from these disclosures, and every filing that contains a parsed Item 4.01 carries the item4_01 object on the response. To retrieve the full universe of auditor-change announcements, search for filings where the item4_01 object exists at all (any value, including empty).
Results default to descending filedAt order, so the most recent disclosures appear first. The dataset spans from 2004 (when Item 4.01 was introduced) to the present, with over 25,000 disclosures available.
How do I retrieve the complete history of auditor changes for a single company using its ticker symbol?
The /form-8k endpoint accepts a ticker filter on the issuer's trading symbol (ticker). To pull a single company's full history of auditor changes, restrict results to filings where the item4_01 object is present and ticker matches the symbol you care about, for example UGRO for urban-gro, Inc. or INFO for IHS Markit.
Sort ascending by filedAt if you want the changes in chronological order from oldest to newest. Note that the ticker stored on each record reflects the trading symbol at the time of indexation, so a company that has changed tickers historically may be more reliably tracked by CIK (see the CIK-based question).
How can I pull every accountant-change disclosure filed within a specific calendar year, such as 2023?
Use the /form-8k endpoint with a date range filter on the filing-acceptance timestamp (filedAt). Restrict results to filings where the item4_01 object exists and where the value of filedAt falls between 2023-01-01 and 2023-12-31.
Because the total may exceed the 50-results-per-page limit, paginate by incrementing the offset until no more results come back or the 10,000 hard cap is reached. If the annual universe exceeds 10,000 records, split the year into smaller windows (months or quarters) and iterate.
How do I find auditor-change announcements made by a specific company identified by its CIK number?
Each disclosure carries the issuer's Central Index Key on the response (cik). On the /form-8k endpoint, restrict results to filings where the item4_01 object exists and cik equals the company's identifier — for example 1318605 for Tesla, Inc. or 1706524 for urban-gro, Inc. Leading zeros are stripped from the CIK in the index, so pass the integer form without padding.
If you only know the company by ticker and want the more stable CIK identifier, the /mapping endpoint resolves a ticker to its CIK; from there you can run the CIK-based query against /form-8k.
How do I retrieve a single auditor-change disclosure when I already know the filing's accession number?
Every filing has a unique SEC accession number (accessionNo), for example 0001144204-10-033846. On the /form-8k endpoint, filter on that exact value to retrieve the one record. The match must be exact, including the hyphens.
A single accession number resolves to at most one structured Item 4.01 disclosure, so the response will contain either zero or one item under the data array.
How can I distinguish between original auditor-change announcements and amendments that revise an earlier disclosure?
The EDGAR form type is recorded on each record (formType). Original auditor-change disclosures carry formType of 8-K, while amendments that revise a previously filed disclosure carry formType of 8-K/A. To list only originals on the /form-8k endpoint, restrict formType to 8-K; to list only amendments, restrict it to 8-K/A.
An amendment typically references the same periodOfReport as the original and updates or clarifies fields such as the reason for the change or attachments referenced in the disclosure.
How do I find auditor changes where the former accountant resigned, as opposed to being dismissed by the company?
The reason the prior accountant's engagement ended is recorded as an enum on each filing (item4_01.engagementEndReason). Possible values are resignation, dismissal, dissolution, and declination to stand for reappointment. To find cases where the former auditor resigned on its own initiative, on the /form-8k endpoint restrict item4_01.engagementEndReason to resignation.
For example, a 2026 disclosure by UMeWorld Inc. records that J&S Associate PLT resigned effective December 31, 2025, with WSJ & Partners engaged shortly after as the replacement.
How can I list filings where the former auditor was dismissed by the company?
Use the same engagement-end-reason field on the /form-8k endpoint and restrict item4_01.engagementEndReason to dismissal. This isolates cases where the issuer terminated the auditor's engagement rather than the auditor resigning, being dissolved, or declining to stand for reappointment.
Dismissals are the most common reason in the dataset. Examples include urban-gro, Inc. dismissing BF Borgers CPA PC on May 6, 2024, and IHS Markit Ltd. dismissing PricewaterhouseCoopers LLP on July 12, 2016.
How do I find cases where the former accounting firm was dropped because it declined to stand for reappointment?
Use the engagement-end-reason enum on the /form-8k endpoint and restrict item4_01.engagementEndReason to the exact string declination to stand for reappointment. This separates voluntary non-reappointment by the auditor from outright resignation or dismissal by the issuer.
In declination cases, the audit firm chose not to seek another term despite the existing relationship being available to renew, which is treated differently for disclosure purposes than a mid-engagement resignation.
How do I find all filings in which the prior auditor had raised "going concern" doubts about the company?
A boolean flag indicates whether the former accountant expressed substantial doubt about the issuer's ability to continue as a going concern (item4_01.goingConcern). On the /form-8k endpoint, restrict results to filings where item4_01.goingConcern is true. The narrative explanation behind the flag, when present, is in the accompanying details string (item4_01.goingConcernDetail).
Going-concern paragraphs are common in disclosures by small, early-stage, or shell-like companies. For example, AlumiFuel Power Corp's 2011 disclosure flags a going-concern paragraph noting no revenues and significant operating losses.
How can I identify auditor-change disclosures that revealed material weaknesses in internal controls over financial reporting?
A boolean flag records whether the disclosure reported material weaknesses in internal controls over financial reporting (item4_01.reportedIcfrWeakness). On the /form-8k endpoint, restrict to filings where item4_01.reportedIcfrWeakness is true. The narrative explaining the weakness is in the accompanying details field (item4_01.icfrWeaknessesDetails).
Material-weakness disclosures often appear together with reportable events under Item 4.01 — for example, an auditor-change filing might note weaknesses related to the accrual of non-routine transactions or inadequate IT general controls impacting financial systems.
How do I find companies that disclosed they had remediated previously reported internal-control weaknesses?
A separate boolean flag records whether previously reported ICFR weaknesses have been remediated (item4_01.remediatedIcfrWeakness). On the /form-8k endpoint, restrict to filings where item4_01.remediatedIcfrWeakness is true. The textual description of the remediation steps, when included in the filing, appears in the accompanying details field (item4_01.remediatedIcfrWeaknessDetails).
This flag is set independently from the underlying weakness flag, so a filing can have both item4_01.reportedIcfrWeakness and item4_01.remediatedIcfrWeakness set to true when the issuer is acknowledging a historical weakness while also confirming its remediation.
How do I locate filings where the company reported disagreements with the outgoing auditor?
A boolean flag indicates whether disagreements with the former accountant are mentioned in the disclosure (item4_01.reportedDisagreements). On the /form-8k endpoint, restrict to filings where item4_01.reportedDisagreements is true. The specific disagreements, when itemized, appear in a list field (item4_01.disagreementsList), and a related flag records whether they were resolved before the change took effect (item4_01.resolvedDisagreements).
Most auditor-change disclosures report no disagreements, so this filter narrows the dataset to the small subset of contentious changes that may warrant closer review.
How can I find auditor-change filings where the former accountant issued anything other than a clean (unqualified) audit opinion?
The type of opinion in the prior accountant's last report is recorded as an enum on each filing (item4_01.opinionType). The possible values are unqualified, qualified, and adverse. To isolate non-clean opinions on the /form-8k endpoint, restrict item4_01.opinionType to either qualified or adverse.
Qualified and adverse opinions are uncommon in the dataset relative to unqualified opinions, so this filter typically returns a small, targeted set of filings where the prior accountant flagged material issues with the financial statements before the engagement ended.
How do I find filings where the prior auditor's report included a disclaimer of opinion?
A disclaimer of opinion is recorded as a separate boolean flag (item4_01.auditDisclaimer), independent of the unqualified/qualified/adverse enum. On the /form-8k endpoint, restrict to filings where item4_01.auditDisclaimer is true. The narrative explanation, when present, is in the accompanying details field (item4_01.disclaimerDetails).
A disclaimer means the auditor was unable to form or refused to express an opinion, often citing insufficient evidence — a stronger signal than a merely qualified opinion.
How can I track all companies that switched away from a specific accounting firm such as BF Borgers CPA PC?
The name of the firm being replaced is stored on each filing (item4_01.formerAccountantName). On the /form-8k endpoint, restrict item4_01.formerAccountantName to the firm's exact name as it appears in disclosures, for example BF Borgers CPA PC. The corresponding date the engagement ended is recorded separately (item4_01.formerAccountantDate), which lets you order the resulting list of departing clients chronologically.
This is the natural way to study the fallout from a regulatory action against an accounting firm. For example, after the SEC permanently barred BF Borgers CPA PC from practicing before the Commission in May 2024, many of its clients filed Item 4.01 disclosures shortly afterward — urban-gro, Inc. among them.
How do I find all clients newly engaged by a particular auditor in a given time window, for example Ernst & Young in 2023?
The name of the newly engaged firm is stored on each filing (item4_01.newAccountantName). On the /form-8k endpoint, restrict item4_01.newAccountantName to the firm's name (for example Ernst & Young LLP) and the value of filedAt to the date range you care about (for example between 2023-01-01 and 2023-12-31).
The date on which the new engagement took effect is recorded separately (item4_01.newAccountantDate), which you can use to refine the timing further or order the resulting client list chronologically by engagement start.
How do I count, by year, how many companies switched auditors, to spot industry-wide auditor turnover trends?
On the /form-8k endpoint, run one query per calendar year filtering on filings where the item4_01 object exists and the value of filedAt falls inside that year (for example between 2023-01-01 and 2023-12-31). The result's total.value field gives the count of auditor-change disclosures for that year directly, without needing to fetch the matching records.
Repeat for each year of interest to build the time series. Bulk historical analysis can use coarser windows (yearly or quarterly), while operational monitoring typically uses smaller windows (monthly or weekly).
How can I rank accounting firms by how many clients they lost over a given period?
On the /form-8k endpoint, restrict to filings where the item4_01 object exists and filedAt falls inside the period of interest, then paginate through the results and tally the value of item4_01.formerAccountantName on the client side. Sorting those tallies in descending order produces a ranked list of firms by number of departing clients in that window.
The API itself returns one disclosure per record, so the aggregation happens in the caller. If the period yields more than 10,000 records, split the date range into smaller sub-windows and combine the counts.
How can I rank accounting firms by how many new clients they gained over a given period?
Use the same approach as for tracking departures, but aggregate on the new-firm side. On the /form-8k endpoint, restrict to filings where the item4_01 object exists and filedAt falls inside the period of interest, then paginate through the results and tally the value of item4_01.newAccountantName on the client side. Sorting those tallies in descending order produces a ranked list of firms by number of newly engaged clients in that window.
Note that some filings report a new firm engagement without naming a former firm (for example, a first-time auditor engagement), so the totals on the gained side will not exactly mirror the totals on the lost side over the same window.
How do I measure the average gap in days between the date the former auditor was terminated and the date the new auditor was engaged?
Two date fields on each filing record the relevant timing: the date the former engagement ended (item4_01.formerAccountantDate) and the date the new accountant was engaged (item4_01.newAccountantDate). On the /form-8k endpoint, pull the relevant subset (for example all auditor-change disclosures within a year), then on the client side compute the difference in days between the two dates per filing and average across the population.
In many disclosures both dates are the same day (an immediate handoff), but in others — for example a 2026 UMeWorld Inc. disclosure where the former firm's resignation took effect on December 31, 2025 and the new firm was engaged on February 5, 2026 — there is a measurable gap that this calculation surfaces.
How do I find auditor changes where the company explicitly consulted the new accountant before engaging them?
A boolean flag indicates whether the registrant consulted the new accountant before the formal engagement (item4_01.consultedNewAccountant). On the /form-8k endpoint, restrict to filings where item4_01.consultedNewAccountant is true. This identifies cases where the company sought the prospective auditor's views on accounting or auditing matters in advance, which carries specific disclosure obligations under Item 4.01.
In most of the dataset this flag is false, so the filter isolates a relatively narrow subset of filings where pre-engagement consultations were acknowledged.
How can I find filings where the board of directors or audit committee did NOT approve the auditor change?
A boolean flag records whether the change was approved by the board or audit committee (item4_01.approvedChange). On the /form-8k endpoint, restrict to filings where item4_01.approvedChange is false. This isolates the unusual subset of auditor changes that proceeded without board or audit-committee approval, or where the disclosure did not affirm that approval was obtained.
Most disclosures in the dataset record item4_01.approvedChange as true, since SEC rules generally require board or audit-committee involvement in auditor selection, so a false here is worth investigating closely.
How do I find auditor-change filings whose narrative mentions a specific topic such as Sarbanes-Oxley, fraud, or restatement?
Two free-text fields on each filing carry narrative content: a short summary of the disclosure (item4_01.keyComponents) and the detailed reason explaining the engagement's end (item4_01.reasonDetails). On the /form-8k endpoint, run a full-text search across these fields for the topic of interest — for example mentions of Sarbanes-Oxley partner rotation, fraud, or restatement.
Because the relevant phrasing may live in either field depending on the filing, search across both to maximize recall. For example, one disclosure records the reason for the change as inability to rotate partners as required by the Sarbanes-Oxley Act of 2002, which surfaces via a text search of item4_01.reasonDetails.
How do I find 8-K filings that announced an auditor change alongside another major event such as a merger or change of control?
Every 8-K filing lists the items disclosed in the form (items), as an array of strings prefixed with the item number (for example Item 4.01: Changes in Registrant's Certifying Accountant and Item 5.01: Changes in Control of Registrant). On the /form-8k endpoint, restrict to filings where the item4_01 object exists and items also contains an entry starting with Item 5.01 for changes in control, Item 2.01 for completed acquisitions, or Item 1.01 for material definitive agreements.
A 2008 disclosure by Cornerstone Therapeutics, for example, contains Item 4.01 alongside Items 1.01, 2.01, 5.01, and 5.02 — a merger that triggered both an auditor change and other board and capital-structure changes in the same filing.
How can I narrow auditor-change disclosures to those occurring on or around a specific event date, rather than the filing date?
Each record carries the date of the underlying event separately from the filing-acceptance timestamp (periodOfReport). The event date represents when the auditor change actually took place, while filedAt represents when the 8-K was accepted by EDGAR (typically a day or more later). On the /form-8k endpoint, restrict the value of periodOfReport to the event window of interest, for example between 2024-05-01 and 2024-05-31.
This is the right filter when you care about market-relevant timing of the event itself — for instance, isolating auditor changes that happened in the days immediately following the SEC's bar of BF Borgers CPA PC in early May 2024.
How can I sort auditor-change results in chronological order from oldest to newest instead of newest first?
The /form-8k endpoint defaults to descending order by filing-acceptance timestamp (filedAt), so the most recent filings appear first. To reverse the order, override the sort to ascending on the same field. The earliest disclosures in the dataset go back to 2004, when Item 4.01 was introduced.
If you need event-time ordering rather than filing-time ordering, sort ascending on the event date (periodOfReport) instead. The two orderings will differ slightly because filings are typically accepted by EDGAR a day or more after the event itself.
How do I paginate through more than 50 auditor-change filings in a single query?
The /form-8k endpoint returns at most 50 records per call. To walk a larger result set, increment the starting offset by the page size on each successive call — 0, 50, 100, and so on — until the response returns no more results. The starting offset is capped at 10,000, which is also the maximum cumulative size of a single query's result set.
If the total reported in total.value exceeds the 10,000 cap, you cannot reach the remaining records by pagination alone. Split the search universe into smaller sub-ranges (typically using filedAt) and paginate each separately.
How can I retrieve more than 10,000 matching auditor-change records by splitting the search into smaller date windows?
The /form-8k endpoint enforces a hard 10,000-record cap per query. To retrieve a larger universe, slice the query along the filing-acceptance timestamp (filedAt) into windows small enough that each individual window stays under the cap — month-by-month works for most periods, and weekly or daily windows handle the densest stretches. For each window, paginate from offset 0 in steps of the page size until you have collected the window's results, then move on to the next window.
If you prefer to slice by event date rather than filing date, the same approach applies to the event-date field (periodOfReport). Either way, combine the per-window result sets in the caller, deduplicating on the accession number (accessionNo) if windows overlap.
How do I narrow a search to auditor changes triggered by regulatory action against the prior firm, such as a PCAOB or SEC bar?
The narrative explanation of the reason for the change is captured in a free-text field on each filing (item4_01.reasonDetails). On the /form-8k endpoint, run a full-text search of item4_01.reasonDetails for keywords associated with regulatory action — for example barred, SEC order, PCAOB, or the name of a barred firm. The accompanying summary field (item4_01.keyComponents) often mirrors the same language, so searching across both improves recall.
For example, urban-gro, Inc.'s 2024 disclosure records the reason for dismissing BF Borgers CPA PC as the firm being permanently barred by the SEC from appearing or practicing before the Commission, which surfaces directly via a text search for barred against item4_01.reasonDetails.