Form 144 API - Restricted Sales Notifications
The Restricted Sales Notification API enables filtering and retrieving Form 144 filings submitted to the SEC EDGAR database. This API accepts search queries as JSON-formatted payloads and returns the matching filings in JSON format.
Form 144 is filed by corporate insiders (officers, directors, and significant shareholders having control over the company) when they intend to sell restricted (e.g. shares acquired in a private offering) or control securities (held by insider or affiliate) under Rule 144 of the Securities Act of 1933. See below for a description of Rule 144 and affected securities. This filing serves as a public notice of planned sales, ensuring transparency in the market for shares that were previously unregistered or subject to trading restrictions. The form must be filed with the SEC before the sale of securities can occur.
A Form 144 filing includes several key details:
- Issuer Information: The name and SEC identifier of the company whose securities are being sold.
- Reporting Person: The insider submitting the sale notice, including their relationship to the company.
- Securities Details: The type, amount, and intended sale price of the securities.
- Past sales: Details of sales of restricted or control securities in the three month prior to the filing.
- Broker or Dealer: The financial entity handling the sale.
- Compliance Information: Statements confirming that the sale meets the Rule 144 holding period, volume limitations, and manner of sale requirements.
API Endpoint
The Form 144 API allows searching and filtering all Form 144 filings published on the SEC EDGAR database since 2022 to present. The API accepts search queries as JSON formatted payload and returns the matching Form 144 filings in JSON format. The API endpoint is:
Supported HTTP methods: POST
Request and response content type: JSON
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
Authorizationheader. For instance, before sending aPOSTrequest tohttps://api.sec-api.io/form-144, ensure the header is set as follows:Authorization: YOUR_API_KEY. Do not include any prefix likeBearer. - Query Parameter: Alternatively, append your API key directly to the URL as a query parameter. For example, when making
POSTrequests, use the URLhttps://api.sec-api.io/form-144?token=YOUR_API_KEYinstead of the base endpoint.
Request Structure
The following request parameters are supported:
query(string) - The search criteria in the formatfield:valuedefining thefieldto search in and thevalueto search for in this field. The search expression is written in Lucene syntax and supportsANDandORoperators. Examples:cik:4568orfiledAt:[2019-01-01 TO 2022-12-31].from(integer) - Pagination control to specify the starting position of the results. Max: 10000. Default: 0.size(integer) - The number of Reg A filings to be returned in one response. Default: 50. Max: 50.sort(array) - Specifies the field by which results should be sorted. By default, results are sorted byfiledAtin descending order, starting with the most recent filings:[{ "filedAt": { "order": "desc" } }]
Request Examples
Find the ten most recently submitted Form 144 filings for the issuer with ticker NVDA (NVIDIA Corp).
Find the two most recently submitted Form 144 filings for the company with CIK 2488.
Retrieve the Form 144 filings associated with the SEC file number 001-37580 (Alphabet Inc.) and sort them in descending order by the filing date.
Find the ten most recent Form 144 filings with a planned sale of securities with an aggregate market value greater than $1,000,000.
Response Structure
When the API locates matches within the Form 144 database, it returns a JSON response including two fields: total and data. The value field inside the total object indicates the total number of Form 144 filings that match the search criteria, while the data field contains an array of Form 144 filing objects that match the query. The maximum number of metadata objects inside thedata array is determined by the size and limited to 50. Each Form 144 filing object comprises the following fields:
id(string) - System-internal unique identifier of the filing record.accessionNo(string) - Unique accession number of the Form 144 filing, e.g.0001277575-24-000006.formType(string) - The form type of the SEC filing. Possible Values:144,144/AfiledAt(date) - The timestamp when the filing was accepted by SEC EDGAR, e.g.2024-05-15T16:17:15-04:00.entities(array of object)cik(string) - Central Index Key (CIK) of the reporting entity, e.g.1021408. This is a unique identifier assigned by the SEC to the filer. Leading zeros are omitted.ticker(string) - The stock ticker symbol used to identify the entity, e.g.GOOGL.companyName(string) - The legal name of the issuer as provided in the filing, e.g.ALPHABET INC.irsNo(string) - The Internal Revenue Service (IRS) Employer Identification Number (EIN) of the reporting entity, e.g.,95-1234567.fiscalYearEnd(string) - The fiscal year-end of the reporting entity, represented as a four-digit month-day format, e.g.1231for December 31.stateOfIncorporation(string) - The U.S. state or country where the entity is legally incorporated, represented using a two-letter state code (e.g.,DEfor Delaware) or a country name for non-U.S. entities.sic(string) - The Standard Industrial Classification (SIC) code representing the primary industry of the entity, e.g.,7372for Prepackaged Software.act(string) - The regulatory act under which the entity files its reports, e.g.,1934for the Securities Exchange Act of 1934.fileNo(string) - Unique identifier used to reference and track filings of the same process, e.g.020-34763.filmNo(string) - A unique identifier assigned by the SEC to track a specific filing, e.g.,211234567.
previousAccessionNumber(string) - The unique identifier referencing a previous filing accession number.issuerInfo(object)issuerCik(string) - The Central Index Key (CIK) of the issuer, used to uniquely identify the company in SEC records.issuerTicker(string) - The stock ticker symbol used to identify the issuer, e.g.GOOGL.issuerName(string) - The legal name of the issuer as registered with the SEC.secFileNumber(string) - The SEC file number assigned to the issuer's registration, if available.issuerAddress(object)street1(string) - The primary street address of the issuer's registered location.street2(string) - The secondary street address for the issuer's registered location, if applicable.city(string) - The city in which the issuer's registered address is located.stateOrCountry(string) - The state or country code corresponding to the issuer's registered address.zipCode(string) - The ZIP or postal code for the issuer's registered address.
issuerContactPhone(string) - The contact phone number provided for the issuer.nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold(string) - The name of the individual on whose behalf the securities are being sold.relationshipsToIssuer(string) - The relationship(s) between the selling individual and the issuer. The filing instructions suggestOfficer,Director,10% StockholderandMember of immediate family of any of the foregoingbut all other descriptions are valid as well.
securitiesInformation(array of object)securitiesClassTitle(string) - The title or class of the securities involved in the transaction.brokerOrMarketMakerDetails(object)name(string) - The name of the broker or market maker facilitating the securities transaction.address(object)street1(string) - The primary street address of the broker or market maker.street2(string) - The secondary street address of the broker or market maker, if provided.city(string) - The city where the broker or market maker is located.stateOrCountry(string) - The state or country code for the broker or market maker's address.zipCode(string) - The ZIP or postal code for the broker or market maker's address.
numberOfUnitsToBeSold(number) - The number of security units intended for sale in the transaction.aggregateMarketValue(number) - The total market value of the securities to be sold, typically derived from the unit price multiplied by the number of units.noOfUnitsOutstanding(number) - The total number of securities units outstanding for the issuer at the time of filing.approxSaleDate(date) - The approximate date when the sale of the securities is planned to take place. The date string format isYYYY-MM-DD, e.g.2024-05-17.securitiesExchangeName(string) - The name of the securities exchange where the transaction is to be executed.
securitiesToBeSold(array of object)securitiesClassTitle(string) - The title or class of the securities proposed for sale.acquiredDate(date) - The date on which the securities were acquired prior to the proposed sale. The date string format isYYYY-MM-DD, e.g.2024-05-17natureOfAcquisitionTransaction(string) - A description of the nature of the acquisition transaction, such as an employee stock award.nameOfPersonFromWhomAcquired(string) - The name of the person or entity from whom the securities were acquired, if applicable.isGiftTransaction(boolean) - A boolean flag indicating if the securities were acquired as a gift.donorAcquiredDate(date) - The date on which the donor acquired the securities, applicable if the transaction was a gift. The date string format isYYYY-MM-DD, e.g.2024-05-17amountOfSecuritiesAcquired(number) - The number of securities units acquired that are intended to be sold.paymentDate(date) - The date when payment for the securities acquisition was made, if applicable. The date string format isYYYY-MM-DD, e.g.2024-05-17natureOfPayment(string) - A description of the payment method or terms related to the securities acquisition.
nothingToReportFlagOnSecuritiesSoldInPast3Months(boolean) - A boolean flag indicating whether there have been no securities sales in the past three months.securitiesSoldInPast3Months(array of object)sellerDetails(object)name(string) - The name of the seller involved in securities transactions during the past three months.address(object)street1(string) - The primary street address of the seller in past securities sales.street2(string) - The secondary street address of the seller, if available.city(string) - The city associated with the seller's address in past transactions.stateOrCountry(string) - The state or country code for the seller's address in past securities sales.zipCode(string) - The ZIP or postal code for the seller's address in past transactions.
securitiesClassTitle(string) - The title or class of the securities sold in past transactions.saleDate(date) - The date on which a past securities sale occurred. The date string format isYYYY-MM-DD, e.g.2024-05-17amountOfSecuritiesSold(number) - The number of securities units sold in past transactions.grossProceeds(number) - The gross proceeds generated from the sale of securities in past transactions.
remarks(string) - Additional comments or remarks provided in the submission.noticeSignature(object)noticeDate(date) - The date on which the notice was signed. The date string format isYYYY-MM-DD, e.g.2024-05-17planAdoptionDates(array of date) - A list of dates indicating when the plans are being adopted. The date string format isYYYY-MM-DD, e.g.2024-05-17.signature(string) - The signature of the individual authorizing or submitting the notice.
Response Example
1
{
2
"total": {
3
"value": 10000,
4
"relation": "gte"
5
},
6
"data": [
7
{
8
"id": "14c7ece60fbb068dbdccb0be165a8927",
9
"accessionNo": "0001968582-25-000183",
10
"formType": "144",
11
"filedAt": "2025-03-13T16:51:34-04:00",
12
"entities": [
13
{
14
"cik": "1652044",
15
"ticker": "GOOG",
16
"companyName": "Alphabet Inc. (Subject)",
17
"irsNo": "611767919",
18
"fiscalYearEnd": "1231",
19
"stateOfIncorporation": "DE",
20
"sic": "7370 Services-Computer Programming, Data Processing, Etc.",
21
"type": "144",
22
"act": "33",
23
"fileNo": "001-37580",
24
"filmNo": "25736580"
25
},
26
{
27
"cik": "1983744",
28
"companyName": "LAWRENCE PAGE TRUST III (Reporting)",
29
"irsNo": "516574378"
30
}
31
],
32
"issuerInfo": {
33
"issuerCik": "1652044",
34
"issuerTicker": "GOOG",
35
"issuerName": "Alphabet, Inc.",
36
"secFileNumber": "001-37580",
37
"issuerAddress": {
38
"street1": "1600 Amphitheatre Parkway",
39
"city": "Mountain View",
40
"stateOrCountry": "CA",
41
"zipCode": "94043"
42
},
43
"issuerContactPhone": "650-253-0000",
44
"nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold": "The Lawrence Page Trust III",
45
"relationshipsToIssuer": "Affiliate"
46
},
47
"securitiesInformation": [
48
{
49
"securitiesClassTitle": "Class A Common Stock",
50
"brokerOrMarketMakerDetails": {
51
"name": "J.P. Morgan Securities LLC",
52
"address": {
53
"street1": "390 Madison Avenue, 6th Floor",
54
"city": "New York",
55
"stateOrCountry": "NY",
56
"zipCode": "10017"
57
}
58
},
59
"numberOfUnitsToBeSold": 16480,
60
"aggregateMarketValue": 2736504,
61
"noOfUnitsOutstanding": 5833000000,
62
"approxSaleDate": "2025-03-13",
63
"securitiesExchangeName": "NASDAQ"
64
},
65
{
66
"securitiesClassTitle": "Class C Capital Stock",
67
"brokerOrMarketMakerDetails": {
68
"name": "J.P. Morgan Securities LLC",
69
"address": {
70
"street1": "390 Madison Avenue, 6th Floor",
71
"city": "New York",
72
"stateOrCountry": "NY",
73
"zipCode": "10017"
74
}
75
},
76
"numberOfUnitsToBeSold": 16480,
77
"aggregateMarketValue": 2768640,
78
"noOfUnitsOutstanding": 5497000000,
79
"approxSaleDate": "2025-03-13",
80
"securitiesExchangeName": "NASDAQ"
81
}
82
],
83
"securitiesToBeSold": [
84
{
85
"securitiesClassTitle": "Class A Common Stock",
86
"acquiredDate": "2006-05-26",
87
"natureOfAcquisitionTransaction": "Distribution for no consideration",
88
"nameOfPersonFromWhomAcquired": "J.P. Morgan Trust Company of Delaware & Lawrence Page as trustees of the GRAT dated 03/15/04",
89
"isGiftTransaction": false,
90
"amountOfSecuritiesAcquired": 16480,
91
"paymentDate": "2006-05-26",
92
"natureOfPayment": "N/A"
93
},
94
{
95
"securitiesClassTitle": "Class C Capital Stock",
96
"acquiredDate": "2014-04-02",
97
"natureOfAcquisitionTransaction": "Stock Dividentd",
98
"nameOfPersonFromWhomAcquired": "Issuer",
99
"isGiftTransaction": false,
100
"amountOfSecuritiesAcquired": 16480,
101
"paymentDate": "2014-04-02",
102
"natureOfPayment": "Stock Dividend"
103
}
104
],
105
"nothingToReportFlagOnSecuritiesSoldInPast3Months": false,
106
"securitiesSoldInPast3Months": [
107
{
108
"sellerDetails": {
109
"name": "The Lawrence Page Trust",
110
"address": {
111
"street1": "C/o Alphabet, Inc.",
112
"street2": "1600 Amphitheatre Parkway",
113
"city": "Mountain View",
114
"stateOrCountry": "CA",
115
"zipCode": "94043"
116
}
117
},
118
"securitiesClassTitle": "Class A Common Stock",
119
"saleDate": "2025-01-10",
120
"amountOfSecuritiesSold": 53980,
121
"grossProceeds": 10412616
122
},
123
{
124
"sellerDetails": {
125
"name": "The Lawrence Page Trust",
126
"address": {
127
"street1": "C/o Alphabet, Inc.",
128
"street2": "1600 Amphitheatre Parkway",
129
"city": "Mountain View",
130
"stateOrCountry": "CA",
131
"zipCode": "94043"
132
}
133
},
134
"securitiesClassTitle": "Class C Capital Stock",
135
"saleDate": "2025-01-10",
136
"amountOfSecuritiesSold": 53980,
137
"grossProceeds": 10475881
138
}
139
],
140
"remarks": "The shares filed today will be sold by the Lawrence Page Trust III, J.P. Morgan Trust Company of Delaware as Trustee",
141
"noticeSignature": {
142
"noticeDate": "2025-03-13",
143
"planAdoptionDates": [
144
"2020-11-30"
145
],
146
"signature": "/s/ J.P. Morgan Securities LLC as agent and attorney-in-fact for The Lawrence Page Trust III"
147
}
148
},
149
// cut off for brevity
150
]
151
}
152
Rule 144 Key Aspects
Rule 144 under the Securities Act of 1933 provides a safe harbor exemption that allows the public resale of restricted and control securities without SEC registration, under specific conditions.
Provisions of Rule 144
- Permits Resale of Restricted and Control Securities
- Restricted Securities: Shares acquired in private placements or other unregistered offerings.
- Control Securities: Shares held by affiliates (e.g., officers, directors, or large shareholders who control the company).
- Holding Period Requirement
- For Reporting Companies (SEC filers): At least 6 months if the issuer is current in its SEC reporting.
- For Non-Reporting Companies: At least 1 year before selling.
- Volume Limitations (for Affiliates)
If the seller is an affiliate of the company, the amount of securities sold within a three-month period is limited to the greater of:
- 1% of the outstanding shares of the company, or
- The average weekly trading volume over the past four weeks.
These restrictions do not apply to non-affiliates after the holding period.
- Manner of Sale Requirements (for Affiliates)
- Must be sold through broker transactions or market makers.
- No solicitation of buyers is allowed.
- Form 144 Filing Requirement (for Large Sales)
- Only for affiliates, if selling more than 5,000 shares or $50,000 in value within a three-month period.
- Must be filed before the sale order is placed.
Rationale for SEC Rule 144
- Allows investors and insiders to sell securities without full SEC registration.
- Helps ensure that sales don't manipulate the market or violate investor protections.
Restricted and Control Securities in Form 144
Restricted Securities
Restricted securities are securities acquired in private, unregistered transactions. They are not freely tradable in public markets until specific conditions under SEC Rule 144 are met.
Examples of restricted securities include:
- Stock acquired through private placements
- Employee stock benefit plans
- Securities obtained via mergers or reorganization
Control Securities
Control securities are held by affiliates of the issuing company, such as directors, officers, or major shareholders. These securities are subject to trading limitations under Rule 144, even if they were acquired in open-market transactions.
Examples of control securities include:
- Shares held by a company CEO
- Stock owned by a board member
- Large holdings of a 10%+ shareholder
FAQ
Common questions about querying the Form 144 API - Restricted Sales Notifications, the response shape, and the bulk archives.
How do I find the most recent notices of planned insider stock sales for a specific company by its ticker symbol?
Use the /form-144 endpoint, which returns Form 144 filings—the notices corporate insiders file before selling restricted or control securities. To pull the most recent planned-sale notices for one company, filter on the issuer's stock ticker, which is recorded both on the issuer object (issuerInfo.issuerTicker) and on the subject company entry in the entities array (entities.ticker). For example, set the ticker to GE for General Electric or HSY for Hershey.
Results are sorted by the filing acceptance timestamp (filedAt) in descending order by default, so the newest notices come back first. Each result carries the company name (issuerInfo.issuerName), the person whose account the shares are being sold from (issuerInfo.nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold), and the planned sale details (securitiesInformation).
How do I look up all planned insider sale notices for a company when I only have its SEC identifier?
Use the /form-144 endpoint and filter on the company's Central Index Key, the unique identifier the SEC assigns to each filer. The issuer CIK appears on the issuer object (issuerInfo.issuerCik) and is also present in the entities array on the subject company entry (entities.cik). For example, the value 47111 identifies Hershey and 40545 identifies General Electric.
Because every Form 144 lists the subject company and the reporting person as separate entries in the entities array, filtering on the issuer CIK specifically (issuerInfo.issuerCik) targets the company rather than the insider. Results are returned newest-first by filing date (filedAt).
How can I retrieve a single planned-sale notice if I already know its filing accession number?
Use the /form-144 endpoint and filter on the accession number, the unique identifier EDGAR assigns to each filing (accessionNo), for example 0001950047-25-002675. Each accession number maps to exactly one Form 144 filing, so this returns a single record.
The response includes the full filing object—the form type (formType), the filing timestamp (filedAt), the issuer and reporting person details, the securities planned for sale (securitiesInformation), and any sales reported in the prior three months (securitiesSoldInPast3Months).
How do I pull all Form 144 filings submitted within a specific date range?
Use the /form-144 endpoint and filter on the filing acceptance timestamp (filedAt), which records when EDGAR accepted the filing, for example 2024-05-15T16:17:15-04:00. To restrict results to a window, the value of filedAt should fall between a start date and an end date, such as on or after 2024-01-01 and on or before 2024-12-31.
Results are sorted by filedAt in descending order by default. To page through a large date range, advance the from offset across requests while keeping size at its maximum of 50.
How do I find planned insider sales where the dollar value of the shares being sold exceeds a certain threshold?
Use the /form-144 endpoint and filter on the aggregate market value of the securities to be sold (securitiesInformation.aggregateMarketValue), which is the total intended sale value, typically the unit price multiplied by the number of units. To find sizable planned sales, the value of this field should be greater than your chosen threshold, such as greater than 1000000 for sales above one million dollars.
Note that securitiesInformation is an array, so a single filing can list more than one block of securities—for example separate Class A and Class C entries—each with its own aggregateMarketValue. A filing matches when any entry meets the threshold.
How can I identify the largest planned insider stock sales by intended sale value and rank them?
Use the /form-144 endpoint and sort results by the aggregate market value of the securities to be sold (securitiesInformation.aggregateMarketValue) in descending order, which places the highest-value planned sales first. The sort parameter controls the ordering field and direction, overriding the default sort by filing date.
To focus the ranking, combine the sort with a query—for example restricting to a single company by its issuer CIK (issuerInfo.issuerCik) or to a date range on filedAt. Each result reports the intended number of units (securitiesInformation.numberOfUnitsToBeSold) alongside the dollar value.
How do I filter planned-sale notices to only those filed by company officers versus directors versus large shareholders?
Use the /form-144 endpoint and filter on the relationship between the selling person and the issuer (issuerInfo.relationshipsToIssuer). The filing instructions suggest values such as Officer, Director, 10% Stockholder, and Member of immediate family of any of the foregoing, though other descriptions appear as well—for instance Affiliate.
To isolate one group, the value of issuerInfo.relationshipsToIssuer should match the relationship you want, such as Director for board members or Officer for executives. Because the field is free text, allow for variant phrasings when the underlying relationship is the same.
How do I find planned insider sales for all companies in a particular industry, such as software or semiconductors?
Use the /form-144 endpoint and filter on the Standard Industrial Classification code of the subject company (entities.sic), which identifies the company's primary industry. For example, 7372 covers prepackaged software and 3674 covers semiconductors and related devices.
The SIC code is recorded on the subject company entry inside the entities array, and in the sample data it can appear with a trailing description, such as 7372 Services-Prepackaged Software. Filtering on the numeric code returns Form 144 filings across every company in that industry.
How do I locate planned insider sales for companies incorporated in a specific U.S. state?
Use the /form-144 endpoint and filter on the issuer's state of incorporation (entities.stateOfIncorporation), recorded on the subject company entry in the entities array as a two-letter code, such as DE for Delaware, OH for Ohio, or NY for New York.
Set the value of entities.stateOfIncorporation to the state code you want. Note this is the legal state of incorporation, which is distinct from the issuer's mailing address state (issuerInfo.issuerAddress.stateOrCountry).
How can I separate amended planned-sale notices from original ones?
Use the /form-144 endpoint and filter on the form type (formType). Original notices carry the value 144, while amendments carry 144/A. To see only amendments, the value of formType should be 144/A; to see only originals, it should be 144.
An amendment corrects or updates a previously filed Form 144. Filtering on formType lets you study the two populations separately—for example, to count how often insiders revise their planned-sale notices.
How do I link an amended notice back to the original filing it corrects?
Use the /form-144 endpoint. When a filing is an amendment (its form type is 144/A), the accession number of the filing it corrects is recorded in the reference-to-prior-filing field (previousAccessionNumber).
To retrieve the original notice, take the value of previousAccessionNumber from the amendment and query the /form-144 endpoint again, filtering on the accession number (accessionNo) equal to that value. This returns the original Form 144 so you can compare it against the amendment.
How do I find all planned sales associated with a particular SEC file number?
Use the /form-144 endpoint and filter on the SEC file number, the identifier used to track filings tied to the same registration. It appears on the subject company entry in the entities array (entities.fileNo) and on the issuer object (issuerInfo.secFileNumber), for example 001-00183 for Hershey or 001-35451 for MACOM Technology Solutions.
Set the value of entities.fileNo or issuerInfo.secFileNumber to the file number you want. Both fields carry the same identifier in the sample data, so either targets the filings for that registration.
How can I search for planned insider sales by the name of the person whose account the shares are being sold from?
Use the /form-144 endpoint and filter on the name of the individual on whose behalf the securities are being sold (issuerInfo.nameOfPersonForWhoseAccountTheSecuritiesAreToBeSold), for example Russell Stokes or CHRISTOPHER JOYCE.
Note that the reporting person also appears as an entry in the entities array (entities.companyName), often suffixed with (Reporting), and that name formatting can vary in capitalization and word order across filings. When searching by name, allow for those variations to capture every notice for the same person.
How do I find all planned insider sales that route through a particular broker or market maker?
Use the /form-144 endpoint and filter on the name of the broker or market maker handling the sale (securitiesInformation.brokerOrMarketMakerDetails.name), for example Fidelity Brokerage Services LLC, J.P. Morgan Securities LLC, or Morgan Stanley Smith Barney LLC Executive Financial Services.
Because securitiesInformation is an array, a filing can list more than one block of securities, each with its own broker details. The broker's address is also available (securitiesInformation.brokerOrMarketMakerDetails.address) if you need to narrow by location.
How do I identify planned sales of a specific share class, such as Class A versus Class C stock?
Use the /form-144 endpoint and filter on the title or class of the securities to be sold (securitiesInformation.securitiesClassTitle), for example Class A Common Stock, Class C Capital Stock, or simply Common.
A single filing can plan sales across more than one class, with securitiesInformation holding a separate entry per class. The same class title also appears on each block of securities being sold (securitiesToBeSold.securitiesClassTitle). Note that class titles are free text and vary in wording and capitalization across filings.
How can I find planned sales intended to be executed on a particular stock exchange?
Use the /form-144 endpoint and filter on the name of the exchange where the transaction is to be executed (securitiesInformation.securitiesExchangeName), for example NYSE, NASDAQ, or OTC Markets.
This field is free text, so the same venue can appear under different labels—for instance NYSE, New York, and NEW YORK all refer to the New York Stock Exchange in the sample data. When filtering by exchange, account for these variant spellings.
How do I find planned insider sales where the shares being sold came from vested restricted or performance stock units?
Use the /form-144 endpoint and filter on the nature of the acquisition transaction for the securities to be sold (securitiesToBeSold.natureOfAcquisitionTransaction), which describes how the insider obtained the shares. Values tied to equity compensation include Restricted Stock Units, Vested Restricted Stock Units, Restricted Stock Vesting, RSU Vest, and Performance Stock Units.
The securitiesToBeSold array can hold several entries, each describing a separate acquisition lot with its own nature description. The supporting fields natureOfPayment and nameOfPersonFromWhomAcquired add context—compensatory awards are commonly acquired directly from the issuer.
How do I identify planned sales of securities that an insider received as a gift?
Use the /form-144 endpoint and filter on the gift flag for the securities to be sold (securitiesToBeSold.isGiftTransaction). When the shares were acquired as a gift, the value of this boolean is true.
For gifted securities, the date the donor originally acquired the shares is recorded separately (securitiesToBeSold.donorAcquiredDate), which matters for the Rule 144 holding period since the donor's holding time can carry over. The party the shares came from is also captured (securitiesToBeSold.nameOfPersonFromWhomAcquired).
How can I find planned sales where the insider held the shares for an unusually long time before deciding to sell?
Use the /form-144 endpoint and compare the date the securities were acquired (securitiesToBeSold.acquiredDate) against the approximate planned sale date (securitiesInformation.approxSaleDate). A long gap between the two indicates the insider held the shares for an extended period—for example, shares acquired in 2006 and planned for sale in 2025.
The /form-144 endpoint does not compute this gap for you; retrieve both date fields and measure the interval after the response is returned. Because securitiesToBeSold can list several acquisition lots, each lot's acquiredDate should be checked against the planned sale date.
How do I find notices where the insider reported no other sales of that company's stock in the prior three months?
Use the /form-144 endpoint and filter on the flag indicating no securities were sold in the past three months (nothingToReportFlagOnSecuritiesSoldInPast3Months). When the insider reports no prior sales, the value of this boolean is true.
When this flag is true, the array of prior sales (securitiesSoldInPast3Months) is typically absent from the filing. When it is false, that array is populated with the details of the recent sales.
How can I retrieve the details of an insider's actual sales over the three months before a planned-sale notice, including how much they sold and what they raised?
Use the /form-144 endpoint and read the array of securities sold in the past three months (securitiesSoldInPast3Months). Each entry records one prior sale, with the number of units sold (securitiesSoldInPast3Months.amountOfSecuritiesSold), the gross proceeds raised (securitiesSoldInPast3Months.grossProceeds), the sale date (securitiesSoldInPast3Months.saleDate), and the share class (securitiesSoldInPast3Months.securitiesClassTitle).
Each entry also carries the seller's name and address (securitiesSoldInPast3Months.sellerDetails). This array is present only when the no-prior-sales flag (nothingToReportFlagOnSecuritiesSoldInPast3Months) is false.
How do I total up the cash an insider has already raised from recent sales of a company's stock?
Use the /form-144 endpoint and read the array of securities sold in the past three months (securitiesSoldInPast3Months). Each entry reports the gross proceeds from one sale (securitiesSoldInPast3Months.grossProceeds). Summing grossProceeds across every entry in that array gives the total cash the insider raised from recent sales reported on that notice.
The /form-144 endpoint does not return this total directly; retrieve the array and add the per-sale proceeds after the response is returned. The array is populated only when the no-prior-sales flag (nothingToReportFlagOnSecuritiesSoldInPast3Months) is false.
How can I tell whether a planned insider sale is being executed under a pre-arranged trading plan?
Use the /form-144 endpoint and inspect the plan adoption dates on the notice signature (noticeSignature.planAdoptionDates). When this array is present and holds one or more dates, the sale is being made under a pre-arranged trading plan, with each date marking when a plan was adopted.
A second signal sits in the prior-sales array: the seller name (securitiesSoldInPast3Months.sellerDetails.name) sometimes contains the text 10b5-1, the SEC rule that governs pre-arranged trading plans—for example 10b5-1 Sales Plan for RAJEEV RAJAN. Filtering for that text in the seller name surfaces sales executed under such plans.
How do I find planned insider sales where the shares would represent a meaningful fraction of the company's outstanding stock?
Use the /form-144 endpoint and compare the number of units to be sold (securitiesInformation.numberOfUnitsToBeSold) against the total units outstanding for the issuer (securitiesInformation.noOfUnitsOutstanding). Dividing the planned units by the units outstanding gives the fraction of the company's stock the sale represents.
The /form-144 endpoint does not compute this ratio; retrieve both fields from each securitiesInformation entry and calculate it after the response is returned. This ratio is also relevant to Rule 144's volume limitation, which caps an affiliate's three-month sales at the greater of one percent of outstanding shares or the average weekly trading volume.
How can I find planned-sale notices that were filed by an attorney-in-fact or broker representative rather than signed directly by the insider?
Use the /form-144 endpoint and inspect the signature text on the notice (noticeSignature.signature). When a notice is filed on the insider's behalf, the signature names a representative and contains phrasing such as attorney-in-fact for or as agent—for example /s/ J.P. Morgan Securities LLC as agent and attorney-in-fact for Charles Bland. Directly signed notices instead show the insider's own name.
The signature is free text, so filtering on terms like attorney-in-fact or as agent within noticeSignature.signature surfaces notices submitted by brokers or other representatives.
How do I read any free-text explanations or comments an insider added to a planned-sale notice?
Use the /form-144 endpoint and read the remarks field (remarks), which holds any additional comments the filer added to the notice. For example, a remark may explain that the shares to be sold were acquired upon the vesting of restricted stock units over a stated period.
The remarks field is optional and is absent when the filer added no comments. You can also search within it as free text to find notices whose remarks mention a particular topic.
How can I track the overall trend in planned insider selling activity for one company over time?
Use the /form-144 endpoint and filter on the issuer CIK (issuerInfo.issuerCik) to isolate one company, then sort by the filing timestamp (filedAt) to order the notices chronologically. This produces the company's Form 144 filings in time sequence.
To measure the trend, read the aggregate market value of each planned sale (securitiesInformation.aggregateMarketValue) and group the values by period—for example by month or quarter of filedAt. The /form-144 endpoint returns the underlying records; the aggregation is performed after the responses are collected, paging through results with the from and size parameters when there are many filings.
How do I page through a large set of planned-sale notices when there are more matches than one response can return?
Use the /form-144 endpoint with the from and size pagination parameters. The size parameter sets how many filings come back in one response, with a maximum of 50 and a default of 50. The from parameter sets the starting offset into the result set, defaulting to 0.
To walk through a large result set, keep size at 50 and advance from by 50 on each successive request—0, then 50, then 100, and so on. The from offset can go up to 10000, so pagination reaches at most 10,000 filings for a single query. Keep the sort order stable across requests, such as the default sort by filedAt descending, so pages do not overlap or skip records.
How can I compare planned insider selling across several companies to see where insiders are cashing out the most?
Use the /form-144 endpoint and query for the companies you want to compare—for example by their issuer CIKs (issuerInfo.issuerCik) or tickers (issuerInfo.issuerTicker). For each company, read the aggregate market value of the planned sales (securitiesInformation.aggregateMarketValue) from the returned filings.
The /form-144 endpoint does not aggregate across companies; collect the filings per issuer, then sum aggregateMarketValue for each company after the responses are returned to see which companies show the largest planned insider selling. Page through results with the from and size parameters when a company has many notices.
How do I find planned insider sales filed by holders located outside the United States, such as trusts or foreign sellers?
Use the /form-144 endpoint and filter on address fields that carry a non-U.S. state or country code. The seller's location on prior sales is recorded in the prior-sales array (securitiesSoldInPast3Months.sellerDetails.address.stateOrCountry), and the broker handling the sale has its own location (securitiesInformation.brokerOrMarketMakerDetails.address.stateOrCountry), which can sit outside the United States—for example a Grand Cayman address.
The reporting person itself appears as an entry in the entities array (entities.companyName), commonly suffixed with (Reporting), which is where trusts and individual filers are identified. Combine the non-U.S. address codes with the reporting entity name to surface notices tied to foreign or trust-based holders.
References
For more information about Form 144 filings, visit the following SEC websites: