Ownership and holdings
Insider Transactions and Holdings - Forms 3, 4 and 5
https://api.sec-api.io/insider-tradingSearch every insider buy and sell transaction reported on SEC Form 3, 4 and 5 by directors, officers, 10% owners and other insiders of US-listed companies. The XML of each filing is converted to JSON, and every data point is searchable. New transactions are added in real time as soon as EDGAR publishes the filing.
Authentication
Send the API key either as a header or as a query parameter. The header is preferred; the query parameter exists for cases where a header cannot be set, such as opening a URL directly in a browser.
Authorization: required header
The API key on its own. Do not prefix it with Bearer or any other word.
Example Authorization: YOUR_API_KEY
token: optional query parameter
The API key, appended to the URL. Use this only when a header is not possible.
A JSON object. Content-Type must be application/json.
query: required string
The search expression in Lucene syntax. Every field listed under Searchable fields can be used, combined with AND, OR, NOT, ranges and wildcards.
Example issuer.tradingSymbol:TSLA
from: string, Maximum 10000
Index of the first result to return, used for pagination. Increment by the value of size to page through results. Narrow the query with a date range on periodOfReport when more than 10000 filings match.
Default "0"
size: string, Maximum 50
Number of insider filings to return in one response.
Default "50"
sort: array of object
Sort order. Each item maps one field to an order object, for example [{ "filedAt": { "order": "desc" } }].
Default [{ "filedAt": { "order": "desc" } }]
order: string
Either asc or desc.
Searchable fields
Every field below can be used inside query. Pick a form to see the fields that can match it. Form 4 carries all 109 fields, Form 5 carries the same set, and Form 3 carries 59 of them.
Form 3 is the initial statement of beneficial ownership. It reports what the insider already owns on the day they become an insider, so it carries holdings and no transactions. Neither transaction table and no Rule 10b5-1 flag ever appears on a Form 3 or a Form 3/A, which leaves the 59 fields below.
| Field | Description |
|---|---|
accessionNo | Filing accession number |
documentType | Form type — "3", "3/A", "4", "4/A", "5", "5/A" |
filedAt | Date the filing was accepted by EDGAR |
periodOfReport | Transaction / reporting date |
dateOfOriginalSubmission | Original submission date (amendments only) |
issuer.cik | Issuer CIK |
issuer.name | Issuer legal name |
issuer.tradingSymbol | Issuer ticker symbol |
A JSON object. Nested attributes are collapsed; expand one to see its fields.
total: object
How many filings matched the query.
value: integer
Number of matching filings, capped at 10000. A value of 10000 with relation gte means more than 10000 filings matched.
relation: string
Either eq, meaning value is exact, or gte, meaning value is a floor.
transactions: array of object
The matching filings reported on Form 3, 4 and 5, at most size per response. Each item is the XML data of one filing converted to JSON. The attributes below are returned for every form type. The sections that follow list the attributes each form type adds on top of them.
id: string
Internal unique ID of the filing record.
accessionNo: string
Accession number of the original filing, for example 0001104659-26-025379.
filedAt: string
Date and time EDGAR accepted the filing, ISO 8601 in Eastern Time. Example: 2022-08-09T21:23:00-04:00.
schemaVersion: string
Version of the SEC ownership XML schema the filing was submitted under, for example X0508.
documentType: string
Type of the form: 3, 3/A, 4, 4/A, 5 or 5/A.
periodOfReport: string
Reporting date, YYYY-MM-DD. On Form 3 the date of the event requiring the statement, on Form 4 the date of the earliest transaction, on Form 5 the fiscal year end of the issuer.
dateOfOriginalSubmission: optional string
Filing date of the original submission, YYYY-MM-DD. Mandatory on Form 3/A, 4/A and 5/A.
notSubjectToSection16: boolean
True when the reporting person states they are no longer subject to Section 16.
issuer: object
The company whose securities were reported.
reportingOwner: object
The insider who reported the filing.
footnotes: optional array of object
Footnotes of the filing. Every field that carries a footnote points at these entries through a matching FootnoteId array, for example amounts.pricePerShareFootnoteId.
remarks: optional string
Free-text remarks reported on the form. Filers use it to explain a split filing, a power of attorney or other special circumstances.
ownerSignatureName: string
Name under which the form was signed.
ownerSignatureNameDate: string
Date of the signature, YYYY-MM-DD.
Form 3 response
Form 3 is the initial statement of beneficial ownership, filed once a person becomes a director, officer or ten per cent owner. It reports what the insider already owns on that date, so each matching item carries holdings and no transactions: nonDerivativeTable.holdings lists the shares, derivativeTable.holdings lists the options, units and other derivatives. periodOfReport is the date of the event that triggered the statement.
nonDerivativeTable: optional object
Table I of the form, non-derivative securities. A Form 3 states what the insider already owns rather than what changed, so this table carries a holdings array and no transactions array.
holdings: optional array of object
Non-derivative securities held on the event date, such as common stock. One entry per security and per form of ownership, so shares held directly and shares held through a 401(k) plan are separate entries.
derivativeTable: optional object
Table II of the form, derivative securities. As with Table I, a Form 3 carries a holdings array here and no transactions array. The table is absent when the insider holds no derivatives.
holdings: optional array of object
Derivative securities held on the event date, such as stock options, restricted stock units and performance share units. Each entry names the underlying security and the number of shares the derivative converts into.
Form 4 response
Form 4 reports a change in beneficial ownership, due within two business days of the trade. Each matching item is transaction-led: nonDerivativeTable.transactions and derivativeTable.transactions carry the reported trades, and the holdings arrays appear only when the filer also restates a position that did not change. periodOfReport is the date of the earliest transaction on the form.
aff10b5One: optional boolean
Affirmation that the reported transactions were made under a Rule 10b5-1(c) trading plan. Added by the 2023 Rule 10b5-1 amendments of the SEC (Release No. 33-11138). Reported on Form 4 and Form 5 only.
nonDerivativeTable: optional object
Table I of the form, non-derivative securities. A Form 4 reports a change in ownership, so this table is led by the transactions array. The holdings array is the exception rather than the rule.
transactions: optional array of object
Non-derivative trades reported on the form, one entry per transaction. Open-market purchases and sales, grants, vestings, tax withholding and gifts of common stock appear here. Read coding.code to tell them apart.
holdings: optional array of object
Non-derivative positions restated on the form without a reported change, for example shares held indirectly through a trust. Present only when the filer chooses to restate them.
derivativeTable: optional object
Table II of the form, derivative securities. Led by the transactions array for the same reason as Table I, and absent when the filing reports no derivative activity.
transactions: optional array of object
Derivative trades reported on the form, such as an option exercise or the vesting of a restricted stock unit. A code of M here usually pairs with an acquisition of common stock in Table I.
holdings: optional array of object
Derivative positions restated on the form without a reported change, for example options that remain outstanding.
Form 5 response
Form 5 is the annual statement, due within 45 days of the fiscal year end of the issuer. It reports the transactions that were exempt from Form 4 reporting, such as gifts and small acquisitions, plus any Form 4 transaction that was filed late. Both tables therefore mix transactions and holdings: the transactions arrays carry the trades of the year, the holdings arrays restate the positions at the year end. periodOfReport is the fiscal year end of the issuer.
aff10b5One: optional boolean
Affirmation that the reported transactions were made under a Rule 10b5-1(c) trading plan. Added by the 2023 Rule 10b5-1 amendments of the SEC (Release No. 33-11138). Reported on Form 4 and Form 5 only.
nonDerivativeTable: optional object
Table I of the form, non-derivative securities. A Form 5 covers a whole fiscal year, so the transactions array carries the exempt trades of that year and the holdings array restates the positions held at the year end. Both arrays are common on the same filing.
transactions: optional array of object
Non-derivative transactions that were exempt from Form 4 reporting, such as gifts with coding.code G, plus any Form 4 transaction that was reported late. Read coding.formType to tell the two apart, and timeliness to spot the late reports.
holdings: optional array of object
Non-derivative positions held at the fiscal year end with no reported change, one entry per security and per form of ownership.
derivativeTable: optional object
Table II of the form, derivative securities. It follows the same split as Table I: exempt or late derivative transactions in the transactions array, year-end derivative positions in the holdings array.
transactions: optional array of object
Derivative transactions that were exempt from Form 4 reporting, plus any late Form 4 derivative transaction. Grants with coding.code A are the common case.
holdings: optional array of object
Derivative positions held at the fiscal year end, such as stock options that are still outstanding and convertible shares.
Status codes
200 | Success. The response holds total and transactions. |
400 | The request body could not be parsed, or the Lucene expression in query is malformed. |
403 | The API key is missing, or it is not valid. |
429 | Too many requests. Slow the request rate and retry. |
500 | Server error. Retry, and report it if it persists. |