Insider Trading Data API - Forms 3, 4 & 5

The Insider Trading Data API returns every insider filing on SEC Forms 3, 4 and 5 since 2003, including amendments. Insiders of a company file these forms with the SEC. Insiders are the directors, the officers and the owners of more than 10% of the company's shares. Form 3 reports the securities a person holds when they become an insider. Form 4 reports a change in holdings within two business days. Form 5 reports exempt and late transactions once a year.

Each filing includes the issuer, the insider and their relationship to the issuer, and every transaction and holding of non-derivative securities, such as common stock, and of derivative securities, such as options and restricted stock units. For each transaction, the data includes the date, the transaction code, the number of shares, the price, the shares owned afterwards, direct or indirect ownership, the Rule 10b5-1 trading plan flag and all footnotes. The full list of fields is available below.

The API returns the filings in JSON format. The filings are searchable by any field, for example by ticker, insider, transaction code or date. All filings of a form type are also available for bulk download as monthly JSONL files. New filings are added within 300 milliseconds of their publication on EDGAR.

Data sample
Filed atTickerIssuerInsiderDirectorOfficer10% ownerTransaction codesAcquired / disposed$ traded (non-derivative)Shares (non-derivative)Securities (non-derivative)$ traded (derivative)Shares (derivative)Securities (derivative)Rule 10b5-1 planPeriod of reportFootnotesIssuer CIKAccession no.…Details
2026-10-07IRIXIRIDEX CORPLin Shih-Yao DavidNoNoYesPurchase (Open-Market)A$438,762.24350,557Common Stock$0.000–No2025-03-25310060450001062993-26-005214
2026-10-07MTNVAIL RESORTS INCGronberg Nathan Mark (VP, Controller & CAO)NoYesNoGrantA$0.000–$659,923.006,002Restricted Share Unit; Share Appreciation RightNo2026-10-0328120110000812011-26-000127
2026-10-07SESea LtdWang Yanjun (CCO and GC)NoYesNoSale (Open-Market)D$193,544.752,000Class A ordinary shares$0.000–Yes2026-10-05617033990001193125-26-416127
2026-10-06MDLNMedline Inc.GIC Private LtdNoNoYesSale (Open-Market)D$721,644,227.3820,678,630Class A Common Stock$0.000–No2026-10-02420463860001193125-26-416053
2026-10-06MGMMGM Resorts InternationalMolino Ayesha Khanna (CHIEF OPERATING OFFICER)NoYesNoExercise or Conversion; Tax or exercise paymentA; D$77,571.6011,926Common Stock $.01 Par Value ND$0.009,381Restricted Stock Units; Performance Share UnitsNo2026-10-0247895700000789570-26-000087
2026-10-06CARGCarGurus, Inc.Sarnoff Dafna (Chief Marketing Officer)NoYesNoGrantA$0.005,911Class A Common Stock$0.000–No2026-10-02114942590001494259-26-000078
2026-10-06DOMOHuckleberry.ai, Inc.Jolley David RYesNoNoSale (Open-Market)D$41,062.9012,845Class B Common Stock$0.000–No2026-10-05215059520001628280-26-065279
2026-10-06BSCLBILI Social International, Inc.Jiao ZhenlongYesNoNoGrantA$0.006,995Common Stock$0.000–No2026-10-05211092620001683168-26-007672
2026-10-06KVUEKenvue Inc.Lawson Carlton (Group President EMEA & LA)NoYesNoGrantA$629,468.4036,597Common Stock$0.000–No2026-10-02119440480001944048-26-000158
2026-10-06MGTXMeiraGTx Holdings plcNaylor Stuart (CHIEF SCI OFCR, OPHTHALMOLOGY)NoYesNoSale (Open-Market)D$294,291.7627,659Ordinary Shares$0.000–Yes2026-10-06317354380001742771-26-000014

The HTTP POST-based API accepts a search query and returns all matching insider transactions. All data points are searchable. For example, finding all insider trades by the ticker symbol of a company, looking for insider buying acticity in a particular industry or sector or monitoring transactions falling under Rule 10b5-1. The API returns a maximum of 50 insider transactions per query. Increase the from parameter by 50 each time you are requesting the next batch of matching transactions.

Dataset history:
All Form 3, 4 and 5 filings and amended versions filed since 2003 to present.
Dataset content:
11.4 million insider transactions — 8.27 million non-derivative and 3.15 million derivative — covering 277K unique insiders and 22.3K issuers. Broken down by form type: 4.48M Form 4 (4.37M + 119K /A), 393K Form 3 (374K + 19K /A), 96K Form 5 (93K + 3.5K /A).
Data update frequency:
New insider transaction data is extracted, indexed, and made searchable within an average of 300 milliseconds after a new Form 3/4/5 filing is published.
Survivorship bias free:
Yes. The database includes all insider transactions, including from delisted companies.

API Endpoint

Search API

Retrieve insider trading data by sending a POST HTTP request with the search parameters as the payload to the following endpoint:

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

Supported HTTP methods: POST

Request and response content type: JSON

Bulk Download APIs

The complete sets of Form 3, 4 and 5 filings are available for bulk download in compressed JSONL (JSON line) files (.jsonl.gz). Each line in a .jsonl.gz file represents the full content of a single Form 3, 4 or 5 filing in structured JSON format. The dataset is organized by year and month, using the filename format YYYY-MM.jsonl.gz, where YYYY is the year (e.g., 2024) and MM is the month (e.g., 02 for February). Each .jsonl.gz file includes all insider trading filings with a filedAt timestamp that falls within the respective year and month. This timestamp reflects when the filing was accepted by the EDGAR system.

New filings published during the previous day are added daily to the bulk datasets between 1:00 AM and 4:00 AM ET.

An accompanying index.json file provides metadata for all available .jsonl.gz files, including:

  • key (string) - The file path, e.g. 2025/2025-03.jsonl.gz.
  • updatedAt (date) - The last update timestamp, e.g. 2025-04-03T14:06:34.000Z.
  • size (integer) - The file size in bytes, e.g. 106764954.

The index.json file is especially useful for programmatic access and automation, allowing to monitor updates and manage downloads at scale.

EndpointDescriptionHTTP MethodResponse Format
/bulk/form-3/YEAR/YEAR-MONTH.jsonl.gzGzip-compressed JSONL file containing all Form 3 data for the specified year and month.GETjsonl.gz
/bulk/form-3/index.jsonJSON file containing the paths, file update times and file sizes of all jsonl.gz files of all Form 3 data files.GETjson
/bulk/form-4/YEAR/YEAR-MONTH.jsonl.gzGzip-compressed JSONL file containing all Form 4 data for the specified year and month.GETjsonl.gz
/bulk/form-4/index.jsonJSON file containing the paths, file update times and file sizes of all jsonl.gz files of all Form 4 data files.GETjson
/bulk/form-5/YEAR/YEAR-MONTH.jsonl.gzGzip-compressed JSONL file containing all Form 5 data for the specified year and month.GETjsonl.gz
/bulk/form-5/index.jsonJSON file containing the paths, file update times and file sizes of all jsonl.gz files of all Form 5 data files.GETjson

Bulk Download Endpoint Examples

Open the following example URLs in your browser to download all Form 4 filings published in February 2025, or to download the index file containing all available Form 4 bulk dataset files. Replace YOUR_API_KEY with your actual API key before using the URLs.

  • https://api.sec-api.io/bulk/form-4/2025/2025-02.jsonl.gz?token=YOUR_API_KEY
  • https://api.sec-api.io/bulk/form-4/index.json?token=YOUR_API_KEY

Authentication

To authenticate API requests, use the API key displayed in your user profile. Utilize the API key in one of two ways. Choose the method that best fits your use case:

  • Authorization Header: Set the API key as an Authorization header. For instance, before sending a POST request to https://api.sec-api.io/insider-trading, ensure the header is set as follows: Authorization: YOUR_API_KEY. Do not include any prefix like Bearer.
  • Query Parameter: Alternatively, append your API key directly to the URL as a query parameter. For example, when making POST requests, use the URL https://api.sec-api.io/insider-trading?token=YOUR_API_KEY instead of the base endpoint.

Request Parameters

All insider transaction properties are searchable. Refer to the complete list of properties in the Response Structure section below. You can send a search query as JSON formatted payload to the API using the structure below.

Request parameters:

  • query (string) - The query string defines the search expression and is written in Lucene syntax. You can specify which insider transaction document fields to search by using the field name followed by a colon :. For example, to search for insider transactions disclosed by Tesla executives, you can use the following query: issuer.tradingSymbol:TSLA. The query language supports boolean operators (AND, OR, NOT), wildcards (*), range searches across date and number fields, and nested conditions. More information about the Lucene query syntax can be found in our tutorial here. Let's look at some examples:
    • The query reportingOwner.relationship.isDirector:True AND issuer.tradingSymbol:AMZN returns all insider transactions performed by any director at Amazon.
    • nonDerivativeTable.transactions.coding.code:A AND periodOfReport:[2021-01-01 TO 2021-06-30] returns all insider purchase transactions (transaction code "A") reported in the first six months of 2021.
  • from (integer) - Specifies the starting position in the results set for your query, functioning like an array index. Default is 0, with a maximum value of 10,000, which also represents the upper limit of results that can be returned per query. To paginate through results, increment the from value accordingly - for instance, setting from to 50 retrieves results from the 51st to the 100th transaction, assuming a size parameter of 50. If your total results exceed 10,000, consider refining your search criteria to reduce the result set. A common method is to use a date range filter on the periodOfReport field, such as periodOfReport:[2021-01-01 TO 2021-01-31], to paginate through all results for January 2021 by progressively increasing the from value (0, 50, 100, etc.). For subsequent months like February 2021, update your query to periodOfReport:[2021-02-01 TO 2021-02-28] and repeat the pagination process.
  • size (integer) - The number of transactions to be returned in one response. Default: 50. Max: 50.
  • sort (array) - Specifies the sorting order of the results. The default sort order is by the filedAt field in descending order, starting with the most recent: [{ "filedAt": { "order": "desc" } }]. The sort parameter is an array of sort definitions. Each array item defines the sort order for the result. Set the order property to asc for ascending order or desc for descending order. The field property specifies the field by which the results are sorted. For example, to sort the results by the periodOfReport field in ascending order, use the following sort definition: [{ "periodOfReport": { "order": "asc" } }].

Request Examples

Find the most recent insider trades reported by Tesla executives

The example search query "query": "issuer.tradingSymbol:TSLA" returns the most recent insider transactions reported by any officer, director, 10% owner and other insider working at Tesla. The API returns the first 50 matching transactions while the response size is limited to 50 transactions and sorted by the filedAt parameter.

Run in Data Browser

Response

CompanyInsider NameDirectorOfficer10% OwnerTransaction CodesAcquired /
Disposed
$ Traded
(Non-Derivates)
Shares Transacted
(Non-Derivates)
Securities Traded
( Non-Derivative )
Trade Reported AtTrade Perfomed OnHas
Footnotes
...
              
              
              
              
              
              
              
              
              
              

Find recent open-market insider purchases with code P

The following shows how to find all insider transactions representing open-market purchases of securities by insiders using transaction code "P". The example search query nonDerivativeTable.transactions.coding.code:P looks for all non-derivate transactions with transaction code "P", which stands for open market or private purchase of securities. Change the code parameter to "S" to find open-market insider sales. The full list of transaction codes is available below.

Run in Data Browser

Response

CompanyInsider NameDirectorOfficer10% OwnerTransaction CodesAcquired /
Disposed
$ Traded
(Non-Derivates)
Shares Transacted
(Non-Derivates)
Securities Traded
( Non-Derivative )
Trade Reported AtTrade Perfomed OnHas
Footnotes
...
              
              
              
              
              
              
              
              
              
              

Find insider trades reported under Rule 10b5-1

The example search query "query": "footnotes.text:10b5-1" looks for all insider transactions with footnotes that include the term "10b5-1". The API returns the first 50 matching transactions while the response size is limited to 50 transactions and sorted by the filedAt parameter.

Run in Data Browser

Response

CompanyInsider NameDirectorOfficer10% OwnerTransaction CodesAcquired /
Disposed
$ Traded
(Non-Derivates)
Shares Transacted
(Non-Derivates)
Securities Traded
( Non-Derivative )
Trade Reported AtTrade Perfomed OnHas
Footnotes
...
              
              
              
              
              
              
              
              
              
              

Response Structure

Response type: JSON

The transactions array includes all XML-to-JSON converted filings. Each array item represents a single SEC form 3, 4 or 5. Many data fields have optional footnotes attached. The "with footnote" mark indicates that the parameter has a footnote. For example, "securityTitle (string, with footnote)" indicates that securityTitle has footnotes. The corresponding footenote key is securityTitleFootnoteId. The ID and footnote content live in the array footnotes.

Form 3 Response Structure

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.

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 Form 3 filings, at most size per response. Each item is one filing converted from XML to JSON.

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.

cik: string

CIK of the issuer. Leading zeros are removed.

name: string

Name of the issuer.

tradingSymbol: string

Trading symbol of the issuer.

reportingOwner: object

The insider who reported the filing.

cik: string

CIK of the reporting entity. Leading zeros are removed.

name: string

Name of the reporting entity.

relationship: object

Relationship of the reporting entity to the issuer.

isDirector: boolean

True if the reporting person is a director.

isOfficer: boolean

True if the reporting person is an officer. If true, officerTitle is mandatory.

officerTitle: optional string

Officer title, reported when isOfficer is true. Example: Chief Financial Officer.

isTenPercentOwner: boolean

True if the reporting person owns 10% of the issuer.

isOther: boolean

True if the reporting person has a different relationship. If true, otherText is mandatory.

otherText: optional string

Explanation, reported when isOther is true.

address: object

Address of the reporting entity.

street1: string

First line of the street address.

street2: optional string

Second line of the street address.

city: string

City of the address.

state: optional string

State code of the address, for example TX.

zipCode: string

ZIP code of the address.

stateDescription: optional string

State of the address written out.

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.

securityTitle: string

Title of the security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

coding: object

Coding properties of the holding. Often an empty object.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

securityTitle: string

Title of the derivative security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

conversionOrExercisePrice: optional number

Conversion or exercise price of the derivative security.

conversionOrExercisePriceFootnoteId: optional array of string

IDs of the footnotes that apply to conversionOrExercisePrice.

coding: object

Coding properties of the holding.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

exerciseDate: optional string

Date the derivative security becomes exercisable.

exerciseDateFootnoteId: optional array of string

IDs of the footnotes that apply to exerciseDate. Filers often describe a vesting schedule here instead of reporting a date.

expirationDate: optional string

Expiration date of the derivative security.

expirationDateFootnoteId: optional array of string

IDs of the footnotes that apply to expirationDate.

underlyingSecurity: object

Security underlying the derivative.

title: string

Title of the security underlying the derivative, for example Common Stock.

shares: optional number

Number of underlying securities.

value: optional number

Value of the underlying securities.

postTransactionAmounts: optional object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the derivative securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

id: string

ID of the footnote, for example F1.

text: string

Text of the footnote.

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 4 Response Structure

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.

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 Form 4 filings, at most size per response. Each item is one filing converted from XML to JSON.

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.

cik: string

CIK of the issuer. Leading zeros are removed.

name: string

Name of the issuer.

tradingSymbol: string

Trading symbol of the issuer.

reportingOwner: object

The insider who reported the filing.

cik: string

CIK of the reporting entity. Leading zeros are removed.

name: string

Name of the reporting entity.

relationship: object

Relationship of the reporting entity to the issuer.

isDirector: boolean

True if the reporting person is a director.

isOfficer: boolean

True if the reporting person is an officer. If true, officerTitle is mandatory.

officerTitle: optional string

Officer title, reported when isOfficer is true. Example: Chief Financial Officer.

isTenPercentOwner: boolean

True if the reporting person owns 10% of the issuer.

isOther: boolean

True if the reporting person has a different relationship. If true, otherText is mandatory.

otherText: optional string

Explanation, reported when isOther is true.

address: object

Address of the reporting entity.

street1: string

First line of the street address.

street2: optional string

Second line of the street address.

city: string

City of the address.

state: optional string

State code of the address, for example TX.

zipCode: string

ZIP code of the address.

stateDescription: optional string

State of the address written out.

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.

securityTitle: string

Title of the security, for example Common Stock.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

transactionDate: string

Date of the transaction, YYYY-MM-DD.

deemedExecutionDate: optional string

Deemed execution date, YYYY-MM-DD.

coding: object

Transaction code properties.

formType: string

Form type recorded on the transaction. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

code: string

Transaction code, for example P (open-market purchase), S (open-market sale), A (grant), M (exercise or conversion), G (gift) or D (16b-3 sale).

equitySwapInvolved: boolean

True when an equity swap is involved in the transaction.

footnoteId: optional array of string

IDs of the footnotes that apply to the transaction coding.

timeliness: optional string

E for early, L for late, empty for on-time.

amounts: object

Securities and price reported for the transaction.

shares: number

Number of securities acquired or disposed of.

sharesFootnoteId: optional array of string

IDs of the footnotes that apply to shares.

pricePerShare: number

Price per security. Zero on transactions without a cash price, such as grants and vestings.

pricePerShareFootnoteId: optional array of string

IDs of the footnotes that apply to pricePerShare.

acquiredDisposedCode: string

A for acquired, D for disposed.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the securities.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

securityTitle: string

Title of the security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

coding: object

Coding properties of the holding. Often an empty object.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

securityTitle: string

Title of the derivative security, for example Restricted Stock Unit or Stock Option.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

conversionOrExercisePrice: optional number

Conversion or exercise price of the derivative security.

conversionOrExercisePriceFootnoteId: optional array of string

IDs of the footnotes that apply to conversionOrExercisePrice.

transactionDate: string

Date of the transaction, YYYY-MM-DD.

deemedExecutionDate: optional string

Deemed execution date, YYYY-MM-DD.

coding: object

Transaction code properties.

formType: string

Form type recorded on the transaction. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

code: string

Transaction code, for example P (open-market purchase), S (open-market sale), A (grant), M (exercise or conversion), G (gift) or D (16b-3 sale).

equitySwapInvolved: boolean

