SEC Financials Scraper avatar

SEC Financials Scraper

Pricing

from $11.05 / 1,000 results

Go to Apify Store
SEC Financials Scraper

SEC Financials Scraper

Get clean, normalised financial statements for US public companies from the SEC EDGAR XBRL API by ticker or CIK: revenue, net income, EPS, assets, cash flow, plus margins, ROE, ROA and YoY growth. Batch a whole watchlist, or screen one metric across every filer. No API key.

Pricing

from $11.05 / 1,000 results

Rating

0.0

(0)

Developer

Norm Data

Norm Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

Norm Data

🏛️ SEC Financials Scraper

Pull clean, normalised financial statements for US public companies straight from the official SEC EDGAR XBRL API, by ticker or CIK. No API key, no login.

Revenue, net income, EPS, assets, equity and cash flow as one flat row per company per fiscal period, with margins, ROE, ROA and year-over-year growth already computed. Batch a whole watchlist, or run the market-wide screener for one metric across every filer.

🎯 Who uses it?

📊 Analysts building a fundamentals database

Load revenue, margins and growth for a universe of tickers straight into a factor model or screener.

📇 Sales & market intelligence teams

Filter B2B prospects by revenue, growth or profitability.

🔍 Investment & deal diligence teams

Pull years of financials for a company and its public comps before a decision.

🏭 Industry benchmarkers

Rank an entire sector on one metric with the market-wide screener mode.

🔁 Ongoing monitoring teams

Re-run a watchlist on a schedule and spot restatements from the filing date and accession number.

✨ What it does

  • Companies: a full, normalised statement per fiscal period for a batch of tickers or CIKs: 20+ income-statement, balance-sheet and cash-flow line items, plus ratios and year-over-year growth.
  • Concept: one metric as a clean time series across a list of companies.
  • Frame (screener): one metric for every company that reported it in a calendar period, a market-wide dataset in a single run.
  • Normalisation is the point. Filers report the same line item under different XBRL tags depending on the year and the company. This Actor maps every variant to one clean column, keeps the latest filing when a value is restated, and drops the earnings-release and proxy noise that would otherwise corrupt the series.
  • Ticker to CIK resolution. Paste plain tickers; the SEC's own key is resolved automatically.

Missing source values are returned as null, never invented.

Why this scraper

  • Clean columns, not raw tags. Get revenue, net_income, eps_diluted ready to use, not a messy XBRL tag to normalise yourself.
  • Batch multi-ticker input with automatic CIK resolution. No manual lookup step.
  • Ratios and growth built in. Margins, ROE, ROA, current ratio, debt-to-equity, free cash flow, and year-over-year growth on every row.
  • A market-wide screener mode. One metric across the whole market in a single period, a bulk dataset few scrapers offer.
  • One row per input. A ticker that does not resolve comes back as its own row with an error, so your output always lines up with your list.

How it compares

CapabilityThis actorOther SEC financials scrapers on Apify
Financial line items by ticker or CIKyesyes
Normalised metrics (one clean column per line item)yesraw XBRL tags
Batch multi-ticker input with automatic CIK resolutionyesoften CIK only, one at a time
Computed margins, ROE, ROA and ratiosyesrare
Year-over-year growthyesrare
Market-wide screener (one metric, every filer)yesno
Restatement de-duplication and filing-noise filteringyesrare
One row per input, with an error row for a bad tickeryesno

📦 What data you get

EntityUseful fields
IdentityTicker, CIK, company name, SIC code and description, exchange, state of incorporation.
FilingFiscal year and period, period start and end, form type, filed date, accession number.
Income statementRevenue, cost of revenue, gross profit, operating income, net income, EPS (basic and diluted).
Balance sheetTotal assets, current assets, cash, total liabilities, long-term debt, total equity, shares outstanding.
Cash flowOperating cash flow, capex, dividends paid, free cash flow.
Ratios & growthGross, operating and net margin, R&D intensity, ROE, ROA, current ratio, debt to equity, and year-over-year growth on revenue, net income and EPS.

Every record includes a source_url (the company's EDGAR filing history) and scraped_at (UTC). Download your dataset from Apify as CSV, JSON, Excel, or XML.

💡 Use cases

📊 Full financials for a watchlist

{ "mode": "companies", "identifiers": ["AAPL", "MSFT", "NVDA"], "period": "annual", "fiscalYearFrom": 2020, "maxItems": 50 }

📈 One metric as a time series

{ "mode": "concept", "identifiers": ["AAPL", "TSLA"], "metric": "revenue", "period": "annual" }

🏭 Screen the whole market on one metric

{ "mode": "frame", "metric": "revenue", "framePeriod": "CY2024", "maxItems": 5000 }

⚙️ How the input is organised

The input form follows the mode you pick, with the matching fields grouped underneath it:

SectionWhat it's for
ModeChoose Companies (full statement per period), Concept (one metric over time), or Frame (one metric across the whole market).
Companies and ConceptTickers or CIKs, reporting period, fiscal year range, and whether to include computed ratios and growth.
Concept and FrameWhich single line item to pull, and the calendar period for Frame mode.

Apify Free plan: every run is limited to a fixed 10-row sample. Upgrade your Apify plan to run your own settings.

🛡️ Limits & responsible use

This Actor reads only data.sec.gov, a US government open-data host, with no key, no login and no captcha; it sends a descriptive User-Agent as the SEC asks and stays well under the SEC's own rate limits.

A metric is null when the filer did not report that XBRL line item for that period, which is common for banks and capex, for example; values are never guessed. fiscal_year is the calendar year the period ends in, the convention most data vendors use, so a company with a June year end has its "FY2025" period ending in June 2025. For each period, the most recent 10-K or 10-Q value is kept, and 8-K earnings releases and proxy re-statements that repeat the same numbers without a proper period tag are ignored. An unresolved ticker still writes its own row with error set to "not found", so your output always matches your input list.

This Actor is independent, not affiliated with the SEC. It reads only data the SEC publishes as open data.

📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

Local development

bun install
bun test # offline: normalisation and input logic against synthetic fixtures
bun run src/main.ts # reads storage/key_value_stores/default/INPUT.json