Home / Developers / Insider Trading API
API reference

Insider Trading API

Query every insider transaction and holding reported on Forms 3, 4 and 5 since 2006, one row per line of the filing's tables. Pair it with the Form 144 endpoint to see sales that insiders announce before they happen. Product overview →

Endpoints

/v1/insider-trading

GEThttps://secfeedapi.com/v1/insider-trading

Forms 3, 4, 5: every transaction and holding with owners, roles, prices, footnotes, 10b5-1 flag.

ParameterTypeDescriptionExample
tickerstringIssuer ticker. Case-insensitive.NVDA
cikintegerIssuer CIK. Use this instead of ticker for companies without a ticker.320193
ownerstringMatches any part of the reporting owner block (name, CIK, title), case-insensitive substring.Huang
codestringOne or more transaction codes, comma separated. See the code list below.P,S
minValuenumberMinimum transaction value in dollars (shares times price).100000
startDatestringEarliest filing date, YYYY-MM-DD. Filters on the date the form was filed, not the trade date.2026-10-01
endDatestringLatest filing date, YYYY-MM-DD.2026-10-09
formTypestring3, 4 or 5, or an amendment such as 4/A.4
tablestringnonDerivative (common stock) or derivative (options, RSUs, warrants).derivative
fromintegerOffset for paging. Default 0.50
sizeintegerRows per page, up to 200. Default 50.50

/v1/form-144

GEThttps://secfeedapi.com/v1/form-144

Proposed sales of restricted and control securities: flat fields (seller, relationship, shares, market value, broker, sale date, past 3 months of sales).

ParameterTypeDescriptionExample
cikintegerCIK of the filer, which on Form 144 is usually the person selling, not the issuer.1870974
startDatestringEarliest filing date, YYYY-MM-DD.2026-10-01
endDatestringLatest filing date, YYYY-MM-DD.2026-10-09
formTypestring144 or 144/A.144
flat.<field>string or numberExact match on a flat field, or flat.<field>__gte / __lte for numeric ranges.flat.aggregateMarketValue__gte=1000000
data.<path>stringExact match on any value in the original XML, by dotted path.data.primary_doc.formData.issuerInfo.issuerCik=0001045810
fieldsstringSet to flat to drop the full XML and return only the flat fields.flat
fromintegerOffset for paging. Default 0.20
sizeintegerFilings per page, up to 100. Default 20.20

Request examples

Every response below is real output from the API, trimmed to the first records.

Recent open market sales at one company