True when an equity swap is involved in the transaction.

footnoteId: optional array of string

IDs of the footnotes that apply to the transaction coding.

timeliness: optional string

E for early, L for late, empty for on-time.

amounts: object

Derivative securities acquired or disposed of, and the price of the derivative security.

shares: number

Number of securities acquired or disposed of.

sharesFootnoteId: optional array of string

IDs of the footnotes that apply to shares.

pricePerShare: number

Price per security. Zero on transactions without a cash price, such as grants and vestings.

pricePerShareFootnoteId: optional array of string

IDs of the footnotes that apply to pricePerShare.

acquiredDisposedCode: string

A for acquired, D for disposed.

exerciseDate: optional string

Date the derivative security becomes exercisable.

exerciseDateFootnoteId: optional array of string

IDs of the footnotes that apply to exerciseDate. Filers often describe a vesting schedule here instead of reporting a date.

expirationDate: optional string

Expiration date of the derivative security.

expirationDateFootnoteId: optional array of string

IDs of the footnotes that apply to expirationDate.

underlyingSecurity: object

Security underlying the derivative.

title: string

Title of the security underlying the derivative, for example Common Stock.

shares: optional number

Number of underlying securities.

value: optional number

Value of the underlying securities.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the derivative securities.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

holdings: optional array of object

Derivative positions restated on the form without a reported change, for example options that remain outstanding.

securityTitle: string

Title of the derivative security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

conversionOrExercisePrice: optional number

Conversion or exercise price of the derivative security.

conversionOrExercisePriceFootnoteId: optional array of string

IDs of the footnotes that apply to conversionOrExercisePrice.

coding: object

Coding properties of the holding.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

exerciseDate: optional string

Date the derivative security becomes exercisable.

exerciseDateFootnoteId: optional array of string

IDs of the footnotes that apply to exerciseDate. Filers often describe a vesting schedule here instead of reporting a date.

expirationDate: optional string

Expiration date of the derivative security.

expirationDateFootnoteId: optional array of string

IDs of the footnotes that apply to expirationDate.

underlyingSecurity: object

Security underlying the derivative.

title: string

Title of the security underlying the derivative, for example Common Stock.

shares: optional number

Number of underlying securities.

value: optional number

Value of the underlying securities.

postTransactionAmounts: optional object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the derivative securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

id: string

ID of the footnote, for example F1.

text: string

Text of the footnote.

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 5 Response Structure

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.

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 Form 5 filings, at most size per response. Each item is one filing converted from XML to JSON.

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.

cik: string

CIK of the issuer. Leading zeros are removed.

name: string

Name of the issuer.

tradingSymbol: string

Trading symbol of the issuer.

reportingOwner: object

The insider who reported the filing.

cik: string

CIK of the reporting entity. Leading zeros are removed.

name: string

Name of the reporting entity.

relationship: object

Relationship of the reporting entity to the issuer.

isDirector: boolean

True if the reporting person is a director.

isOfficer: boolean

True if the reporting person is an officer. If true, officerTitle is mandatory.

officerTitle: optional string

Officer title, reported when isOfficer is true. Example: Chief Financial Officer.

isTenPercentOwner: boolean

True if the reporting person owns 10% of the issuer.

isOther: boolean

True if the reporting person has a different relationship. If true, otherText is mandatory.

otherText: optional string

Explanation, reported when isOther is true.

address: object

Address of the reporting entity.

street1: string

First line of the street address.

street2: optional string

Second line of the street address.

city: string

City of the address.

state: optional string

State code of the address, for example TX.

zipCode: string

ZIP code of the address.

stateDescription: optional string

State of the address written out.

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.

securityTitle: string

Title of the security, for example Common Stock.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

transactionDate: string

Date of the transaction, YYYY-MM-DD.

deemedExecutionDate: optional string

Deemed execution date, YYYY-MM-DD.

coding: object

Transaction code properties.

formType: string

Form type recorded on the transaction. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

code: string

Transaction code, for example P (open-market purchase), S (open-market sale), A (grant), M (exercise or conversion), G (gift) or D (16b-3 sale).

equitySwapInvolved: boolean

True when an equity swap is involved in the transaction.

footnoteId: optional array of string

IDs of the footnotes that apply to the transaction coding.

timeliness: optional string

E for early, L for late, empty for on-time.

amounts: object

Securities and price reported for the transaction.

shares: number

Number of securities acquired or disposed of.

sharesFootnoteId: optional array of string

IDs of the footnotes that apply to shares.

pricePerShare: number

Price per security. Zero on transactions without a cash price, such as grants and vestings.

pricePerShareFootnoteId: optional array of string

IDs of the footnotes that apply to pricePerShare.

acquiredDisposedCode: string

A for acquired, D for disposed.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the securities.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

securityTitle: string

Title of the security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

coding: object

Coding properties of the holding. Often an empty object.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

securityTitle: string

Title of the derivative security, for example Restricted Stock Unit or Stock Option.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

conversionOrExercisePrice: optional number

Conversion or exercise price of the derivative security.

conversionOrExercisePriceFootnoteId: optional array of string

IDs of the footnotes that apply to conversionOrExercisePrice.

transactionDate: string

Date of the transaction, YYYY-MM-DD.

deemedExecutionDate: optional string

Deemed execution date, YYYY-MM-DD.

coding: object

Transaction code properties.

formType: string

Form type recorded on the transaction. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

code: string

Transaction code, for example P (open-market purchase), S (open-market sale), A (grant), M (exercise or conversion), G (gift) or D (16b-3 sale).

equitySwapInvolved: boolean

True when an equity swap is involved in the transaction.

footnoteId: optional array of string

IDs of the footnotes that apply to the transaction coding.

timeliness: optional string

E for early, L for late, empty for on-time.

amounts: object

Derivative securities acquired or disposed of, and the price of the derivative security.

shares: number

Number of securities acquired or disposed of.

sharesFootnoteId: optional array of string

IDs of the footnotes that apply to shares.

pricePerShare: number

Price per security. Zero on transactions without a cash price, such as grants and vestings.

pricePerShareFootnoteId: optional array of string

IDs of the footnotes that apply to pricePerShare.

acquiredDisposedCode: string

A for acquired, D for disposed.

exerciseDate: optional string

Date the derivative security becomes exercisable.

exerciseDateFootnoteId: optional array of string

IDs of the footnotes that apply to exerciseDate. Filers often describe a vesting schedule here instead of reporting a date.

expirationDate: optional string

Expiration date of the derivative security.

expirationDateFootnoteId: optional array of string

IDs of the footnotes that apply to expirationDate.

underlyingSecurity: object

Security underlying the derivative.

title: string

Title of the security underlying the derivative, for example Common Stock.

shares: optional number

Number of underlying securities.

value: optional number

Value of the underlying securities.

postTransactionAmounts: object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the derivative securities.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

holdings: optional array of object

Derivative positions held at the fiscal year end, such as stock options that are still outstanding and convertible shares.

securityTitle: string

Title of the derivative security held.

securityTitleFootnoteId: optional array of string

IDs of the footnotes that apply to securityTitle.

conversionOrExercisePrice: optional number

Conversion or exercise price of the derivative security.

conversionOrExercisePriceFootnoteId: optional array of string

IDs of the footnotes that apply to conversionOrExercisePrice.

coding: object

Coding properties of the holding.

formType: optional string

Form type recorded on the holding. Valid values: 3, 3/A, 4, 4/A, 5, 5/A.

footnoteId: optional array of string

IDs of the footnotes that apply to the holding coding.

exerciseDate: optional string

Date the derivative security becomes exercisable.

exerciseDateFootnoteId: optional array of string

IDs of the footnotes that apply to exerciseDate. Filers often describe a vesting schedule here instead of reporting a date.

expirationDate: optional string

Expiration date of the derivative security.

expirationDateFootnoteId: optional array of string

IDs of the footnotes that apply to expirationDate.

underlyingSecurity: object

Security underlying the derivative.

title: string

Title of the security underlying the derivative, for example Common Stock.

shares: optional number

Number of underlying securities.

value: optional number

Value of the underlying securities.

postTransactionAmounts: optional object

Amount owned following the reported transaction.

sharesOwnedFollowingTransaction: number

Number of securities owned after the reported transaction.

sharesOwnedFollowingTransactionFootnoteId: optional array of string

IDs of the footnotes that apply to sharesOwnedFollowingTransaction.

valueOwnedFollowingTransaction: optional number

Value owned after the reported transaction.

ownershipNature: object

Form of ownership of the derivative securities held.

directOrIndirectOwnership: string

D for direct ownership, I for indirect ownership.

natureOfOwnership: optional string

Free-text description of indirect ownership, for example By Donald P. Monaco Insurance Trust.

natureOfOwnershipFootnoteId: optional array of string

IDs of the footnotes that apply to natureOfOwnership.

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.

id: string

ID of the footnote, for example F1.

text: string

Text of the footnote.

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.

Response Examples

Form 3 Example

