Audit Reports API: auditor opinions, going concern, CAMs and ICFR as JSON
Independent auditor's reports as JSON: opinion type, going concern, critical audit matters, ICFR opinion, material weaknesses, auditor and full text.
curl -H "Authorization: Bearer $SECFEED_KEY" \ "https://secfeedapi.com/v1/audit-reports/financial-statements?ticker=AAPL"
import os, requests
r = requests.get(
"https://secfeedapi.com/v1/audit-reports/financial-statements",
params={'ticker': 'AAPL'},
headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
)
print(r.json())Overview
Every annual report includes the independent auditor's report: the opinion on the financial statements, any going concern doubt or explanatory paragraph, the critical audit matters, and for larger filers a separate opinion on internal control over financial reporting. Each is a few pages of text in a different layout per firm.
The Audit Reports API returns one record per report. The financial statements endpoint gives the opinion, frameworks, going concern flag and reason, explanatory paragraphs and each CAM with the procedures performed. The ICFR endpoint gives the control framework, the opinion and each material weakness. Pass a record's id to the content endpoint for the report's full text.
What you get
Built for developers who would rather not parse EDGAR.
Unqualified, qualified, adverse or disclaimer, with reporting and auditing frameworks.
goingConcernFlag with the stated reason, plus every explanatory paragraph by type.
Each CAM with topic, accounts affected, why it was critical and the procedures.
Control framework, effective or not, and each material weakness with remediation status.
The complete report text for any record from /v1/audit-reports/content?id=.
Endpoints
Authenticate with Authorization: Bearer YOUR_KEY. Responses are JSON.
Structured facts from an independent auditor's opinion on financial statements: opinion, frameworks, going concern, explanatory paragraphs, CAMs and auditor details.
Parameters: ticker | cik, accessionNo, startDate, endDate, data.<path>=value, from, size (max 50)
Structured facts from an independent auditor's opinion on internal control over financial reporting: framework, opinion, material weaknesses and auditor details.
Parameters: ticker | cik, accessionNo, startDate, endDate, data.<path>=value, from, size (max 50)
Full text of one auditor's report.
Parameters: id (from the audit reports APIs)
Response fields
The main fields in every result. The raw filing data is always one level down.
| Field | Meaning |
|---|---|
id, accessionNo, formType, filedAt, auditType | The report, the filing it came from, financialStatements or icfr. |
entities, seriesAndClassesContractsInformation | The company or fund that filed. |
report.opinionType, reportingFramework, auditingFramework | The opinion and the standards used. |
report.goingConcernFlag, goingConcernReason | Going concern doubt. |
report.explanatoryParagraphs[].type, description | Restatements, accounting changes and other paragraphs. |
report.cams[].topic, accountsOrDisclosures, procedures | Critical audit matters. |
report.icfrOpinionType, icfrEffective, materialWeaknesses[].title | The ICFR opinion and weaknesses. |
report.auditorFirmName, auditorPcaobId, auditorTenureStartYear | The audit firm and how long it has served. |
report.auditorLocation.city, reportSignedAt | Where the report was signed. |
Use cases
- Screen for new going concern opinions
- Study critical audit matters by industry
- Find adverse ICFR opinions and material weaknesses
- Analyze auditor tenure and office locations
Datasets behind this API
The SEC forms this API reads, with live filing counts.
Every Form 10-K annual report filed on EDGAR since 1993, searchable by company, date and text, with sections and XBRL financials as JSON.
20-FForeign issuer annual reportEvery Form 20-F annual report and 20-F registration filed by foreign private issuers on EDGAR, searchable by company and date, with sections as text.
40-FCanadian MJDS annual reportForm 40-F annual reports filed by eligible Canadian companies under the US Canada multijurisdictional disclosure system, on EDGAR since 2001.
FAQ
How far back does it go?
These datasets launched in October 2026 and are being filled newest first, starting with filings from 2020 onward. The live counter on this page shows what is loaded today. Older years are added after that.
How is the data produced?
Each record is extracted from the filing text by an AI model and validated against a fixed schema before it is published; see our AI Disclosure. A value the filing does not state is returned as null, never guessed.
Why can one filing return several records?
A filing can contain more than one auditor's report, for example a financial statements opinion and an ICFR opinion, or reports from two firms. Each report is its own record with its own id.
Try the Audit Reports API free
125 free API calls to start. No sales call.