SEC Company Financials API: Annual and Quarterly XBRL avatar

SEC Company Financials API: Annual and Quarterly XBRL

Pricing

from $7.00 / 1,000 company financials

Go to Apify Store
SEC Company Financials API: Annual and Quarterly XBRL

SEC Company Financials API: Annual and Quarterly XBRL

Get SEC company financials by ticker or CIK: revenue, net income, EPS, assets, liabilities, equity, operating cash flow and shares, annual and quarterly, with the filing each row comes from. $0.01 per company.

Pricing

from $7.00 / 1,000 company financials

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Security

Limited permissions

Share

Get SEC company financials for any US-listed company by ticker or CIK, annual and quarterly, for $10 per 1,000 companies ($0.01 each). Each row has revenue, net income, diluted EPS, operating cash flow, total assets, total liabilities, stockholders' equity and shares outstanding, plus the filing the figures come from.

What does SEC Company Financials API do?

It reads the structured financial data (XBRL) that public companies file with the SEC in their 10-K and 10-Q reports and turns it into one clean row per company and fiscal period. You do not need to know which XBRL tags a company uses. Companies often change a tag over the years, and this Actor joins the old and the new tag into one continuous series.

  • Takes up to 200 tickers or CIK numbers per run.
  • Returns annual fiscal years, single quarters, or both.
  • Shows the SEC accession number and filing date for every row, so each figure can be traced to its filing.
  • Works with no login, no API key and no proxy.

Sample output

One annual row for Apple (values in US dollars, shortened):

{
"ticker": "AAPL",
"cik": "0000320193",
"companyName": "Apple Inc.",
"status": "ok",
"periodType": "annual",
"fiscalYear": 2024,
"fiscalPeriod": "FY",
"periodStart": "2023-10-01",
"periodEnd": "2024-09-28",
"form": "10-K",
"filedDate": "2025-10-31",
"accession": "0000320193-25-000079",
"firstFiledDate": "2024-11-01",
"firstAccession": "0000320193-24-000123",
"revenue": 391035000000,
"netIncome": 93736000000,
"epsDiluted": 6.08,
"operatingCashFlow": 118254000000,
"totalAssets": 364980000000,
"totalLiabilities": 308030000000,
"stockholdersEquity": 56950000000,
"sharesOutstanding": 15116786000,
"derived": false
}

How to get SEC company financials

  1. Click Try for free.
  2. In Companies, enter tickers such as AAPL and MSFT, or CIK numbers such as 320193, one per line.
  3. Choose Period type and how many periods you want per company.
  4. Click Start, open the Financials view, and export as JSON, CSV or Excel.

Bulk lists

You can give a long list of companies in two other ways, besides typing it into Companies.

  1. Dataset with the list: pick an Apify Dataset and, if needed, the name of the field that holds the ticker or CIK number. If you leave the field empty, the Actor uses the first text field of each item.
  2. List file URL: the web address of a .txt, .csv or .json file. A .txt or .csv file has one ticker or CIK number per line, and the Actor reads the first column. A .json file is an array of strings or of objects. A header row is skipped. The file can be up to 10 MB.

The Actor joins the typed entries, the dataset entries and the file entries, and removes duplicates. The limit of 200 companies per run applies to the joined list, and the message at the end of the run says how many entries were left out. Each company costs the same as before. If the dataset or the file cannot be read, the run stops with one free row that explains why.

Run it every day

  1. Fill in your companies and set Only new since the last run to true. Give the monitor a name in Monitor name, for example my-watchlist.
  2. Press Save as task.
  3. In Apify Console open Schedules, press Create new, add the Task and enter a cron expression for once a day, for example 0 7 * * *.
  4. Each run returns only the fiscal periods that earlier runs of this monitor did not deliver. The first run returns the periods you asked for and becomes the baseline.

A period counts as new when the company reports it for the first time, in a new 10-K or 10-Q. A restated figure for a period that was delivered before is not delivered again. Periods per company is a window on the newest periods. Raising it later delivers the older periods that were outside the window before.