JSON
1 {
2 "total": {
3 "value": 23,
4 "relation": "eq"
5 },
6 "transactions": [
7 {
8 "id": "bfccec065d7b9950d2ccf696a552337c",
9 "accessionNo": "0001901559-26-000003",
10 "filedAt": "2026-09-22T16:20:00-04:00",
11 "schemaVersion": "X0607",
12 "documentType": "3",
13 "periodOfReport": "2026-09-21",
14 "notSubjectToSection16": false,
15 "issuer": {
16 "cik": "1070412",
17 "name": "CNX Resources Corp",
18 "tradingSymbol": "CNX"
19 },
20 "reportingOwner": {
21 "cik": "1901559",
22 "name": "Srivastava Ravi",
23 "address": {
24 "street1": "1000 HORIZON VUE DRIVE",
25 "city": "CANONSBURG",
26 "state": "PA",
27 "zipCode": "15317"
28 },
29 "relationship": {
30 "isDirector": false,
31 "isOfficer": true,
32 "officerTitle": "Chief Financial Officer",
33 "isTenPercentOwner": false,
34 "isOther": false
35 }
36 },
37 "nonDerivativeTable": {
38 "holdings": [
39 {
40 "securityTitle": "Common shares, $0.01 par value per share",
41 "coding": {},
42 "postTransactionAmounts": {
43 "sharesOwnedFollowingTransaction": 154865,
44 "sharesOwnedFollowingTransactionFootnoteId": ["F1"]
45 },
46 "ownershipNature": {
47 "directOrIndirectOwnership": "D"
48 }
49 },
50 {
51 "securityTitle": "Common shares, $0.01 par value per share",
52 "coding": {},
53 "postTransactionAmounts": {
54 "sharesOwnedFollowingTransaction": 1386
55 },
56 "ownershipNature": {
57 "directOrIndirectOwnership": "I",
58 "natureOfOwnership": "By 401(k) Plan"
59 }
60 }
61 ]
62 },
63 "derivativeTable": {
64 "holdings": [
65 {
66 "securityTitle": "Performance Share Units",
67 "conversionOrExercisePriceFootnoteId": ["F2"],
68 "coding": {},
69 "exerciseDateFootnoteId": ["F2"],
70 "expirationDate": "2030-07-31",
71 "underlyingSecurity": {
72 "title": "Common shares, $0.01 par value per share",
73 "shares": 287501
74 },
75 "ownershipNature": {
76 "directOrIndirectOwnership": "D"
77 }
78 },
79 {
80 "securityTitle": "Stock Option (right to buy)",
81 "conversionOrExercisePrice": 10.525,
82 "coding": {},
83 "exerciseDate": "2023-01-21",
84 "expirationDate": "2030-01-21",
85 "underlyingSecurity": {
86 "title": "Common shares, $0.01 par value per share",
87 "shares": 1300
88 },
89 "ownershipNature": {
90 "directOrIndirectOwnership": "D"
91 }
92 }
93 ]
94 },
95 "footnotes": [
96 {
97 "id": "F1",
98 "text": "Of the shares owned, 46,658 are restricted stock units (including dividend equivalent rights)."
99 },
100 {
101 "id": "F2",
102 "text": "Each Performance Share Unit (\"PSU\") represents a contingent right to receive one share of common stock. These PSUs, which were granted on August 1, 2023, vest upon the common stock of CNX Resources achieving certain pre-determined prices per share in three tranches over approximately seven years. The first tranche of PSUs vested on August 13, 2026."
103 }
104 ],
105 "remarks": "Exhibit 24.1 - Power of Attorney",
106 "ownerSignatureName": "/s/ Sarah Molinero, Attorney-in-fact",
107 "ownerSignatureNameDate": "2026-09-22"
108 }
109 ]
110 }

Form 4 Example

JSON
1 {
2 "total": {
3 "value": 837,
4 "relation": "eq"
5 },
6 "transactions": [
7 {
8 "id": "b5e3ff9eca7a16f1b7fef6aef6767fbc",
9 "accessionNo": "0001104659-26-025379",
10 "filedAt": "2026-03-09T19:00:14-04:00",
11 "schemaVersion": "X0508",
12 "documentType": "4",
13 "periodOfReport": "2026-03-05",
14 "notSubjectToSection16": false,
15 "issuer": {
16 "cik": "1318605",
17 "name": "Tesla, Inc.",
18 "tradingSymbol": "TSLA"
19 },
20 "reportingOwner": {
21 "cik": "1771340",
22 "name": "Taneja Vaibhav",
23 "address": {
24 "street1": "C/O TESLA, INC.",
25 "street2": "1 TESLA ROAD",
26 "city": "AUSTIN",
27 "state": "TX",
28 "zipCode": "78725"
29 },
30 "relationship": {
31 "isDirector": false,
32 "isOfficer": true,
33 "officerTitle": "Chief Financial Officer",
34 "isTenPercentOwner": false,
35 "isOther": false
36 }
37 },
38 "nonDerivativeTable": {
39 "transactions": [
40 {
41 "securityTitle": "Common Stock",
42 "transactionDate": "2026-03-05",
43 "coding": {
44 "formType": "4",
45 "code": "M",
46 "equitySwapInvolved": false,
47 "footnoteId": ["F1"]
48 },
49 "amounts": {
50 "shares": 6538,
51 "pricePerShare": 0,
52 "acquiredDisposedCode": "A"
53 },
54 "postTransactionAmounts": {
55 "sharesOwnedFollowingTransaction": 20371,
56 "sharesOwnedFollowingTransactionFootnoteId": ["F2"]
57 },
58 "ownershipNature": {
59 "directOrIndirectOwnership": "D"
60 }
61 },
62 {
63 "securityTitle": "Common Stock",
64 "transactionDate": "2026-03-06",
65 "coding": {
66 "formType": "4",
67 "code": "S",
68 "equitySwapInvolved": false,
69 "footnoteId": ["F3"]
70 },
71 "amounts": {
72 "shares": 2264.5,
73 "pricePerShare": 397.031,
74 "acquiredDisposedCode": "D"
75 },
76 "postTransactionAmounts": {
77 "sharesOwnedFollowingTransaction": 18106.5
78 },
79 "ownershipNature": {
80 "directOrIndirectOwnership": "D"
81 }
82 }
83 ],
84 "holdings": [
85 {
86 "securityTitle": "Common Stock",
87 "coding": {},
88 "postTransactionAmounts": {
89 "sharesOwnedFollowingTransaction": 111000
90 },
91 "ownershipNature": {
92 "directOrIndirectOwnership": "I",
93 "natureOfOwnership": "See Footnote",
94 "natureOfOwnershipFootnoteId": ["F4"]
95 }
96 }
97 ]
98 },
99 "derivativeTable": {
100 "transactions": [
101 {
102 "securityTitle": "Restricted Stock Unit",
103 "conversionOrExercisePrice": 0,
104 "transactionDate": "2026-03-05",
105 "coding": {
106 "formType": "4",
107 "code": "M",
108 "equitySwapInvolved": false
109 },
110 "exerciseDateFootnoteId": ["F5"],
111 "expirationDateFootnoteId": ["F5"],
112 "underlyingSecurity": {
113 "title": "Common Stock",
114 "shares": 6538
115 },
116 "amounts": {
117 "shares": 6538,
118 "pricePerShare": 0,
119 "acquiredDisposedCode": "D"
120 },
121 "postTransactionAmounts": {
122 "sharesOwnedFollowingTransaction": 65382
123 },
124 "ownershipNature": {
125 "directOrIndirectOwnership": "D"
126 }
127 }
128 ]
129 },
130 "footnotes": [
131 {
132 "id": "F1",
133 "text": "Shares of the Issuer's common stock were issued to the reporting person upon the vesting of restricted stock units on March 5, 2026."
134 },
135 {
136 "id": "F2",
137 "text": "The amount of securities beneficially owned includes 76 shares acquired on February 27, 2026, under the Tesla, Inc. Employee Stock Purchase Plan."
138 },
139 {
140 "id": "F3",
141 "text": "PURSUANT TO THE ISSUER'S EQUITY PLAN AND POLICIES, THESE SHARES OF COMMON STOCK WERE AUTOMATICALLY WITHHELD AND SOLD BY THE ISSUER TO SATISFY THE REPORTING PERSON'S TAX WITHHOLDING OBLIGATIONS RELATED TO THE VESTING OF RESTRICTED STOCK UNITS REPORTED HEREIN."
142 },
143 {
144 "id": "F4",
145 "text": "55,500 shares are held directly by the reporting person in GRATs, for which the reporting person is a trustee, and 55,500 shares are held directly by the spouse of the reporting person in GRATs, for which the spouse of the reporting person is a trustee."
146 },
147 {
148 "id": "F5",
149 "text": "1/16 of the total restricted stock units initially subject to this award vested on December 5, 2024 and 1/16th of the total units initially subject to this award vest every quarter thereafter, so that all such shares subject to this award will be fully vested on September 5, 2028."
150 }
151 ],
152 "ownerSignatureName": "By: Aaron Beckman, Power of Attorney For: Vaibhav Taneja",
153 "ownerSignatureNameDate": "2026-03-09"
154 }
155 ]
156 }

Form 5 Example