Each row is one sale line. Check aff10b5one to see whether it was made under a 10b5-1 plan, and owners for who sold.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?ticker=NVDA&code=S&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/insider-trading",
    params={'ticker': 'NVDA', 'code': 'S', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 2704,
  "totalRelation": "eq",
  "transactions": [
    {
      "accession": "0001696841-26-000014",
      "seq": 1,
      "tbl": "nonDerivative",
      "kind": "transaction",
      "security": "Common Stock",
      "tx_date": "2026-09-21",
      "code": "S",
      "equity_swap": 0,
      "shares": 13478.0,
      "price": 223.05,
      "acq_disp": "D",
      "owned_after": 2692159.0,
      "direct_indirect": "I",
      "nature": "By Trust",
      "conv_price": null,
      "exercise_date": null,
      "expiration_date": null,
      "underlying": null,
      "underlying_shares": null,
      "value": 3006267.9,
      "form": "4",
      "filed": "2026-09-23",
      "period": "2026-09-21",
      "issuer_cik": 1045810,
      "issuer_name": "NVIDIA CORP",
      "ticker": "NVDA",
      "owners": [
        {
          "cik": "1696841",
          "name": "Teter Timothy S.",
          "isDirector": false,
          "isOfficer": true,
          "isTenPercentOwner": false,
          "isOther": false,
          "officerTitle": "EVP, General Counsel and Sec",
          "otherText": null,
          "address": {
            "rptOwnerStreet1": "C/O NVIDIA CORPORATION",
            "rptOwnerCity": "SANTA CLARA",
            "rptOwnerState": "CA",
            "rptOwnerZipCode": "95051"
          }
        }
      ],
      "aff10b5one": true,
      "remarks": null,
      "footnotes": {
        "F1": "The reported transaction was effected pursuant to a Rule 10b5-1 trading plan adopted by the Reporting Person on May 22, 2026.",
        "F4": "Shares held by the Trust.",
        "F5": "Represents weighted average sales price. The shares were sold at prices ranging from $222.59 to $223.58. The Reporting Person will provide upon request, to the SEC, the Issuer or security holder of the Issuer, full information regarding the number of shares sold at each separate..."
      },
      "codeDescription": "Open market or private sale"
    },
    {
      "accession": "0001696841-26-000014",
  ...

Purchases over $100,000 filed this month

A market wide screen for insider buying. value is shares times price, so very large prices from filer typos are worth checking.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?code=P&startDate=2026-10-01&minValue=100000&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/insider-trading",
    params={'code': 'P', 'startDate': '2026-10-01', 'minValue': '100000', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 46,
  "totalRelation": "eq",
  "transactions": [
    {
      "accession": "0001628280-26-065603",
      "seq": 0,
      "tbl": "nonDerivative",
      "kind": "transaction",
      "security": "Common Shares",
      "tx_date": "2026-10-09",
      "code": "P",
      "equity_swap": 0,
      "shares": 2500000.0,
      "price": 4.7374,
      "acq_disp": "A",
      "owned_after": 37285941.0,
      "direct_indirect": "I",
      "nature": "By Drew Holdings Ltd.",
      "conv_price": null,
      "exercise_date": null,
      "expiration_date": null,
      "underlying": null,
      "underlying_shares": null,
      "value": 11843500.0,
      "form": "4",
      "filed": "2026-10-13",
      "period": "2026-10-09",
      "issuer_cik": 1715497,
      "issuer_name": "Borr Drilling Ltd",
      "ticker": "BORR",
      "owners": [
        {
          "cik": "0001709630",
          "name": "Troim Tor Olav",
          "isDirector": true,
          "isOfficer": false,
          "isTenPercentOwner": false,
          "isOther": false,
          "officerTitle": null,
          "otherText": null,
          "address": {
            "rptOwnerStreet1": "C/O BORR DRILLING LIMITED",
            "rptOwnerCity": "HAMILTON",
            "rptOwnerState": null,
            "rptOwnerZipCode": "D0 HM11"
          }
        }
      ],
      "aff10b5one": false,
      "remarks": null,
      "footnotes": {
        "F1": "Drew Holdings Ltd. is wholly owned by Drew Trust, a non-discretionary trust in which the reporting person is the beneficiary."
      },
      "codeDescription": "Open market or private purchase"
    },
    {
      "accession": "0001654954-26-008905",
      "seq": 0,
      "tbl": "nonDerivative",
  ...

Form 144 notices for sales over $1 million

Form 144 is filed before a planned sale. flat.salesPast3Months lists what the same seller sold in the prior three months.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?flat.aggregateMarketValue__gte=1000000&fields=flat&size=2"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/form-144",
    params={'flat.aggregateMarketValue__gte': '1000000', 'fields': 'flat', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 858,
  "filings": [
    {
      "accessionNo": "0001921094-26-001084",
      "formType": "144",
      "filedAt": "2026-10-13",
      "cik": 1564475,
      "companyName": "Olivan Javier",
      "flat": {
        "issuerCik": "1326801",
        "issuerName": "Meta Platforms, Inc.",
        "seller": "Olivan Javier",
        "relationship": [
          "Officer"
        ],
        "securityClass": "Class A Common Shares",
        "broker": "Charles Schwab & Co., Inc.",
        "sharesToSell": 1575.0,
        "aggregateMarketValue": 1146757.0,
        "sharesOutstanding": 2205128509.0,
        "approxSaleDate": "10/12/2026",
        "exchange": "NASDAQ",
        "acquiredDate": "02/15/2017",
        "natureOfAcquisition": "Restricted Stock Unit Lapse",
        "acquiredFrom": "Meta Platforms, Inc.",
        "isGift": false,
        "salesPast3Months": [
          {
            "seller": "JAVIER OLIVAN",
            "saleDate": "07/13/2026",
            "shares": 2163.0,
            "grossProceeds": 1429787.0
          },
          {
            "seller": "JAVIER OLIVAN",
            "saleDate": "07/20/2026",
            "shares": 1466.0,
            "grossProceeds": 946816.0
          }
        ],
        "planAdoptionDates": [
          "11/17/2025"
        ]
      }
    },
    {
      "accessionNo": "0001958244-26-000656",
      "formType": "144",
      "filedAt": "2026-10-13",
      "cik": 1754844,
      "companyName": "CMXI B.V.",
      "flat": {
        "issuerCik": "1707753",
        "issuerName": "Elastic N.V.",
        "seller": "CMXI B.V.",
        "relationship": [
          "Director"
        ],
        "securityClass": "Ordinary",
  ...

Response fields

FieldTypeMeaning
totalintegerMatching rows, capped at 10000.
totalRelationstringeq when total is exact, gte when the cap was reached.
transactions[].accessionstringAccession number of the filing the row comes from.
transactions[].seqintegerPosition of the row inside the filing.
transactions[].tblstringnonDerivative or derivative table.
transactions[].kindstringtransaction for a reported trade, holding for a position reported without a trade.
transactions[].securitystringSecurity title as written in the filing.
transactions[].tx_datestringTransaction date, YYYY-MM-DD.
transactions[].codestringSEC transaction code.
transactions[].codeDescriptionstringPlain English meaning of the code.
transactions[].equity_swapinteger1 when the filer marked the trade as part of an equity swap.
transactions[].sharesnumberShares or units in the transaction.
transactions[].pricenumberPrice per share. Often a weighted average, see footnotes.
transactions[].valuenumbershares times price.
transactions[].acq_dispstringA for acquired, D for disposed.
transactions[].owned_afternumberShares held after the transaction.
transactions[].direct_indirectstringD for direct ownership, I for indirect.
transactions[].naturestringHow indirect holdings are held, for example By Trust.
transactions[].conv_pricenumberExercise or conversion price (derivative rows).
transactions[].exercise_datestringFirst exercise date (derivative rows).
transactions[].expiration_datestringExpiration date (derivative rows).
transactions[].underlyingstringUnderlying security title (derivative rows).
transactions[].underlying_sharesnumberUnderlying shares (derivative rows).
transactions[].formstring3, 4, 5 or an amendment.
transactions[].filedstringFiling date.
transactions[].periodstringPeriod of report from the filing.
transactions[].issuer_cikintegerIssuer CIK.
transactions[].issuer_namestringIssuer name.
transactions[].tickerstringIssuer trading symbol as reported.
transactions[].owners[].cikstringReporting owner CIK.
transactions[].owners[].namestringReporting owner name.
transactions[].owners[].isDirectorbooleanOwner is a director.
transactions[].owners[].isOfficerbooleanOwner is an officer.
transactions[].owners[].isTenPercentOwnerbooleanOwner holds more than 10%.
transactions[].owners[].isOtherbooleanOther relationship, see otherText.
transactions[].owners[].officerTitlestringOfficer title as written by the filer.
transactions[].owners[].otherTextstringDescription of an other relationship.
transactions[].owners[].address.rptOwnerStreet1stringOwner street address.
transactions[].owners[].address.rptOwnerCitystringOwner city.
transactions[].owners[].address.rptOwnerStatestringOwner state.
transactions[].owners[].address.rptOwnerZipCodestringOwner ZIP code.
transactions[].aff10b5onebooleanThe filer checked the Rule 10b5-1 plan box.
transactions[].remarksstringFree text remarks from the filing.
transactions[].footnotes.<id>stringFootnotes referenced by this row, keyed F1, F2 and so on.
filings[].accessionNostringForm 144: accession number.
filings[].formType / filedAt / cik / companyNamestringForm 144: form, filing date, filer CIK and filer name.
filings[].flat.issuerCik / issuerNamestringForm 144: the company whose stock will be sold.
filings[].flat.seller / relationship[]stringForm 144: who is selling and their relationship to the issuer.
filings[].flat.securityClass / broker / exchangestringForm 144: class of security, broker handling the sale, exchange.
filings[].flat.sharesToSell / aggregateMarketValue / sharesOutstandingnumberForm 144: shares to be sold, their market value, issuer shares outstanding.
filings[].flat.approxSaleDate / acquiredDatestringForm 144: expected sale date and when the shares were acquired (MM/DD/YYYY).
filings[].flat.natureOfAcquisition / acquiredFrom / isGiftstringForm 144: how the shares were obtained.
filings[].flat.salesPast3Months[]arrayForm 144: seller, saleDate, shares and grossProceeds of sales in the prior three months.
filings[].flat.planAdoptionDates[]arrayForm 144: 10b5-1 plan adoption dates, when given.
filings[].data.primary_docobjectForm 144: the complete filing as JSON (omitted with fields=flat).

Transaction codes

CodeMeaning
POpen market or private purchase
SOpen market or private sale
AGrant or award
DDisposition to the issuer
FPayment of exercise price or tax by delivering securities
IDiscretionary transaction
MExercise or conversion of derivative security (exempt)
CConversion of derivative security
EExpiration of short derivative position
HExpiration or cancellation of long derivative position
OExercise of out-of-the-money derivative
XExercise of in-the-money or at-the-money derivative
GBona fide gift
LSmall acquisition
WAcquisition or disposition by will or laws of descent
ZDeposit into or withdrawal from voting trust
JOther acquisition or disposition
KEquity swap or similar
UDisposition due to tender of shares

How to

How do I get every insider trade at one company?

Filter by ticker (or cik) and page with from and size. Rows come newest first.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?ticker=AAPL&size=2"
How do I find what one executive traded?

Combine owner with ticker. owner matches any part of the name, so a last name is usually enough.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?owner=Huang&ticker=NVDA&size=2"
How do I see option and RSU activity only?

Set table=derivative. Those rows carry conv_price, exercise_date, expiration_date and underlying_shares.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?ticker=NVDA&table=derivative&size=2"
How do I list initial ownership statements from new insiders?

Use formType=3. Form 3 rows are usually holdings rather than trades.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?ticker=MSFT&formType=3&size=2"
How do I find gifts of stock?

Use code G. Gifts are reported at zero price, so value is usually 0.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?code=G&startDate=2026-10-01&size=2"
How do I pull a date range for one issuer by CIK?

Use cik with startDate and endDate. The dates refer to the filing date.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?cik=320193&startDate=2026-01-01&endDate=2026-06-30&size=2"
How do I get both buys and sells for a day?

Pass several codes separated by commas and set startDate and endDate to the same day.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?code=P,S&startDate=2026-10-09&endDate=2026-10-09&size=1"
How do I page past the first results?

Use from as the offset. With size=2, from=2 returns rows 3 and 4.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/insider-trading?ticker=TSLA&code=M&size=2&from=2"
How do I see Form 144 notices for one issuer?

Filter on the issuer CIK inside the XML. It is 10 digits with leading zeros.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?data.primary_doc.formData.issuerInfo.issuerCik=0001045810&fields=flat&size=1"
How do I find Form 144 notices handled by one broker?

Match flat.broker exactly, URL encoded.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?flat.broker=Morgan%2520Stanley%2520Smith%2520Barney%2520LLC&fields=flat&size=1"
How do I find large planned sales by share count?

Use flat.sharesToSell__gte.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?flat.sharesToSell__gte=100000&fields=flat&size=1"
How do I see amended Form 144 notices?

Set formType=144/A.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?formType=144/A&fields=flat&size=1"

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →