SEC 10-K Strategy Signal Extractor
Pricing
$2.00 / 1,000 successful sec 10-k section records
SEC 10-K Strategy Signal Extractor
Extract source-cited SEC 10-K Item 1, Item 1A, and Item 7, compare annual filings, and detect deterministic strategy and risk signals.
Turn public U.S. Securities and Exchange Commission (SEC) 10-K annual reports into source-cited sections and repeatable change data. Extract Item 1 (Business), Item 1A (Risk Factors), and Item 7 (Management's Discussion and Analysis, or MD&A), compare adjacent filings, and identify lexical strategy and risk signals.
This Actor uses only public SEC endpoints. It does not log in, bypass access controls, use proxies, or fall back to fixtures after live-source failures.
Why use this Actor?
- Trace every extracted section to its SEC filing URL, document hash, heading, and normalized citation offsets.
- Compare adjacent 10-K filings with bounded unified diffs and stable hashes.
- Find rule-based changes across market, product, customer, competition, operations, risk, regulation, technology, geography, and capital allocation.
- Request a bounded subset of SEC eXtensible Business Reporting Language (XBRL) Company Facts when source facts are useful beside narrative changes.
- Receive explicit error rows for missing or ambiguous sections instead of silently accepting uncertain extraction.
This is not a generic SEC filing scraper or filing downloader. It is designed as an SEC 10-K extractor for deterministic, source-cited Item 1, Item 1A, and Item 7 extraction and adjacent annual-report change analysis.
Use cases
- Monitor changes in company strategy, operations, competition, and risk disclosures.
- Build auditable 10-K research datasets for analysts and due-diligence teams.
- Compare risk factors and MD&A language across adjacent annual reports.
- Feed cited filing sections, diffs, and lexical signals into downstream review workflows.
Input
Required:
companies: one to ten tickers or numeric CIKs, such asAAPL,BRK-B, or0000320193.
Optional:
filingSelection:latest,latestPair(default), orfiscalYears.fiscalYears: one to five years whenfilingSelectionisfiscalYears.sections: any ofitem1,item1a, anditem7; all three by default.includeCompanyFacts: attach bounded SEC Company Facts; defaultfalse.companyFactConcepts: one to eightus-gaap:Tagordei:Tagconcepts.maxFactPeriods: periods per concept, from 1 to 10; default3.maxDiffChars: emitted unified-diff bound, from 1,000 to 200,000; default50,000.
Example:
{"companies": ["AAPL", "0000789019"],"filingSelection": "latestPair","sections": ["item1", "item1a", "item7"],"includeCompanyFacts": false}
Output
One dataset item represents one company, selected current filing, and requested section. Successful rows include:
- issuer and filing identity;
- normalized section text and SHA-256 hashes;
- SEC document URL plus normalized citation offsets;
- baseline comparison and bounded unified diff when requested;
- deterministic lexical signals for market, product, customer, competition, operations, risk, regulation, technology, geography, and capital allocation;
- optional bounded Company Facts;
- explicit warnings or structured errors.
OUTPUT in default key-value store contains dataset ID and counts by status.
Missing or ambiguous sections produce explicit error rows. Actor fails when no
section succeeds.
Example dataset item, shortened to show core fields:
{"schemaVersion": "1.0","recordType": "section","status": "ok","requestedIdentifier": "AAPL","company": {"cik": "0000320193","ticker": "AAPL","name": "Apple Inc."},"filing": {"accessionNumber": "0000320193-24-000123","form": "10-K","fiscalYear": 2024,"documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm"},"section": {"id": "item1","title": "Business","headingText": "ITEM 1. BUSINESS","charCount": 2188,"citation": {"documentUrl": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm","startOffset": 17,"endOffset": 2205}},"comparison": null,"signals": [],"companyFacts": [],"warnings": [],"error": null}
The full item also contains required filing identity, section text and SHA-256 hashes, complete citation fields, and every other field defined by the dataset schema.
Pricing
This Actor uses Pay Per Event pricing at
$2.00 per 1,000 successfully persisted section records$0.002 per record). Each persisted section record with
status: "ok" or status: "partial" charges one
per-1000-section-records event at an eventPriceUsd of $0.002.
company_error records and section records with status: "error" are not
charged. Records are charged only after dataset persistence succeeds, so a
failed dataset write does not incur an event charge. Apify platform usage costs
remain separate.
SEC fair-access identity
Live runs require SEC_USER_AGENT in deployment environment. Value must name
application and monitored contact, for example:
export SEC_USER_AGENT="SEC 10-K Strategy Signal Extractor ops@example.com"
Identity is configuration, not public Actor input. Runtime restricts requests to
data.sec.gov, SEC's canonical ticker mapping, and SEC Archives; limits request
rate and concurrency; bounds responses and retries; honors Retry-After; and
stops issuer work after repeated access blocking.
Local development
Requires Node.js 22+, pnpm 10.30.0, and Apify CLI.
corepack enablepnpm install --frozen-lockfilepnpm testpnpm test:coveragepnpm formatpnpm lintpnpm typecheckpnpm buildpnpm validate:schemasapify validate-schema
Deterministic network-free Actor run:
LOCAL_FIXTURE_MODE=1 apify run --purge --input \'{"companies":["AAPL"],"filingSelection":"latest","sections":["item1"],"includeCompanyFacts":false}'
Fixture mode reads synthetic files under tests/fixtures, is never an automatic
fallback, and is rejected when APIFY_IS_AT_HOME=1.
Scope and disclaimer
Signals come from versioned lexical rules applied to changed filing sentences. They summarize source-text changes; they do not predict performance, determine materiality, or constitute legal, accounting, or investment advice. Verify important conclusions against linked SEC filings. Filing HTML varies by issuer and year; missing or ambiguous headings can produce error rows. The Actor processes 10-K filings, excludes 10-K/A amendments from filing selection in version 1, and limits each run to the documented input bounds.