JSON
1 {
2 "total": {
3 "value": 22,
4 "relation": "eq"
5 },
6 "transactions": [
7 {
8 "id": "205160faf4d54dce602cc97e5e212589",
9 "accessionNo": "0000950142-25-000399",
10 "filedAt": "2025-02-14T16:31:24-05:00",
11 "schemaVersion": "X0508",
12 "documentType": "5",
13 "periodOfReport": "2024-12-31",
14 "notSubjectToSection16": false,
15 "aff10b5One": false,
16 "issuer": {
17 "cik": "47111",
18 "name": "HERSHEY CO",
19 "tradingSymbol": "HSY"
20 },
21 "reportingOwner": {
22 "cik": "908551",
23 "name": "HERSHEY TRUST CO",
24 "address": {
25 "street1": "100 MANSION ROAD EAST",
26 "city": "HERSHEY",
27 "state": "PA",
28 "zipCode": "17033"
29 },
30 "relationship": {
31 "isDirector": false,
32 "isOfficer": false,
33 "isTenPercentOwner": true,
34 "isOther": false
35 }
36 },
37 "nonDerivativeTable": {
38 "transactions": [
39 {
40 "securityTitle": "Common Stock, $1.00 par value",
41 "transactionDate": "2024-12-27",
42 "coding": {
43 "formType": "5",
44 "code": "G",
45 "equitySwapInvolved": false
46 },
47 "amounts": {
48 "shares": 278,
49 "pricePerShare": 0,
50 "pricePerShareFootnoteId": ["F1"],
51 "acquiredDisposedCode": "A"
52 },
53 "postTransactionAmounts": {
54 "sharesOwnedFollowingTransaction": 278
55 },
56 "ownershipNature": {
57 "directOrIndirectOwnership": "I",
58 "natureOfOwnership": "By M.S. Hershey Foundation",
59 "natureOfOwnershipFootnoteId": ["F2"]
60 }
61 }
62 ],
63 "holdings": [
64 {
65 "securityTitle": "Common Stock, $1.00 par value",
66 "coding": {},
67 "postTransactionAmounts": {
68 "sharesOwnedFollowingTransaction": 39630
69 },
70 "ownershipNature": {
71 "directOrIndirectOwnership": "D"
72 }
73 },
74 {
75 "securityTitle": "Common Stock, $1.00 par value",
76 "coding": {},
77 "postTransactionAmounts": {
78 "sharesOwnedFollowingTransaction": 2066119
79 },
80 "ownershipNature": {
81 "directOrIndirectOwnership": "I",
82 "natureOfOwnership": "By Milton Hershey School Trust",
83 "natureOfOwnershipFootnoteId": ["F3"]
84 }
85 }
86 ]
87 },
88 "derivativeTable": {
89 "holdings": [
90 {
91 "securityTitle": "Class B Common Stock, $1.00 par value",
92 "securityTitleFootnoteId": ["F4"],
93 "conversionOrExercisePriceFootnoteId": ["F5"],
94 "coding": {},
95 "exerciseDateFootnoteId": ["F4"],
96 "expirationDateFootnoteId": ["F4"],
97 "underlyingSecurity": {
98 "title": "Common Stock, $1.00 par value",
99 "shares": 54612012
100 },
101 "postTransactionAmounts": {
102 "sharesOwnedFollowingTransaction": 54612012
103 },
104 "ownershipNature": {
105 "directOrIndirectOwnership": "I",
106 "natureOfOwnership": "By Milton Hershey School Trust",
107 "natureOfOwnershipFootnoteId": ["F3"]
108 }
109 }
110 ]
111 },
112 "footnotes": [
113 {
114 "id": "F1",
115 "text": "Received as a donation to the M.S. Hershey Foundation."
116 },
117 {
118 "id": "F2",
119 "text": "The reporting person is a trustee for the M.S. Hershey Foundation."
120 },
121 {
122 "id": "F3",
123 "text": "The reporting person is wholly owned by Milton Hershey School Trust and is trustee for the Milton Hershey School Trust."
124 },
125 {
126 "id": "F4",
127 "text": "All shares of Class B common stock, $1.00 par value convertible share-for-share into common stock, $1.00 par value, at any time, and without payment other than for the fact of conversion. There is no expiration date."
128 },
129 {
130 "id": "F5",
131 "text": "Conversion price is the current market price."
132 }
133 ],
134 "ownerSignatureName": "/s/ Terry A. Davis, VP Finance",
135 "ownerSignatureNameDate": "2025-02-14"
136 }
137 ]
138 }

Response Structure of Bulk Download Endpoints

/bulk/form-3/YEAR/YEAR-MONTH.jsonl.gz

Decompressed JSONL Example of Form 3 Filings
1 {"id":"764b5b87fa93363a96475ce55c9754c7","accessionNo":"0000950170-25-048019","filedAt":"2025-03-31T21:30:04-04:00","schemaVersion":"X0206","documentType":"3","periodOfReport":"2025-03-20","notSubjectToSection16":false,"issuer":{"cik":"65270","name":"METHODE ELECTRONICS INC","tradingSymbol":"MEI"},"reportingOwner":{"cik":"2063597","name":"Erwin John Thomas","address":{"street1":"8750 W. BRYN MAWR AVE.","street2":"SUITE 1000","city":"CHICAGO","state":"IL","zipCode":"60631"},"relationship":{"isDirector":false,"isOfficer":true,"officerTitle":"CPO & EHS Officer","isTenPercentOwner":false,"isOther":false}},"nonDerivativeTable":{"holdings":[{"securityTitle":"Common Stock","coding":{},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":33156,"sharesOwnedFollowingTransactionFootnoteId":["F1"]},"ownershipNature":{"directOrIndirectOwnership":"D"}},{"securityTitle":"Common Stock","coding":{},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":1638},"ownershipNature":{"directOrIndirectOwnership":"I","natureOfOwnership":"Held in Methode 401(k) Plan"}}]},"footnotes":[{"id":"F1","text":"Represents Restricted Stock Units ("RSUs") which were previously granted on September 11, 2024 and January 15, 2025. The RSUs granted on September 11, 2024 totaled 32,200, of which 14,400 will vest on September 11, 2025, 14,400 will vest on September 11, 2026 and 3,400 will vest on September 11, 2027. The RSUs granted on January 15, 2025 totaled 956 and will vest ratably over 3 years from the grant date."}],"ownerSignatureName":"/s/ John Thomas Erwin","ownerSignatureNameDate":"2025-03-31"}
2 { ... }
3 { ... }

/bulk/form-3/index.json

index.json Example
1 [
2 {
3 "key": "2025/2025-04.jsonl.gz",
4 "updatedAt": "2025-04-09T05:00:06.000Z",
5 "size": 74929
6 },
7 {
8 "key": "2025/2025-03.jsonl.gz",
9 "updatedAt": "2025-04-08T11:00:53.000Z",
10 "size": 227586
11 }
12 // ... more files
13 ]

/bulk/form-4/YEAR/YEAR-MONTH.jsonl.gz

Decompressed JSONL Example of Form 4 Filings
1 {"id":"83d6d1d7e910e293aa3cd2a62bd5a46d","accessionNo":"0001104659-25-030101","filedAt":"2025-03-31T21:54:47-04:00","schemaVersion":"X0508","documentType":"4","periodOfReport":"2025-03-31","notSubjectToSection16":false,"issuer":{"cik":"1840502","name":"Taboola.com Ltd.","tradingSymbol":"TBLA"},"reportingOwner":{"cik":"1449433","name":"Apollo Management Holdings GP, LLC","address":{"street1":"9 WEST 57TH STREET, 43RD FLOOR","city":"NEW YORK","state":"NY","zipCode":"10019"},"relationship":{"isDirector":false,"isOfficer":false,"isTenPercentOwner":true,"isOther":false}},"nonDerivativeTable":{"transactions":[{"securityTitle":"Non-Voting Ordinary Shares, No Par Value","transactionDate":"2025-03-31","coding":{"formType":"4","code":"J","equitySwapInvolved":false,"footnoteId":["F1"]},"amounts":{"shares":1185242,"pricePerShare":3.01,"acquiredDisposedCode":"D"},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":40054344},"ownershipNature":{"directOrIndirectOwnership":"I","natureOfOwnership":"See Footnote","natureOfOwnershipFootnoteId":["F2"]}}],"holdings":[{"securityTitle":"Ordinary Shares, No Par Value","coding":{},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":39525691},"ownershipNature":{"directOrIndirectOwnership":"I","natureOfOwnership":"See Footnote","natureOfOwnershipFootnoteId":["F2"]}}]},"footnotes":[{"id":"F1","text":"The reported sales are between the Issuer and College Top Holdings, Inc., as part of the Issuer's share repurchase program and are intended to keep the Reporting Persons' ownership of Taboola's outstanding shares from reaching 25% or more. See Exhibit 99.1 for more information."},{"id":"F2","text":"See Exhibit 99.1."}],"ownerSignatureName":"see signatures attached as Exhibit 99.2","ownerSignatureNameDate":"2025-03-31"}
2 { ... }
3 { ... }

/bulk/form-4/index.json

index.json Example
1 [
2 {
3 "key": "2025/2025-04.jsonl.gz",
4 "updatedAt": "2025-04-09T05:00:08.000Z",
5 "size": 1675134
6 },
7 {
8 "key": "2025/2025-03.jsonl.gz",
9 "updatedAt": "2025-04-08T10:59:20.000Z",
10 "size": 6142697
11 }
12 // ... more files
13 ]

