Home / Developers / Form 144 API
API reference

Form 144 API

Form 144 notices tell the SEC that an affiliate plans to sell restricted or control stock. Each filing comes as flat fields (seller, issuer, shares, value, broker, sale date, recent sales) plus the complete original data. Product overview →

Endpoints

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

Latest notices, flat fields only

fields=flat keeps the response small; drop it to get the full filing under data.

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

r = requests.get(
    "https://secfeedapi.com/v1/form-144",
    params={'fields': 'flat', 'size': '2'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 2629,
  "filings": [
    {
      "accessionNo": "0001921094-26-001086",
      "formType": "144",
      "filedAt": "2026-10-13",
      "cik": 1870974,
      "companyName": "Ghamsari Nima",
      "flat": {
        "issuerCik": "1855747",
        "issuerName": "Blend Labs, Inc.",
        "seller": "Ghamsari Nima",
        "relationship": [
          "Officer",
          "Director"
        ],
        "securityClass": "Common",
        "broker": "Charles Schwab & Co., Inc.",
        "sharesToSell": 25098.0,
        "aggregateMarketValue": 24474.0,
        "sharesOutstanding": 233256934.0,
        "approxSaleDate": "10/12/2026",
        "exchange": "NYSE",
        "acquiredDate": "11/20/2025",
        "natureOfAcquisition": "Restricted Stock Lapse",
        "acquiredFrom": "BLEND LABS, INC.",
        "isGift": false,
        "salesPast3Months": [
          {
            "seller": "NIMA GHAMSARI",
            "saleDate": "09/14/2026",
            "shares": 17731.0,
            "grossProceeds": 25267.0
          },
          {
            "seller": "NIMA GHAMSARI",
            "saleDate": "09/21/2026",
            "shares": 21009.0,
            "grossProceeds": 25024.0
          }
        ],
        "planAdoptionDates": [
          "06/15/2026"
        ]
      }
    },
    {
      "accessionNo": "0001921094-26-001085",
      "formType": "144",
      "filedAt": "2026-10-13",
      "cik": 1830016,
      "companyName": "Nonko Eugene",
      "flat": {
        "issuerCik": "1818383",
        "issuerName": "MediaAlpha, Inc.",
        "seller": "Nonko Eugene",
        "relationship": [
          "Director"
        ],
  ...

Planned sales worth over $1 million

aggregateMarketValue is the seller's estimate at filing time.

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",
  ...

Notices filed in a date range

Dates filter on the filing date.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?startDate=2026-10-01&endDate=2026-10-09&fields=flat&size=1"
import os, requests

r = requests.get(
    "https://secfeedapi.com/v1/form-144",
    params={'startDate': '2026-10-01', 'endDate': '2026-10-09', 'fields': 'flat', 'size': '1'},
    headers={"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"},
    timeout=60,
)
r.raise_for_status()
print(r.json())
{
  "total": 634,
  "filings": [
    {
      "accessionNo": "0001950047-26-010150",
      "formType": "144",
      "filedAt": "2026-10-09",
      "cik": 938071,
      "companyName": "DUFFIELD DAVID A",
      "flat": {
        "issuerCik": "1327811",
        "issuerName": "WORKDAY, INC.",
        "seller": "DAVID A. DUFFIELD TRUST U/T/A 7/14/88",
        "relationship": [
          "10% Stockholder"
        ],
        "securityClass": "Common",
        "broker": "Morgan Stanley Smith Barney LLC Executive Financial Services",
        "sharesToSell": 99835.0,
        "aggregateMarketValue": 18750011.35,
        "sharesOutstanding": 196000000.0,
        "approxSaleDate": "10/09/2026",
        "exchange": "NASDAQ",
        "acquiredDate": "12/27/2007",
        "natureOfAcquisition": "Private Placement",
        "acquiredFrom": "Issuer",
        "isGift": false,
        "salesPast3Months": [
          {
            "seller": "10b5-1 Sales for DAVID A DUFFIELD TRUST U/T/A 7/14/88",
            "saleDate": "10/06/2026",
            "shares": 99228.0,
            "grossProceeds": 18587111.12
          },
          {
            "seller": "10b5-1 Sales for DAVID A DUFFIELD TRUST U/T/A 7/14/88",
            "saleDate": "10/01/2026",
            "shares": 98446.0,
            "grossProceeds": 18415820.68
          }
        ],
        "planAdoptionDates": [
          "12/02/2025"
        ]
      }
    }
  ]
}

Response fields

FieldTypeMeaning
totalintegerMatching filings.
filings[].accessionNostringAccession number.
filings[].formTypestring144 or 144/A.
filings[].filedAtstringFiling date.
filings[].cik / companyNamemixedFiler CIK and name (usually the seller).
filings[].flat.issuerCik / issuerNamestringCompany whose stock will be sold.
filings[].flat.sellerstringPerson for whose account the shares are sold.
filings[].flat.relationship[]arrayOfficer, Director, 10% owner and so on.
filings[].flat.securityClassstringClass of security.
filings[].flat.broker / exchangestringBroker handling the sale and the exchange.
filings[].flat.sharesToSellnumberShares to be sold.
filings[].flat.aggregateMarketValuenumberMarket value of those shares.
filings[].flat.sharesOutstandingnumberIssuer shares outstanding.
filings[].flat.approxSaleDatestringExpected sale date, MM/DD/YYYY.
filings[].flat.acquiredDate / natureOfAcquisition / acquiredFromstringHow and when the shares were acquired.
filings[].flat.isGiftbooleanThe shares were received as a gift.
filings[].flat.salesPast3Months[].seller / saleDate / shares / grossProceedsmixedSales by the same seller in the prior three months.
filings[].flat.planAdoptionDates[]array10b5-1 plan adoption dates when reported.
filings[].data.primary_doc.headerDataobjectSubmission header (filer CIK, live or test).
filings[].data.primary_doc.formData.issuerInfoobjectIssuer CIK, name, file number, address, phone, seller name, relationships.
filings[].data.primary_doc.formData.securitiesInformationobjectClass, broker with address, units to sell, market value, units outstanding, sale date, exchange.
filings[].data.primary_doc.formData.securitiesToBeSoldobjectAcquisition date, nature, source, gift flag, amount, payment date and nature.
filings[].data.primary_doc.formData.securitiesSoldInPast3Months[]arraySeller details, class, sale date, amount sold, gross proceeds.
filings[].data.primary_doc.formData.nothingToReportFlagOnSecuritiesSoldInPast3MonthsstringY when there were no sales in the prior three months.
filings[].data.primary_doc.formData.remarksstringFree text remarks.
filings[].data.primary_doc.formData.noticeSignatureobjectNotice date, plan adoption dates and signature.

How to

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 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"
How do I filter by the filer?

cik is the filer's CIK, which for Form 144 is usually the selling person.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?cik=1870974&fields=flat&size=1"
How do I find notices where the shares were a gift?

Filter the original field isGiftTransaction=Y with a data. filter.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?data.primary_doc.formData.securitiesToBeSold.isGiftTransaction=Y&fields=flat&size=1"
How do I filter by issuer name?

Use flat.issuerName with the exact name as filed, URL encoded.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?flat.issuerName=NVIDIA%2520CORP&fields=flat&size=1"
How do I get the complete filing?

Leave out fields=flat; the full XML as JSON is under data.

curl -H "Authorization: Bearer $SECFEED_KEY" \
  "https://secfeedapi.com/v1/form-144?size=1"
How do I see recent sales by the same seller?

Read flat.salesPast3Months; each entry has the sale date, shares and gross proceeds.

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

Errors

See also the error codes every endpoint shares.

Try it with your own key

500 free calls a month.

Get free API key →