A company is charged only when it has at least one new period. A company with nothing new returns no row and is not charged. Adding a company to the Task delivers that company's periods once, and the other companies stay unchanged.

The monitor keeps its memory in your own key-value store named sec-financials-monitor-<monitorName>. It holds company, period and filing identifiers only, no figures. A different period type or value basis starts its own memory. Use one monitor name per saved task.

Cost example, with the price of $0.01 per company in the Pricing section: the first run for 20 companies costs 20 x $0.01 = $0.20. On a later day on which 3 of the 20 companies filed a new report, the run costs 3 x $0.01 = $0.03. On a day on which none did, no company is charged.

What data do you get?

FieldMeaning
ticker, cik, companyNameThe company as the SEC lists it
periodType, fiscalYear, fiscalPeriodannual or quarterly, with the company's own fiscal year and FY, Q1, Q2, Q3 or Q4
periodStart, periodEndThe dates the figures cover
revenue, netIncome, operatingCashFlowFlows for the period, in US dollars
epsDilutedDiluted earnings per share for the period
totalAssets, totalLiabilities, stockholdersEquityBalance sheet values at the period end
sharesOutstandingShares outstanding at the period end
form, filedDate, accessionThe filing the values come from
firstFiledDate, firstAccessionThe first filing that reported the period
derivedtrue when a quarter was calculated from year-to-date figures
sourceTagsThe SEC tag used for each figure

Empty values are returned as null, never as zero. Banks and insurers often tag revenue differently, so revenue can be null for some of their quarters.

Annual, quarterly and restated figures

  • Annual rows use full fiscal years from 10-K filings.
  • Quarterly rows use 10-Q filings. The fourth quarter is not a separate filing, so it is the fiscal year minus the first nine months and is marked derived. Quarterly cash flow is also calculated from year-to-date figures. EPS is not additive, so it stays empty for a derived fourth quarter.
  • Value basis decides what happens when a company restates a period. Latest uses the most recently filed value. Original uses the value from the first filing.

Pricing

You pay $0.01 per company (the company-financials event), however many periods the company returns. Volume tiers on the Apify Store lower this price. Apify platform usage is included.

ExampleCost
1 company, 5 fiscal years$0.01
100 companies, annual and quarterly, 8 periods each$1.00
20 companies, refreshed every day for 30 days$6.00

A company is charged when its SEC data was found and the rows are saved. Entries that are not valid tickers or CIKs, tickers the SEC does not list and CIKs with no SEC financial data are free and appear as a row with a status and a message.

Input example

{
"companies": ["AAPL", "MSFT", "NVDA"],
"periodType": "annual",
"maxPeriods": 3
}

FAQ

The data is public company information published by the SEC through its free API, which needs no login or key. It contains company figures only and no personal data. The Actor sends one request at a time, well under the SEC limit of 10 requests per second, and stops if the SEC refuses requests. Check that your own use follows the laws and terms that apply to you.

Which companies are covered?

Companies that report in US GAAP in 10-K and 10-Q filings. Foreign filers that report in IFRS on forms 20-F or 40-F return the status no_us_gaap_facts.

Why is a value empty?

The company did not file that figure under a tag this Actor reads, or the period is missing from its filings. The SEC data is what companies tagged themselves, so gaps exist, most often for revenue at banks.

Why does a ticker return ticker_not_found?

The SEC ticker list holds current listings only. Use the CIK number for delisted or renamed companies.

How long does a run take?

In a local test, 20 large companies took about 6 seconds.

Is this an official SEC product?

No. This Actor is built and maintained by Don Mangu, an independent developer. It is not affiliated with or endorsed by the U.S. Securities and Exchange Commission, and it uses no SEC logo.

SEC EDGAR Filings API from the same author returns the list of filings behind these numbers. Use the accession number to match a row to its filing.