SEC Form 4 Parser
AI-generatedSummary
Fetches an SEC EDGAR Form 4 filing (from its index page or direct XML URL) and parses it into structured JSON covering issuer, reporting owners, transactions, holdings, footnotes, and signatures.
Inputs
- url (required) — EDGAR Form 4 index page URL (e.g. ...-index.htm) or a direct URL ending in .xml. Anything not ending in .xml is treated as an index page, and the node picks the first non-XSL .xml link under /Archives/edgar/data/ on that page.
- userAgent — App name/version for the User-Agent header sent to EDGAR. Defaults to n8n-sec-form4-parser/1.0.
- email — Contact email appended in parentheses to the User-Agent, as SEC policy requires. Defaults to bot@example.com, so set your own.
Output shape
One output item per input item. Each item's json is a parsed filing object with these keys: filing, issuers, reportingOwners, nonDerivativeTransactions, derivativeTransactions, nonDerivativeHoldings, derivativeHoldings, footnotes, signatures.
filing holds the accession number, period of report, document type, schema version, the notSubjectToSection16 and aff10b5One flags, the source, XML and index URLs, the issuer CIK and the owner CIKs. issuers and reportingOwners are keyed by 10-digit zero-padded CIK. Owner records include address and relationship (director, officer, 10% owner, other, officer title). Transaction and holding rows have ids such as ndt-0 and dt-0. They carry footnote reference IDs alongside values, and the footnotes object maps those IDs to their text. Missing values are null. indexUrl is null when a direct XML URL was given. Failures include an HTTP status of 400 or above, no XML link found, and invalid XML with no ownershipDocument. They throw an error, or with Continue On Fail they return an item containing {error}. The node makes no rate-limiting or retry attempts. It follows redirects and is usable as an AI tool.
Examples
Example 1: Parse a Form 4 from an EDGAR index page link
url = https://www.sec.gov/Archives/edgar/data/.../0001104659-26-038038-index.htm; email = your real contact address; keep the default userAgent.
Example 2: Parse a filing from a direct XML URL taken from an RSS or earlier node
url = expression such as {{ $json.xmlUrl }} ending in .xml; userAgent = my-app/1.0; email = ops@mycompany.com.