SEC Financial Statement Extractor
Pricing
Pay per usage
SEC Financial Statement Extractor
Extract SEC 10-K/10-Q financial statements — income statement, balance sheet, cash flow — as flat CSV/JSON rows by period. Resolves filings via the public SEC submissions feed or accession number; parses SEC Archives HTML. Public SEC data only; default: Apple's latest 10-K (~14s). FREE listing.
SEC Financial Statement Extractor — 10-K / 10-Q income statement, balance sheet and cash-flow statement to CSV/JSON
Bring a public SEC 10-K or 10-Q filing (CIK, accession number or filing URL) and get back the income statement, balance sheet and cash-flow statement as flat CSV/JSON rows by period — analysis-ready financial statements instead of raw HTML.
Actor: apex-nexus~sec-financial-statement-extractor (Actor id ZHy5UPYG5SUhAgE5e, account apex-nexus, owner userId cgh1CqgRIRsjx7PlQ)
Store page: https://apify.com/apex-nexus/sec-financial-statement-extractor — public, isPublic = true, notice = NONE, categories [BUSINESS], FREE listing (FREE since 2026-11-04T10:29:16Z, margin 0), PUBLIC on the Apify Store since 2026-11-05T08:10 CET.
Live metadata (read-only GET /v2/actors/ZHy5UPYG5SUhAgE5e, no flip): isPublic=true, categories [BUSINESS], seoTitle "SEC Financial Statement Extractor — 10-K / 10-Q financials", seoDescription set, exampleRunInput {"cik":"0000320193","form":"10-K"} (real CIK example, not a placeholder). Effective pricing record: FREE (margin 0) — the only pricingInfos record; no per-start or per-item charge to buyers.
Actor source: actor/ (main.py, requirements.txt) + product-root .actor/ (actor.json, input_schema.json, output_schema.json, dataset_schema.json), Dockerfile, tests/, tools/
Example inputs: examples/ — none shipped; see the 3 pairs below
Output contract: .actor/output_schema.json and .actor/dataset_schema.json
Competitor comparison: knowledge/competitor-comparison-sec-financial-statement-extractor.md (5 Apify Store competitors, pricing, README structure, example inputs)
What it is for
Bring your own filing and the Actor:
- Resolves the filing via the public SEC submissions JSON (
https://data.sec.gov/submissions/CIK{CIK}.json) when no accession number is given — latest 10-K (default) or latest 10-Q for the CIK. - Fetches the filing document from the public SEC Archives (
https://www.sec.gov/Archives/edgar/data/{CIK}/{accession}/...). - Parses the filing's HTML tables, identifies the income statement, balance sheet and cash-flow statement, and emits one flat row per line item per reporting period: statement, period end, period start, line item, value, form, filing date, accession and source URL.
Typical workflows:
- Analyst — pull a company's financial statements into a spreadsheet. Run the default input (CIK
0000320193, Apple Inc., latest 10-K) and download the dataset as CSV or JSON; every row carries its period, form, filing date, accession and source URL. - Compare periods.
periodEnd+periodStartlet you join rows across periods and companies;accession+sourceUrllet you verify every value against the source filing. - Quarterly reviews. Switch
formto10-Qor bring a specificaccessionto parse a single filing.
What this is NOT
This is explicitly not a tracker: no watchlist state, no delta alerts, no checkpoints, nothing remembered between runs. Each run is stateless and independent. It is distinct from N1 (SEC filing text chunks for AI assistants), N2 (Form 4/3/5 XML to transaction table) and N3 (SEC Company Facts XBRL to flat rows): this Actor extracts and normalizes the three financial statements from 10-K/10-Q filing documents. The Actor is free when there is nothing to return.
Data sources
Public SEC data only, via official SEC endpoints — no credentials, no proxies, no API keys, no LLMs, no commercial inference:
https://data.sec.gov/submissions/CIK{CIK}.json— latest-filing lookuphttps://www.sec.gov/Archives/edgar/data/{CIK}/{accession}/— filing documents
One or two requests per run, so SEC rate guidance is respected trivially.
Search terms (Store discovery)
Users find this Actor on the Apify Store with terms such as:
- 10-K financial statements extractor
- SEC filing financials to CSV
- income statement balance sheet extractor
- 10-Q financial data parser
- SEC 10-K financial statements to spreadsheet
- annual statement extractor
The Store title and description carry the core terms ("SEC Financial Statement Extractor", "10-K financial statements extractor", "SEC filing financials to CSV", "income statement balance sheet extractor", "10-Q financial data parser", "annual statement extractor"); this section lists them for reference when updating the listing metadata.
30-second quickstart
Open https://apify.com/apex-nexus/sec-financial-statement-extractor on the Apify Store, paste this into the input editor and run (or POST /v2/actors/ZHy5UPYG5SUhAgE5e/runs with the same body):
{}
The default run resolves CIK 0000320193 (Apple Inc.) to its latest 10-K and returns the income statement, balance sheet and cash-flow statement as flat rows. Typical default run finishes in ~10–15 seconds.
Example input → output pairs
All three pairs below were run on the live Actor against public SEC EDGAR data. Output shown is the first dataset item; full items include periodStart, retrievedAt, and all fields in .actor/output_schema.json.
Pair 1 — default run: Apple Inc. latest 10-K
Input:
{}
Output (first of 197 rows; run RK7rPWgjb0VSxJTqe, SUCCEEDED, ~10s):
{"statement": "income statement","periodEnd": "2026-09-26","periodStart": "2025-09-28","lineItem": "Products","value": 355533,"form": "10-K","filingDate": "2026-11-03","accession": "0000320193-26-000026","sourceUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000026/aapl-20260926.htm","retrievedAt": "2026-11-05T18:34:05.699088+00:00"}
Full default run: 197 rows — income statement 57, balance sheet 56, cash-flow statement 84 — periods 2024-09-28 through 2026-09-26.
Pair 2 — latest 10-Q for a CIK
Input:
{"cik": "0000320193","form": "10-Q","maxRows": 40}
Output (first of 3 items; run XShGdkThxhg6uqGMx, SUCCEEDED):
{"statement": "income statement","periodEnd": "2026-06-27","periodStart": "2025-06-29","lineItem": "Products","value": 78678,"form": "10-Q","filingDate": "2026-07-31","accession": "0000320193-26-000020","sourceUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000020/aapl-20260627.htm","retrievedAt": "2026-11-05T19:16:40.990653+00:00"}
Pair 3 — specific accession (Apple FY2025 10-K)
Input:
{"accession": "0000320193-25-000079","maxRows": 25}
Output (first of 3 items; run 3jYuw2OGVclipnwTd, SUCCEEDED, ~30s):
{"statement": "income statement","periodEnd": "2025-09-27","periodStart": "2024-09-29","lineItem": "Products","value": 307003,"form": "10-K","filingDate": "2025-10-31","accession": "0000320193-25-000079","sourceUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm","retrievedAt": "2026-11-05T20:38:40.016563+00:00"}
Input
See .actor/input_schema.json. Every field is optional; the default run processes Apple Inc.'s latest 10-K (CIK 0000320193).
| Field | Type | Default | Description |
|---|---|---|---|
cik | string | "0000320193" | SEC CIK, up to 10 digits (e.g. "320193" for Apple Inc.). Zero-padded internally. |
accession | string | — | SEC accession number (e.g. "0000320193-25-000079"). Processes that filing directly when set. |
form | select (10-K, 10-Q) | "10-K" | Latest-filing form type when accession is not set. |
maxRows | integer | uncapped | Hard cap on dataset rows per run (1–50,000). |
Output
One dataset item per line item per period. Download the whole dataset as CSV or JSON from the Apify run. See .actor/output_schema.json and .actor/dataset_schema.json.
| Field | Type | Description |
|---|---|---|
statement | string | "income statement", "balance sheet" or "cash flow statement" |
periodEnd | string|null | End of the reporting period (YYYY-MM-DD) |
periodStart | string|null | Start of the reporting period (YYYY-MM-DD); inferred for duration statements, null for balance-sheet columns |
lineItem | string | Line item as published (e.g. "Products", "Total assets") |
value | number|string|null | Value as published by the SEC (typically in millions); parentheses → negative |
form | string | SEC form type (10-K, 10-Q) |
filingDate | string | Date filed with EDGAR (YYYY-MM-DD) |
accession | string | SEC accession number |
sourceUrl | string (uri) | URL of the SEC Archives filing document |
retrievedAt | string | UTC timestamp (ISO 8601) |
Limits
- One filing per run.
maxRowscaps output at 1–50,000 rows.- Values are returned as published (typically in millions); no unit conversion.
- Invalid or unresolvable input finishes with an empty dataset rather than crashing.
- Requests are keyless and paced trivially below SEC rate guidance.
Quality gate (POLICY #6, verified live)
Default run (input {}, CIK 0000320193 → latest 10-K): run RK7rPWgjb0VSxJTqe, status SUCCEEDED, runTimeSecs ~10 (< 5 min ✓), default dataset returned 197 rows — income statement 57 / balance sheet 56 / cash-flow statement 84 (≥ 1 row per statement ✓), periods 2024-09-28 through 2026-09-26. Re-verified on the live Actor 2026-11-05 CET (director census previously reported ~14s).
Pricing & positioning vs Store competitors
Competitor scan (Apify Store, 5 closest SEC financial-statement listings):
| Competitor | Pricing | Users/30d | Example input | Notes |
|---|---|---|---|---|
| eu_open_data/sec-financial-statements | PPE $0.00005/start | 2 | placeholder | — |
| bb-tradetec/sec-financial-statement-and-notes-normalizer | PPE $0.0004/start + $0.00005/item | 1 | real (XBRL query object) | README declines to publish lifecycle/price claims |
| opendata-feeds/sec-edgar-fundamentals | PPE $0.00005/start | 1 | placeholder | — |
| nabeelbaghoor/sec-xbrl-fundamentals-api | PPE $0.00005/start | 1 | placeholder | — |
| siteverdict/siteverdict-sec-xbrl-financials | PPE $0.00005/start | 1 | real ({"companies":[…]}) | — |
Our position: FREE effective listing — all 5 closest competitors charge per start ($0.00005–$0.004) and some per item; FREE is unambiguously the cheapest and removes buyer friction during the kill-test window (signal deadline ≈ 2026-11-19 CET). See the full comparison note linked above.
Pricing decision: keep current effective pricing — no price change without an owner/KYC step (POLICY #5/#6). Pricing/publication flips remain separate scheduled director tasks (Apify cap: 5 publications per rolling 24h).
Build & test
cd products/sec-financial-statement-extractor/actorpython3 -m pytest tests/python3 tools/smoke_test.py # live smoke test against real SEC data
Build: 1.0.2 (Apify build id hymatKg8jqwyBoeWc, tagged latest); Apify validated the input/output schemas during the build.
Claims statement
All claims in this README are limited to what the product verifiably does: it resolves a public SEC 10-K/10-Q filing (default: Apple Inc., CIK 0000320193), parses the filing's HTML tables, and returns the income statement, balance sheet and cash-flow statement as flat CSV/JSON rows with period, form, filing date, accession and source URL. This README contains no revenue, user, or adoption claims, because none are verified. Current official readings (2026-11-05 CET): totalRuns=15, totalUsers30Days=1, bookmarkCount=0, actorReviewCount=0; every observed run carries owner userId cgh1CqgRIRsjx7PlQ — 0 buyer runs, $0 verified revenue (see knowledge/portfolio.md).