/bulk/form-5/YEAR/YEAR-MONTH.jsonl.gz

Decompressed JSONL Example of Form 5 Filings
1 {"id":"06d31397a5aa533faf912fe6ee249c80","accessionNo":"0001641172-25-001401","filedAt":"2025-03-28T20:23:39-04:00","schemaVersion":"X0508","documentType":"5","periodOfReport":"2025-02-28","notSubjectToSection16":false,"issuer":{"cik":"788611","name":"NextTrip, Inc.","tradingSymbol":"NTRP"},"reportingOwner":{"cik":"1563607","name":"Monaco Donald P","address":{"street1":"3900 PASEO DEL SOL","city":"SANTA FE","state":"NM","zipCode":"87507"},"relationship":{"isDirector":true,"isOfficer":false,"isTenPercentOwner":false,"isOther":false}},"derivativeTable":{"transactions":[{"securityTitle":"Series L Nonvoting Convertible Preferred Stock","conversionOrExercisePriceFootnoteId":["F1"],"transactionDate":"2024-12-31","coding":{"formType":"4","code":"A","equitySwapInvolved":false,"footnoteId":["F2"]},"timeliness":"L","exerciseDateFootnoteId":["F1"],"expirationDateFootnoteId":["F3"],"underlyingSecurity":{"title":"Common Stock","shares":413907},"amounts":{"shares":413907,"pricePerShare":3.02,"pricePerShareFootnoteId":["F2"],"acquiredDisposedCode":"A"},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":745032},"ownershipNature":{"directOrIndirectOwnership":"I","natureOfOwnership":"By Donald P. Monaco Insurance Trust","natureOfOwnershipFootnoteId":["F4"]}},{"securityTitle":"Series L Nonvoting Convertible Preferred Stock","conversionOrExercisePriceFootnoteId":["F1"],"transactionDate":"2025-02-24","coding":{"formType":"4","code":"A","equitySwapInvolved":false,"footnoteId":["F5"]},"timeliness":"L","exerciseDateFootnoteId":["F1"],"expirationDateFootnoteId":["F3"],"underlyingSecurity":{"title":"Common Stock","shares":331125},"amounts":{"shares":331125,"pricePerShare":3.02,"pricePerShareFootnoteId":["F5"],"acquiredDisposedCode":"A"},"postTransactionAmounts":{"sharesOwnedFollowingTransaction":745032},"ownershipNature":{"directOrIndirectOwnership":"I","natureOfOwnership":"By Donald P. Monaco Insurance Trust","natureOfOwnershipFootnoteId":["F4"]}}]},"footnotes":[{"id":"F1","text":"Shares of Series L Nonvoting Convertible Preferred Stock (Series L Preferred) shall not be convertible into shares of common stock unless and until stockholder approval of the conversion of the Series L Preferred into common stock ("Stockholder Approval") is obtained. Following receipt of Stockholder Approval, each share of Series L Preferred will automatically convert into one share of common stock, subject to certain limitations."},{"id":"F2","text":"On December 31, 2024, the Issuer and the Reporting Person entered into a debt conversion agreement, pursuant to which $1.25 million in existing promissory notes owed to the Reporting Person for monies advanced to the Issuer were converted into 413,907 shares of Series L Preferred at a price of $3.02 per share. The debt conversion agreement and the conversion of the promissory notes into shares of Series L Preferred were approved in advance by the Issuer's board of directors."},{"id":"F3","text":"The shares of Series L Preferred do not expire."},{"id":"F4","text":"The shares of Series L Preferred are beneficially owned by the Donald P. Monaco Insurance Trust (the "Trust"). Mr. Monaco, is the trustee of the Trust. As such, Mr. Monaco is deemed to beneficially own the shares held by the Trust. Mr. Monaco disclaims beneficial ownership of all securities held the Trust in excess of his pecuniary interest, if any, and this report shall not be deemed an admission that he is the beneficial owner of, or has pecuniary interest in, any such excess shares for the purposes of Section 16 of the Securities Exchange Act of 1934, as amended, or for any other purpose."},{"id":"F5","text":"On February 24, 2025, the Issuer and the Reporting Person entered into a debt conversion agreement, pursuant to which $1.00 million in existing promissory notes owed to the Reporting Person for monies advanced to the Issuer were converted into 331,125 shares of Series L Preferred at a price of $3.02 per share. The debt conversion agreement and the conversion of the promissory notes into shares of Series L Preferred were approved in advance by the Issuer's board of directors."}],"ownerSignatureName":"/s/ Donald P. Monaco","ownerSignatureNameDate":"2025-03-28"}
2 { ... }
3 { ... }

/bulk/form-5/index.json

index.json Example
1 [
2 {
3 "key": "2025/2025-04.jsonl.gz",
4 "updatedAt": "2025-04-09T05:00:06.000Z",
5 "size": 4456349
6 },
7 {
8 "key": "2025/2025-03.jsonl.gz",
9 "updatedAt": "2025-04-01T05:00:07.000Z",
10 "size": 106764954
11 },
12 // ... more files
13 ]

Transaction Code List

ValueMeaning
AGrant, award or other acquisition pursuant to Rule 16b-3(d)
CConversion of derivative security
DDisposition to the issuer of issuer equity securities pursuant to Rule 16b-3(e)
EExpiration of short derivative position
FPayment of exercise price or tax liability by delivering or withholding securities incident to the receipt, exercise or vesting of a security issued in accordance with Rule 16b-3
GBona fide gift
HExpiration (or cancellation) of long derivative position with value received
IDiscretionary transaction in accordance with Rule 16b-3(f) resulting in acquisition or disposition of issuer securities
JOther acquisition or disposition (describe transaction)
LSmall acquisition under Rule 16a-6
MExercise or conversion of derivative security exempted pursuant to Rule 16b-3
OExercise of out-of-the-money derivative security
POpen market or private purchase of non-derivative or derivative security
SOpen market or private sale of non-derivative or derivative security
UDisposition pursuant to a tender of shares in a change of control transaction
WAcquisition or disposition by will or the laws of descent and distribution
XExercise of in-the-money or at-the-money derivative security
ZDeposit into or withdrawal from voting trust

FAQ

Common questions about querying the Insider Trading API, the response shape, and the bulk archives.

How do I find the most recent insider buy and sell transactions reported at a specific company?

To pull recent insider activity for one company, query the /insider-trading endpoint by the company's ticker (issuer.tradingSymbol should be the ticker, e.g. TSLA for Tesla or APA for Apache) or by its central index key (issuer.cik should be the CIK, e.g. 1318605 for Tesla). The most-recent-first behavior comes from sorting on the filing acceptance timestamp (filedAt in descending order), which is also the default sort.

Each result in the transactions array is a single Form 3, 4 or 5 with the company information on the issuer object and the trade details inside nonDerivativeTable.transactions or derivativeTable.transactions. Paginate with the from offset when more than 50 filings exist.

Run in Data Browser

How do I look up every insider trade ever filed by a specific person across all the companies they're associated with?

To track a single person across issuers, query the /insider-trading endpoint by the reporting person's CIK (reportingOwner.cik should be the person's CIK, e.g. 1494730 for Elon Musk) or by their name (reportingOwner.name should match the recorded name, e.g. Musk Elon). The CIK is the more reliable identifier because the same individual sometimes appears under slightly different name spellings across filings.

Filings the person is named on will be returned regardless of which company filed them. The issuer for each filing is on the issuer object so you can group results by issuer.cik or issuer.tradingSymbol to see all companies they have insider relationships with.

Run in Data Browser

How do I retrieve a single insider filing when I already know its accession number?

When you already have an accession number, look it up at the /insider-trading endpoint by matching the accession number field (accessionNo should equal the accession number you have, for example 0000899243-22-028189). The accession number uniquely identifies a single SEC submission, so the result will contain at most one entry in the transactions array.

The full document content — issuer, reporting owner, every non-derivative and derivative transaction or holding, every footnote and the remarks — is returned in that one record.

Run in Data Browser

How do I pull all insider transactions reported during a specific date range, such as a calendar quarter?

To restrict by date, query the /insider-trading endpoint and constrain either the date of the reported event (periodOfReport should fall between the start and end of the range, for example between 2024-01-01 and 2024-03-31 for Q1 2024) or the date the form was accepted by EDGAR (filedAt should fall in the same range). Use periodOfReport when you want trades that actually occurred in the quarter, and filedAt when you want filings that were submitted in the quarter.

Because the API caps any single query at 10,000 returned records, narrow date ranges are also the standard way to bulk-paginate large universes — for example, iterate one month at a time and page through each month with the from offset.

Run in Data Browser

How do I separate open-market insider purchases from open-market insider sales so I can track net buying versus selling pressure?

Open-market activity is encoded in the transaction code on each non-derivative transaction (nonDerivativeTable.transactions.coding.code). To get open-market purchases, query the /insider-trading endpoint with that code equal to P (open market or private purchase). To get open-market sales, use S (open market or private sale). All other codes — grants, gifts, tax withholding, option exercises — fall outside this open-market buy/sell distinction and should be excluded if you only want directional buying versus selling pressure.

Each matched transaction also carries the acquired/disposed flag (nonDerivativeTable.transactions.amounts.acquiredDisposedCode is A for acquired or D for disposed), so you can double-check that P rows are acquisitions and S rows are dispositions when aggregating.

Run in Data Browser

How do I filter for trades made only by company directors versus officers versus 10% owners?

The relationship to the issuer is captured by three booleans on the reporting owner (reportingOwner.relationship.isDirector, reportingOwner.relationship.isOfficer, reportingOwner.relationship.isTenPercentOwner). To get only director filings at the /insider-trading endpoint, the value of reportingOwner.relationship.isDirector should be true. For officer-only or 10%-owner-only views, set the corresponding flag to true. These are not mutually exclusive — a CEO who also sits on the board will have both isDirector and isOfficer set to true, and a founder may also have isTenPercentOwner set to true.

When the person has some other relationship not covered by those three, the catch-all flag (reportingOwner.relationship.isOther should be true) is set, and a free-text description appears in reportingOwner.relationship.otherText.

Run in Data Browser

How do I find insider trades made under a pre-arranged trading plan that removes discretion around earnings windows?

Rule 10b5-1 trading plans are flagged on the filing itself via aff10b5One, a top-level boolean added by SEC's 2023 Rule 10b5-1 amendments (Release No. 33-11138). The field is present on Form 4 and Form 5 only — Form 3 has no analog because it reports initial holdings, not transactions. At the /insider-trading endpoint, set aff10b5One to true to return filings where the reporting person affirmed the trade was made pursuant to a Rule 10b5-1(c) plan. Trades pre-scheduled this way are typically open-market sales (nonDerivativeTable.transactions.coding.code equal to S), so combining aff10b5One with the S code narrows the result set to discretion-free open-market sales.

Filings predating the 2023 amendments do not carry the affirmation field; for historical coverage, also search the footnote text (footnotes.text should contain 10b5-1). Each filing's footnotes array carries an id plus the explanatory text, and the IDs are referenced from the affected fields via *FootnoteId properties so you can tie the plan disclosure back to the exact transaction it covers.

Run in Data Browser

How do I distinguish initial-ownership filings (when a person first becomes an insider) from ongoing transaction reports and year-end catch-ups?

The form type lives on the document-type field (documentType). Query the /insider-trading endpoint with documentType equal to 3 for an initial statement of beneficial ownership, 4 for a current-transaction report (the standard ongoing filing), or 5 for an annual statement that sweeps up transactions exempt from immediate Form 4 reporting.

Form 3 filings typically have no transactions and only a nonDerivativeTable.holdings block describing initial positions, while Form 4 filings populate nonDerivativeTable.transactions or derivativeTable.transactions. The periodOfReport field also carries different semantics by form: it is the date of the triggering event on Form 3, the date of the earliest transaction on Form 4, and the fiscal year end on Form 5.

Run in Data Browser

Amendments use the /A suffix on the document type (documentType). To list them at the /insider-trading endpoint, the value of documentType should be 3/A, 4/A, or 5/A. Every amendment carries the date of the original submission it corrects (dateOfOriginalSubmission is the filing date of the prior submission, in YYYY-MM-DD format).

There is no direct accession-number back-link, so the practical join is to match the amendment to the original by issuer (issuer.cik), reporting person (reportingOwner.cik), and the original submission date (dateOfOriginalSubmission on the amendment should match filedAt's date on the original).

Run in Data Browser

How do I exclude tax-withholding share dispositions and option-exercise mechanics so I see only economically meaningful insider buys and sells?

Tax-withholding dispositions use code F (payment of tax liability by surrendering shares incident to vesting) and option exercises use code M (exercise of a derivative security exempted under Rule 16b-3). To strip them from results at the /insider-trading endpoint, the value of nonDerivativeTable.transactions.coding.code should not be F or M. Conversely, to keep only economically meaningful open-market activity, restrict that field to P (open-market purchase) or S (open-market sale).

A common pattern in real filings is a same-day pair where an M line records an option exercise and an F line records the share withholding that funded the tax bill — neither reflects a discretionary buy or sell decision and both should be filtered out when measuring conviction.

Run in Data Browser

How do I retrieve only the share grants and equity awards an insider received, separate from purchases or sales?

Equity awards granted under Rule 16b-3 use code A (grant, award or other acquisition). To pull them at the /insider-trading endpoint, the value of nonDerivativeTable.transactions.coding.code should be A. Bona fide gifts use code G and can be included or excluded depending on whether you treat them as compensation events.

Grant-type transactions usually show a zero price (nonDerivativeTable.transactions.amounts.pricePerShare is 0) and the acquired/disposed flag (nonDerivativeTable.transactions.amounts.acquiredDisposedCode) is A. Restricted stock unit grants frequently appear in derivativeTable.transactions with the same code A, in which case the underlying common stock count lives on derivativeTable.transactions.underlyingSecurity.shares.

Run in Data Browser

How do I find insiders who acquired shares by exercising stock options or converting derivatives?

Derivative exercises and conversions are reported on the derivative table with three distinct codes (derivativeTable.transactions.coding.code). To find them at the /insider-trading endpoint, that value should be M (Rule 16b-3 exempt exercise), X (exercise of an in- or at-the-money derivative), or C (conversion of a derivative security).

The derivative line states the derivative being exercised in derivativeTable.transactions.securityTitle (for example Restricted Stock Unit, Phantom Stock Units, or a Conditional Grant), and the common-stock equivalent received is on derivativeTable.transactions.underlyingSecurity.title and derivativeTable.transactions.underlyingSecurity.shares. A matching non-derivative acquisition typically appears on the same filing under nonDerivativeTable.transactions with code M and acquired flag A.

Run in Data Browser

How do I identify insider transactions where a derivative security like an RSU, DSU, or stock option is involved rather than plain common stock?

Any filing that touches a derivative carries a derivativeTable object alongside (or instead of) the nonDerivativeTable. To target these at the /insider-trading endpoint, search the derivative security title (derivativeTable.transactions.securityTitle should contain a term like Restricted Stock Unit, Deferred Share Units, Phantom Stock Units, or Option) or use the underlying-security path (derivativeTable.transactions.underlyingSecurity.title is typically Common Stock or a similar class label).

The derivative entry also exposes its exercise price (derivativeTable.transactions.conversionOrExercisePrice), the exercise date (derivativeTable.transactions.exerciseDate) and the expiration date (derivativeTable.transactions.expirationDate), which together let you separate vested options from unvested grants and time-bound awards from perpetual instruments.

Run in Data Browser

How do I filter for insider holdings reported as indirectly owned, for example through a trust, spouse, IRA, or 401(k)?

Indirect ownership is flagged on each transaction or holding by an ownership-nature code (ownershipNature.directOrIndirectOwnership should be I for indirect; D means direct). To filter for indirect positions at the /insider-trading endpoint, set that field to I on the appropriate table — either nonDerivativeTable.transactions.ownershipNature.directOrIndirectOwnership, nonDerivativeTable.holdings.ownershipNature.directOrIndirectOwnership, or the equivalent paths under derivativeTable.

The specific arrangement is described in plain text on the same object (ownershipNature.natureOfOwnership), with values like by Trust, In 401(k), By Reporting Person's IRA, By wife's IRA, By Profit Sharing Plan of Reporting Person's Employer, or By grantor trust. Combine the I filter with a text match against natureOfOwnership to isolate trusts, retirement accounts, or family-held positions.

Run in Data Browser

How do I find insider trades held through a family member as custodian for a child?

Custodial-for-child arrangements show up as indirect holdings whose nature-of-ownership text identifies the custodian and beneficiary in plain English. At the /insider-trading endpoint, nonDerivativeTable.holdings.ownershipNature.directOrIndirectOwnership should be I and nonDerivativeTable.holdings.ownershipNature.natureOfOwnership should contain a phrase such as By wife as custodian for daughter or By wife as custodian for son.

These holdings often carry a disclaimer-of-beneficial-ownership footnote attached via nonDerivativeTable.holdings.ownershipNature.natureOfOwnershipFootnoteId whose footnotes.text clarifies the reporting person's limited interest, which is useful when distinguishing economic ownership from reporting obligation.

Run in Data Browser

How do I find insider transactions involving cash-settled total return swaps or other equity swap arrangements?

Swap involvement is encoded on the transaction's coding object (coding.equitySwapInvolved is a boolean). At the /insider-trading endpoint, set nonDerivativeTable.transactions.coding.equitySwapInvolved or derivativeTable.transactions.coding.equitySwapInvolved to true.

Cash-settled total return swaps are also typically described in the derivative section, so a second route is to search the security title (derivativeTable.transactions.securityTitle or derivativeTable.holdings.securityTitle should contain Swap) or the footnote text (footnotes.text should contain swap or Swap Agreement). The underlying-share economics — for example a notional 5,763,573 shares — appear on derivativeTable.holdings.underlyingSecurity.shares even when the position is cash-settled and confers no voting rights.

Run in Data Browser

How do I see exactly how many shares an insider held before and after a reported transaction so I can compute the percentage change in their position?

The post-trade balance is on each transaction (nonDerivativeTable.transactions.postTransactionAmounts.sharesOwnedFollowingTransaction, or the same path under derivativeTable.transactions). The pre-trade balance is not stored as its own field; it is the post-trade balance plus or minus the trade size, where the trade size is nonDerivativeTable.transactions.amounts.shares and the direction is given by nonDerivativeTable.transactions.amounts.acquiredDisposedCode (A adds, D subtracts).

At the /insider-trading endpoint, you can sort the resulting trades for a single insider by periodOfReport ascending to walk the position forward chronologically and compute percentage changes between the before and after share counts.

Run in Data Browser

How do I retrieve the price per share at which each insider transaction took place so I can estimate the dollar value traded?

Each non-derivative transaction carries the execution price on nonDerivativeTable.transactions.amounts.pricePerShare and the share count on nonDerivativeTable.transactions.amounts.shares. To estimate the dollar value of an open-market trade at the /insider-trading endpoint, multiply those two values per row. Derivative trades expose the same shape under derivativeTable.transactions.amounts.pricePerShare and derivativeTable.transactions.amounts.shares.

Grant-type transactions (nonDerivativeTable.transactions.coding.code equal to A) commonly carry a price of 0 because no cash changes hands, and weighted-average pricing is signaled by a footnote ID on the price field (nonDerivativeTable.transactions.amounts.pricePerShareFootnoteId references an entry in footnotes that gives the executed price range).

Run in Data Browser

How do I find late-filed insider transactions where the insider missed the standard two-business-day reporting deadline?

Filing timeliness is on the transaction itself (nonDerivativeTable.transactions.timeliness and the same path under derivativeTable.transactions). At the /insider-trading endpoint, the value should be L for late, E for early, or empty when filed on time.

A late marker means the trade was filed past the two-business-day deadline mandated by Section 16. Form 5 amendments and ad-hoc sweep filings often surface late-marked rows when an issuer or insider catches up on prior periods.

Run in Data Browser

How do I retrieve the full text of every footnote attached to a filing and figure out which transaction or field each footnote applies to?

Each filing returned by the /insider-trading endpoint includes a footnotes array, where each item has an identifier (footnotes.id, for example F1) and the footnote prose (footnotes.text). The same IDs are referenced from the fields they explain through *FootnoteId arrays — for example nonDerivativeTable.transactions.amounts.pricePerShareFootnoteId, nonDerivativeTable.transactions.amounts.sharesFootnoteId, nonDerivativeTable.transactions.securityTitleFootnoteId, derivativeTable.transactions.exerciseDateFootnoteId, derivativeTable.transactions.expirationDateFootnoteId, and ownershipNature.natureOfOwnershipFootnoteId.

To attach a footnote back to the specific field it describes, look at which *FootnoteId array contains the footnote's ID. The same footnote can be referenced from multiple fields, for example when one explanation covers both the price-per-share and the security-title columns.

Run in Data Browser

How do I search the free-text remarks field on an insider filing for things like "power of attorney", "by trust", or other special circumstances?

The form-level free-text disclosure lives in remarks. At the /insider-trading endpoint, search this field for the phrase you care about, for example remarks should contain power of attorney, disclaims beneficial ownership, or any other narrative phrase used by filers.

Remarks frequently explain why a Form 4 was split into multiple submissions (for example when more than 30 transactions occurred on the same date and EDGAR's per-filing transaction limit forced a split), or who signed under power of attorney, which you can cross-check against ownerSignatureName.

Run in Data Browser

How do I find insider transactions tagged as gifts rather than market trades, which I want to exclude from buying/selling totals?

Bona fide gifts use code G and inheritance/bequest transfers use code W. To list them at the /insider-trading endpoint, the value of nonDerivativeTable.transactions.coding.code should be G or W. To exclude them from a buy/sell aggregation, require the code to be neither of those two while keeping the open-market codes P and S.

Gifts are typically reported at a price of 0 (nonDerivativeTable.transactions.amounts.pricePerShare is 0) and the acquired/disposed flag (nonDerivativeTable.transactions.amounts.acquiredDisposedCode) is D from the donor's perspective, so they can otherwise look like a disposition even though no economic sale occurred.

Run in Data Browser

How do I find insider trades that were the result of small acquisitions exempt under SEC rules?

Small acquisitions exempt under Rule 16a-6 carry code L. At the /insider-trading endpoint, nonDerivativeTable.transactions.coding.code should be L. The Rule 16a-6 exemption applies when the cumulative dollar value over a six-month period stays under a threshold, so individual L-coded transactions are typically modest in size.

These rows still report shares and price per share on nonDerivativeTable.transactions.amounts, so they can be aggregated the same way as other transaction types when you want to roll them up.

Run in Data Browser

How do I find executives at a specific company who hold a particular officer title, such as CFO or General Counsel?

Officer titles are stored verbatim on the reporting owner (reportingOwner.relationship.officerTitle). At the /insider-trading endpoint, restrict the officer flag (reportingOwner.relationship.isOfficer should be true) and search the title for the role you want — for example reportingOwner.relationship.officerTitle should contain Chief Financial Officer (also seen as CFO, Sr V.P. and CFO, or Chief Financial Officer) or General Counsel. Combine with the issuer (issuer.tradingSymbol or issuer.cik) to scope the search to a single company.

Title strings are free-text as filed by the company, so the same role can appear in several spellings — President and CEO, Exec. Vice President, Claims President. Use partial-string matching to catch all variants.

Run in Data Browser

How do I look up all insider filings for a company by its central registration identifier instead of its ticker, useful when the company is delisted or has changed tickers?

Issuer identity is keyed by CIK (issuer.cik). At the /insider-trading endpoint, set issuer.cik to the company's CIK, for example 320193 for Apple, 1318605 for Tesla, or 6769 for Apache. The CIK persists through ticker changes, delistings, mergers and corporate-form conversions, which the ticker (issuer.tradingSymbol) does not.

Because the database is survivorship-bias free, lookups by CIK return filings even for issuers that no longer trade publicly, which is the right behavior for historical research where the ticker may no longer resolve.

Run in Data Browser

How do I sort insider filings by the date of the actual transaction rather than the date the form was filed?

By default the /insider-trading endpoint sorts on the SEC acceptance timestamp (filedAt). To order by the date of the underlying trade instead, sort on periodOfReport. On Form 4 this is the date of the earliest transaction in the filing, so it is the closest top-level proxy for “when did the trade happen”. For finer granularity, the per-row transaction date (nonDerivativeTable.transactions.transactionDate or derivativeTable.transactions.transactionDate) carries the exact date for each individual transaction in the same filing.

Set the sort order to ascending to walk a person or company's trades forward in time, or descending to start from the most recent.

Run in Data Browser

How do I paginate through more than 50 matching insider filings when a single query returns thousands of results?

Each call to /insider-trading returns at most 50 records. To page forward, increase the from offset by 50 on each successive call (0, then 50, then 100, and so on). The maximum reachable offset is 10000, which caps any one query at 10,000 total records regardless of how many actually match.

For result sets larger than 10,000, slice the query along a date dimension — for example restrict periodOfReport to one month at a time, page through that month to exhaustion, then advance to the next month. Pair this with a deterministic sort (filedAt or periodOfReport) so the pagination order is stable across calls.

Run in Data Browser

How do I download every Form 4 filing for an entire calendar month in one batch instead of paginating through the search API?

Monthly bulk archives are served from a year/month-templated path: /bulk/form-4/YYYY/YYYY-MM.jsonl.gz returns a gzip-compressed JSONL file containing every Form 4 with a filedAt timestamp inside that calendar month. The same shape applies to Form 3 (/bulk/form-3/YYYY/YYYY-MM.jsonl.gz) and Form 5 (/bulk/form-5/YYYY/YYYY-MM.jsonl.gz).

Each line in the decompressed file is one full Form 3, 4 or 5 record using the same JSON structure returned by the search endpoint — accessionNo, filedAt, documentType, issuer, reportingOwner, nonDerivativeTable, derivativeTable, footnotes, and so on. New filings from the previous day are appended to the current month's archive between 1:00 AM and 4:00 AM Eastern.

How do I check which monthly bulk archive files are currently available and when each one was last refreshed?

Each form type has an index file: /bulk/form-3/index.json, /bulk/form-4/index.json, and /bulk/form-5/index.json. The index is an array of entries, where each entry has the relative path to the monthly archive (key, for example 2025/2025-03.jsonl.gz), the last refresh timestamp (updatedAt), and the file size in bytes (size).

Polling the relevant index lets a downstream process detect which monthly files have new data and prioritize re-downloads accordingly without scanning every archive.

How do I count how many insider transactions match my query without retrieving every record, so I know if I need to narrow the search before paginating?

Every response from /insider-trading includes a count object (total). When the count is exact, total.relation is eq and total.value is the precise number of matching records (always less than 10,000). When more than 10,000 records match, total.relation is gte and total.value is 10000, signaling that the true count is at least that high but not computed.

Use this object as a pre-flight check: if total.relation is gte, narrow the query before paginating — most commonly by tightening the periodOfReport date range — until total.relation flips to eq so the full set is reachable within the 10,000-record cap.

Run in Data Browser

References

For more information about Form 3, 4 and 5 visit the SEC websites here:

Regulations

Research Papers