Home / Developers / XBRL to JSON API
API reference

XBRL to JSON API

Turn the XBRL inside a 10-K, 10-Q or other filing into JSON statements, or read the SEC's XBRL company facts, single concepts over time, and frames that compare one concept across all filers. Product overview →

Endpoints

/v1/xbrl-to-json

GEThttps://secfeedapi.com/v1/xbrl-to-json

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

ParameterTypeDescriptionExample
accessionNostringAccession number of the filing. One of accessionNo, htmUrl or xbrlUrl is required.0000320193-26-000020
cikintegerFiler CIK. Optional; speeds up locating the filing.320193
htmUrlstringAny URL inside the filing folder, such as the index page or main document.https://www.sec.gov/Archives/edgar/data/1045810/000104581026000078/0001045810-26-000078-index.htm
xbrlUrlstringSame as htmUrl; either name is accepted.
notesstringtrue to include note and detail sections, not just the statements and cover page. Default false.true

/v1/xbrl/company-facts

GEThttps://secfeedapi.com/v1/xbrl/company-facts

Every XBRL fact a company has reported.

ParameterTypeDescriptionExample
tickerstringTicker, or pass cik instead.MSFT
cikintegerCompany CIK.789019

/v1/xbrl/company-concept

GEThttps://secfeedapi.com/v1/xbrl/company-concept

One concept over time for a company.

ParameterTypeDescriptionExample
tickerstringTicker, or pass cik.AAPL
cikintegerCompany CIK.320193
conceptrequiredstringXBRL tag name.Revenues
taxonomystringus-gaap, dei, ifrs-full or srt. Default us-gaap.dei

/v1/xbrl/frames

GEThttps://secfeedapi.com/v1/xbrl/frames

One concept across all companies for a period.

ParameterTypeDescriptionExample
conceptrequiredstringXBRL tag name.Assets
periodrequiredstringCY2025 for a calendar year, CY2025Q4 for a quarter, add I for a point in time (balance sheet) value.CY2025Q4I
unitstringUnit of measure. Default USD.shares
taxonomystringTaxonomy of the tag. Default us-gaap.dei

Request examples

Every response below is real output from the API, trimmed to the first records.

Statements from an Apple 10-Q

