SEC EDGAR Historical Filings
Pricing
from $0.40 / 1,000 unique company filings
SEC EDGAR Historical Filings
Get multi-year SEC filing metadata by CIK or ticker, with original document links, distinct dates and completeness diagnostics.
Pricing
from $0.40 / 1,000 unique company filings
Rating
0.0
(0)
Developer
monlab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
What does SEC EDGAR Historical Filings do?
Get multi-year company filing metadata from the SEC's official EDGAR API. Specify company CIKs or current tickers and an inclusive filing-date range. Receive clean records for 10-K, 10-Q, 8-K and 20-F, including their amendments when requested.
The Actor follows the additional historical files listed by SEC, so an older date range is not silently limited to the company's recent submissions. A separate coverage report tells you whether processing completed or a limit stopped it. This is a metadata tool: it links to the original filing rather than downloading or summarizing its contents.
Why use this SEC filing API workflow?
Prepare company research datasets, maintain document inventories, or feed a document-reading pipeline. SEC already provides free JSON APIs; this Actor packages the array-shaped responses and historical files into an exportable dataset, keeps filing dates separate from reporting periods, and provides diagnostic codes for missing or interrupted data.
Apify supplies scheduling, API access, exports and run monitoring. The processing uses deterministic code with no LLM. It has no proxy setting or login flow and does not collect ownership reports, officers' contact details or full company profiles.
What data can it extract?
| Field | Type | Meaning |
|---|---|---|
| cik, companyName, tickers | string / array | Company identifier, name and current symbols |
| accessionNumber, form | string | Unique filing identifier and exact form |
| isAmendment | boolean | True for a selected form's /A amendment |
| filingDate | date string | Date filed; used by the filters |
| reportDate | date string or null | Reporting-period date |
| acceptanceDateTime | timestamp or null | Timezone-aware acceptance timestamp |
| primaryDocumentUrl, filingIndexUrl | link or null | Original primary document and filing index |
| sourceUrl, retrievedAt | link / timestamp | Source JSON and normalization time |
| missingFields | array | Missing or invalid optional fields |
The full dataset schema defines 17 fields. Missing optional values remain null rather than being guessed. Historical records can lack a primary-document filename or a timezone-aware timestamp; their filing index remains available.
How to retrieve SEC filings
- Enter 1–20 company CIKs and/or tickers in total. Apple's CIK is
0000320193; its current ticker isAAPL. - Select forms and optionally enter dates in YYYY-MM-DD format. The dates filter when the filing was submitted, not its financial reporting period.
- Set the maximum results for the whole run, from 1 to 1,000.
- Start the Actor and inspect the dataset.
- Read the
REPORToutput before treating results as complete. Download the dataset as JSON, HTML, CSV or Excel, or access it through the API tab.
Input
See the input tab for all configuration options. For a historical example:
{"ciks":["0000320193"],"fromDate":"1994-01-01","toDate":"1996-12-31","forms":["10-K"],"includeAmendments":true,"maxResults":100}
CIKs are normalized to ten digits. Repeated CIKs and tickers resolving to the same company are processed once. Ticker lookup uses SEC's current mapping and cannot resolve historical symbols reliably; use CIKs for historical work. Unknown symbols appear in the report as ticker_not_found.
Output and completeness
One dataset item represents a filing. Amendments are separate items, not replacements of the original filing. An abbreviated synthetic example:
[{"cik":"0000000123","accessionNumber":"0000000123-25-000001","form":"10-K","isAmendment":false,"filingDate":"2025-01-15","reportDate":"2024-12-31"},{"cik":"0000000123","accessionNumber":"0000000123-25-000002","form":"10-K/A","isAmendment":true,"filingDate":"2025-02-01","reportDate":"2024-12-31"}]
Companies are processed in resolved input order. Their recent page is processed before the historical pages, newest pages first; each page is sorted by filing date and accession. This is not a global sort across companies. Duplicate company/accession pairs are omitted.
REPORT.complete means the requested processing exhausted its sources. It does not guarantee SEC's data is exhaustive or that an unknown company exists. Check errors too. max_results, request_limit, charge_limit and aborted mean partial results. Reaching a result cap conservatively marks the run incomplete even if the cap happens to equal the total. A broken historical pointer or malformed response stops the run instead of presenting partial coverage as complete.
How much will it cost?
The price is $0.40 per 1,000 successfully saved unique filing records, plus $0.00005 per run start and Apify platform usage billed separately. The pricing tab shows the effective price. Duplicate records, unknown companies or tickers, and empty searches create no result charges; the start fee and platform usage can still apply to empty or failed runs.
Set a maximum charge in the run settings to bound the Actor event fees. The minimum supported maximum charge is $0.01; this is a spending cap, not a minimum purchase. The Actor stops before another record would exceed that cap and reports partial coverage. Platform execution costs are separate from this event cap. Developer test runs are not paid customer revenue.
Limits and troubleshooting
Requests are sequential, with a fixed minimum two-second pause after each response. The limits are 200 upstream attempts and 1,000 output records per run. Users cannot raise concurrency or lower the delay. A 403 or redirect stops processing; there is no bypass. A 429 honors Retry-After when the wait is at most 120 seconds, with at most three attempts; longer waits stop with a diagnostic. Failed calls also count toward the request cap.
An aborted run persists progress. Resurrecting the same run with unchanged input reconciles existing dataset records and may refetch an unfinished company's source files; these attempts still count toward the cap. Use a new run for changed input. No full SEC payload, credentials or personal contact fields are stored in the recovery state.
FAQ and support
Does this prove that a filing is accurate or provide investment advice?
No. The output is SEC source metadata and original links, not a factual audit of the document, financial calculations or an investment recommendation. Check the original document before relying on it.
Why can an older filing have a missing document URL?
Some source records lack a usable primary-document filename. The Actor preserves this as null and returns the filing index link rather than guessing a document. Acceptance timestamps without an explicit timezone are also returned as null.
What if the run fails?
Check the safe diagnostic code in REPORT and the run status. The Actor requests publicly available company metadata, respects SEC's access limits, and stops on access refusal. Use the Issues tab for problems and the API tab for programmatic access. It is not affiliated with or endorsed by SEC.