Home / Products / Extraction & conversion
Financial statements

XBRL-to-JSON Converter API: SEC financial statements as JSON

Convert the XBRL in any 10-K, 10-Q, 20-F or 8-K into JSON: every statement in the company's own order, plus the cover page.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl-to-json?accessionNo=0000320193-26-000020&cik=320193"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/xbrl-to-json",
    params={'accessionNo': '0000320193-26-000020', 'cik': '320193'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
)
print(r.json())

Overview

XBRL makes financial statements machine readable, but reading it means joining an instance document, a presentation linkbase and FilingSummary.xml. The XBRL-to-JSON Converter does that for you and returns every statement the company presented, in the order the company presented it, with values, periods, units and decimals.

Point it at an accession number, the filing's HTML URL or its XBRL file. Add notes=true to include the notes. For a company's whole reporting history use company facts, and for one concept across every company use frames.

What you get

Built for developers who would rather not parse EDGAR.

Statements in filing order

CoverPage, StatementsOfIncome, BalanceSheets, StatementsOfCashFlows and every other statement presented.

Values with context

Each fact carries value, period (instant or start and end), unitRef, decimals and segment when present.

Company facts

Every XBRL fact a company ever reported, from the SEC's companyfacts data.

Frames

One concept, such as Assets, across all companies for a period like CY2025Q4I.

Endpoints

Authenticate with Authorization: Bearer YOUR_KEY. Responses are JSON.

GET/v1/xbrl-to-jsonDocs →

Every statement of a filing from its XBRL, in the company's order, plus the cover page.

Parameters: accessionNo | htmUrl | xbrlUrl, cik, notes=true

GET/v1/xbrl/company-factsDocs →

Every XBRL fact a company has reported.

Parameters: ticker | cik

GET/v1/xbrl/company-conceptDocs →

One concept over time for a company.

Parameters: ticker | cik, concept, taxonomy

GET/v1/xbrl/framesDocs →

One concept across all companies for a period.

Parameters: concept, period (CY2025, CY2025Q4I), unit

Response fields

The main fields in every result. The raw filing data is always one level down.

FieldMeaning
CoverPagedei facts: DocumentType, DocumentPeriodEndDate, EntityRegistrantName, shares outstanding and more.
StatementsOfIncome, BalanceSheets, StatementsOfCashFlowsStatement objects keyed by us-gaap concept.
value, period, unitRef, decimalsThe reported number and its context, on every fact.

Use cases

Datasets behind this API

The SEC forms this API reads, with live filing counts.

Tutorials

FAQ

Which filings have XBRL?

10-K, 10-Q, 20-F, 40-F and many 8-Ks and S-1s filed since 2009 to 2011, depending on filer size. Inline XBRL is required for most filers today.

What is the difference between xbrl-to-json and company facts?

xbrl-to-json returns the statements of one filing as presented. Company facts returns every value a company reported for each concept, across all its filings.

Can I get the result in Excel?

Yes. /v1/financial-statements/xlsx returns one filing's statements as a workbook with one sheet per statement.

Try the XBRL-to-JSON Converter free

500 API calls a month on the free plan. No sales call.

Get free API key →