Each statement maps concepts to facts. _meta lists the statements and links to their HTML renderings.

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']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "CoverPage": {
    "DocumentType": [
      {
        "value": "10-Q",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "DocumentQuarterlyReport": [
      {
        "value": "true",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "DocumentPeriodEndDate": [
      {
        "value": "2026-06-27",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "DocumentTransitionReport": [
      {
        "value": "false",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "EntityFileNumber": [
      {
        "value": "001-36743",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "EntityRegistrantName": [
      {
        "value": "Apple Inc.",
        "period": {
          "startDate": "2025-09-28",
          "endDate": "2026-06-27"
        }
      }
    ],
    "EntityIncorporationStateCountryCode": [
      {
        "value": "CA",
        "period": {
  ...

Apple revenue reported over the years

Every value of one tag with the filing it came from; frame shows the calendar period it was assigned to.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/company-concept?ticker=AAPL&concept=Revenues"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/xbrl/company-concept",
    params={'ticker': 'AAPL', 'concept': 'Revenues'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "cik": 320193,
  "taxonomy": "us-gaap",
  "tag": "Revenues",
  "label": "Revenues",
  "description": "Amount of revenue recognized from goods sold, services rendered, insurance premiums, or other activities that constitute an earning process. Includes, but is not limited to, investment and interest income before deduction of interest expense when recognized as a component of reve...",
  "entityName": "Apple Inc.",
  "units": {
    "USD": [
      {
        "start": "2015-09-27",
        "end": "2016-09-24",
        "val": 215639000000,
        "accn": "0000320193-18-000145",
        "fy": 2018,
        "fp": "FY",
        "form": "10-K",
        "filed": "2018-11-05",
        "frame": "CY2016"
      },
      {
        "start": "2016-09-25",
        "end": "2016-12-31",
        "val": 78351000000,
        "accn": "0000320193-18-000145",
        "fy": 2018,
        "fp": "FY",
        "form": "10-K",
        "filed": "2018-11-05",
        "frame": "CY2016Q4"
      }
    ]
  }
}

Total assets for every filer at the end of 2025

pts is the number of companies; each data row is one company's value.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/frames?concept=Assets&period=CY2025Q4I"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/xbrl/frames",
    params={'concept': 'Assets', 'period': 'CY2025Q4I'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "taxonomy": "us-gaap",
  "tag": "Assets",
  "ccp": "CY2025Q4I",
  "uom": "USD",
  "label": "Assets",
  "description": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
  "pts": 6163,
  "data": [
    {
      "accn": "0001104659-26-001420",
      "cik": 1750,
      "entityName": "AAR CORP",
      "loc": "US-IL",
      "end": "2025-11-30",
      "val": 3242500000
    },
    {
      "accn": "0001628280-26-050134",
      "cik": 1800,
      "entityName": "ABBOTT LABORATORIES",
      "loc": "US-IL",
      "end": "2025-12-31",
      "val": 86713000000
    }
  ]
}

Response fields

FieldTypeMeaning
<Statement>.<concept>[].valuestringxbrl-to-json: the reported value.
<Statement>.<concept>[].period.startDate / endDate / instantstringxbrl-to-json: duration or point in time of the fact.
<Statement>.<concept>[].unitRefstringxbrl-to-json: unit, such as usd or shares.
<Statement>.<concept>[].decimalsstringxbrl-to-json: rounding precision (-6 means millions).
<Statement>.<concept>[].segment.dimension / valuestring or arrayxbrl-to-json: dimension and member for broken out facts. A single object for one dimension, a list for several.
_meta.cik / accessionNo / instancemixedxbrl-to-json: filer, filing and the instance document used.
_meta.statements[].name / category / htmlstringxbrl-to-json: statement titles, Statements or Cover, and the HTML rendering.
cik / entityNamemixedcompany-facts and company-concept: the company.
facts.<taxonomy>.<concept>.label / descriptionstringcompany-facts: tag label and definition.
facts.<taxonomy>.<concept>.units.<unit>[]arraycompany-facts: reported values, same row shape as company-concept units.
taxonomy / tag / label / descriptionstringcompany-concept and frames: the tag.
units.<unit>[].start / endstringcompany-concept: period of the value (start is absent for point in time values).
units.<unit>[].valnumbercompany-concept: the value.
units.<unit>[].accn / form / filedstringcompany-concept: the filing that reported it.
units.<unit>[].fy / fpmixedcompany-concept: fiscal year and period (FY, Q1...) of that filing.
units.<unit>[].framestringcompany-concept: calendar frame the value was assigned to, when any.
ccp / uom / ptsmixedframes: calendar period, unit and number of companies.
data[].accn / cik / entityName / locmixedframes: the filing, company and its location code.
data[].start / end / valmixedframes: period and value for each company.

Frame period formats

ValueMeaning
CY2024Calendar year 2024 duration (income statement, cash flow)
CY2025Q2Second calendar quarter of 2025, duration
CY2025Q4IPoint in time at the end of Q4 2025 (balance sheet)

How to

How do I include the notes to the financial statements?

Add notes=true. Expect a much larger response.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl-to-json?accessionNo=0000320193-26-000020&cik=320193&notes=true"
Can I convert a filing when I only have its URL?

Yes, pass htmUrl with the index page or any document URL in the filing.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl-to-json?htmUrl=https://www.sec.gov/Archives/edgar/data/1045810/000104581026000078/0001045810-26-000078-index.htm"
Do I need the CIK?

No, accessionNo alone works; cik only saves a lookup.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl-to-json?accessionNo=0000320193-26-000020"
How do I get a company's whole XBRL history?

Use company-facts. It returns every tag the company has used.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/company-facts?ticker=MSFT"
How do I track shares outstanding from the cover page?

Ask company-concept for the dei tag EntityCommonStockSharesOutstanding.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/company-concept?ticker=AAPL&concept=EntityCommonStockSharesOutstanding&taxonomy=dei"
How do I get net income history?

Request the NetIncomeLoss tag.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/company-concept?ticker=NVDA&concept=NetIncomeLoss"
How do I compare a full year figure across companies?

Use frames with a CY period and no I suffix.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/frames?concept=Revenues&period=CY2024"
How do I compare share counts across companies?

Use frames with unit=shares and taxonomy=dei.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/xbrl/frames?concept=EntityCommonStockSharesOutstanding&period=CY2025Q4I&unit=shares&taxonomy=dei"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →