SEC Financials Scraper
Pricing
from $11.05 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share

🏛️ 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_dilutedready 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
| Capability | This actor | Other SEC financials scrapers on Apify |
|---|---|---|
| Financial line items by ticker or CIK | yes | yes |
| Normalised metrics (one clean column per line item) | yes | raw XBRL tags |
| Batch multi-ticker input with automatic CIK resolution | yes | often CIK only, one at a time |
| Computed margins, ROE, ROA and ratios | yes | rare |
| Year-over-year growth | yes | rare |
| Market-wide screener (one metric, every filer) | yes | no |
| Restatement de-duplication and filing-noise filtering | yes | rare |
| One row per input, with an error row for a bad ticker | yes | no |
📦 What data you get
| Entity | Useful fields |
|---|---|
| Identity | Ticker, CIK, company name, SIC code and description, exchange, state of incorporation. |
| Filing | Fiscal year and period, period start and end, form type, filed date, accession number. |
| Income statement | Revenue, cost of revenue, gross profit, operating income, net income, EPS (basic and diluted). |
| Balance sheet | Total assets, current assets, cash, total liabilities, long-term debt, total equity, shares outstanding. |
| Cash flow | Operating cash flow, capex, dividends paid, free cash flow. |
| Ratios & growth | Gross, 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:
| Section | What it's for |
|---|---|
| Mode | Choose Companies (full statement per period), Concept (one metric over time), or Frame (one metric across the whole market). |
| Companies and Concept | Tickers or CIKs, reporting period, fiscal year range, and whether to include computed ratios and growth. |
| Concept and Frame | Which 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 installbun test # offline: normalisation and input logic against synthetic fixturesbun run src/main.ts # reads storage/key_value_stores/default/INPUT.json