Get SEC EDGAR filings by ticker, CIK or company name, or every new filing of a form type: 10-K, 10-Q, 8-K, Form 4, 13F, Form D, S-1. Filter by form and date, add the document text as Markdown, and schedule it with only-new mode. Live from the SEC's official APIs.
Versions follow MAJOR.MINOR.PATCH (src/version.py); Apify shows MAJOR.MINOR from .actor/actor.json.
Every run logs its version and records it in the RUN_STATS key-value record.
1.0.2 (2026-09-28, deployed private; not published)
Demo runs without a contact: a run of up to 2 companies, 20 filings each, with no document text, only-new or
date filters (the pre-filled input is one) may leave secContact empty and runs under the actor developer's contact;
the log says so. Anything bigger still needs the user's own contact. Apify's daily test of the pre-filled input,
which runs in Apify's own account, passes this way.
No document text for insider Forms 3, 4 and 5 (and their amendments): they carry insiders' personal details such
as home addresses. Their filing records are returned as before; documentTextError explains, filingIndexUrl
links the filing. RUN_STATS.textSkippedInsider counts them.
RUN_STATS.contactSource (input, owner or demo) replaces ownerContact.
1.0.1 (2026-09-28, deployed private; not published)
secContact is no longer schema-required (the actor still refuses a run without one), so a run in the actor
owner's own account may fall back to the owner's contact, held in secret environment variables of the actor.
Every other account must give its own contact.
1.0.0 (2026-09-28, deployed private; not published)
First release.
Company filings (companyFilings): each company in companies (ticker, CIK or exact listed name) from the
SEC's submissions API, newest first, filtered by form type (aliases such as 13F, Form 4, 13D/13G including
the SCHEDULE 13D/G names used since December 2024; amendments optional) and filing date (dateFrom/dateTo or a
moving lastDays). Date ranges older than the recent filings read the SEC's older filing pages.
Latest filings (latestFilings): every company's filings of the chosen form types from the SEC's daily form
indexes (last 5 days by default, at most 31), one record per filing, listed under the listed company when a Form 4
or Schedule 13D/G has several filers; each filled in from the filer's submissions (primary document, report date,
items, industry).
Only new filings since the last run (onlyNew): accession numbers already returned are remembered per company
list entry, mode and filter set in the named store sec-edgar-seen, written only after the filings reached the
dataset.
Document text (includeDocumentText): the primary document as Markdown with tables or plain text, hidden inline
XBRL, scripts and styles removed, cut at maxTextChars; PDFs and other non-text documents are reported in
documentTextError. Download capped at 30 MB; default memory 1 GB (a 30 MB document parses at ~440 MB).
The user's SEC contact (secContact, required, secret): validated (one line of ASCII, a real-looking email, no
placeholder addresses) and sent only in the User-Agent header after our product token; never logged or written to
the dataset, RUN_STATS or the only-new store (tests check every file and the log). The shared client got
make_client(operator_contact=...) for this.
SEC Fair Access: at most one request every 0.4 s per SEC host (≤ 5/s with both hosts busy, ~2.5/s typical;
the limit is 10/s). A 403 "Request Rate Threshold Exceeded" pauses every request of the run for 1 minute, then for
the SEC's 10 minutes; a third refusal stops the run with what it has (failed only if nothing was returned). The
SEC's storage answers a missing file (a daily index for a weekend or today) with 403 AccessDenied: read as "no
index". No proxies.
Charged per filing returned, through Apify's standard apify-default-dataset-item event. "Max results per run"
and the maximum cost per run are honoured before any document is downloaded; failed companies, filings already
returned and anything past the limits are free.
Failure isolation: a failing company only affects itself; a format change is reported as one.
Terms, https://www.sec.gov/about/privacy-information , "Website Dissemination": "Information presented on sec.gov
is considered public information and may be copied or further distributed by users of the web site without the
SEC's permission." Same page: "Current guidelines limit users to a total of no more than 10 requests per second,
regardless of the number of machines used to submit requests ... Once the rate of requests has dropped below the
threshold for 10 minutes, the user may resume accessing content on SEC.gov ... The SEC does not allow
'unclassified' bots or automated tools to crawl the site."
robots.txt: www.sec.gov allows /Archives/edgar/data and /files, disallows /cgi-bin (not used);
data.sec.gov has none (404).
Left out: EDGAR full-text search (efts.sec.gov). It powers the SEC's own search page but isn't documented for
programmatic use, so under ACTOR-CHECKLIST's terms rule it stays out.