Ownership and holdings

Insider Transactions and Holdings - Forms 3, 4 and 5

POSThttps://api.sec-api.io/insider-trading

Search 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.

Read the guide for this API →

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.

Request body

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.

FieldDescription
accessionNoFiling accession number
documentTypeForm type — "3", "3/A", "4", "4/A", "5", "5/A"
filedAtDate the filing was accepted by EDGAR
periodOfReportTransaction / reporting date
dateOfOriginalSubmissionOriginal submission date (amendments only)
issuer.cikIssuer CIK
issuer.nameIssuer legal name
issuer.tradingSymbolIssuer ticker symbol

Response

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.

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.

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.

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.

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.

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.

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.

Status codes

200Success. The response holds total and transactions.
400The request body could not be parsed, or the Lucene expression in query is malformed.
403The API key is missing, or it is not valid.
429Too many requests. Slow the request rate and retry.
500Server error. Retry, and report it if it persists.