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

2 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.

πŸ’° Pricing

Pay-per-event: a one-time 0.003 when the run starts, plus a price per result saved to your dataset. The price depends on your Apify plan tier:

Your Apify planPrice per result
Free0.013
Bronze0.0123
Silver0.0117
Gold / Platinum / Diamond0.0111

Approximate total cost (includes the 0.003 start fee):

Results collectedFreeBronzeSilverGold+
100$1.30$1.24$1.17$1.11
1,000$13.00$12.35$11.70$11.05
10,000$130.00$123.50$117.00$110.50

New Apify accounts start with $5 in free credit.

πŸš€ Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the SEC Financials Scraper.
  3. Fill in the input (or keep the prefilled example), set the maximum number of results, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python, and schedule it with Apify's built-in Scheduler.

πŸ€– Use with AI agents (MCP)

Give an AI agent live access to the SEC Financials Scraper through the Model Context Protocol:

claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/sec-financials-scraper"

Then prompt it in plain language to run the scraper and read back the results.

πŸ”§ Troubleshooting

A metric is null. The company didn't report that XBRL line item for that period, common for banks and capex. Values are never guessed.

The fiscal year looks off by one. fiscal_year is the calendar year the period ends in, the convention most datasets use.

A ticker didn't resolve. Check it's a US-listed ticker, or use the CIK.

❓ FAQ

QuestionAnswer
Where does the data come from?The SEC's own open data (EDGAR XBRL).
Why is normalisation important?Companies report the same line item under different tags over the years; every variant is mapped to one clean column.
Can I screen the whole market for one metric?Yes, Frame mode returns one metric for every company that reported it in a period.
Does it include ratios and growth?Yes, margins, ROE, ROA and year-over-year growth.
Do I need an API key?No.

πŸ›‘οΈ 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