What does an insider transaction record actually say?
"The CFO sold $4.8 million of stock" is a headline that writes itself. Here is the record that produced one such line, taken live from Apple's Form 4 filings, and here is why the headline would have been wrong.
Two endpoints, very different depth
The flat feed — /insider-transactions — takes limit (1–1000, default 100), from (defaults to one year ago), to (defaults to today), code (a ticker filter) and fmt (json only). It returns a simple array: code, exchange, date, reportDate, ownerName, ownerTitle, transactionDate, transactionCode, transactionAmount, transactionPrice, transactionAcquiredDisposed (A or D), postTransactionAmount, and a link to the filing.
It is thin, and honestly so. In live rows checked for this lesson, ownerCik, ownerRelationship, postTransactionAmount and link all came back null on several records; transactionPrice came back 0 where no price was captured; and transactionCode is effectively narrowed to P (purchase) and S (sale). Coverage is US-only, from SEC Form 4. A filtered call for one large-cap returned an empty array for a period in which the richer endpoint held hundreds of filings — so treat an empty result here as "not in this feed," not as "no insider activity."
The Form 4 endpoint — /sec-filings/{SYMBOL}/form4 — is the detailed one. It costs 10 API calls per request, paginates JSON:API style with page[limit] (1–100) and page[offset], and returns meta.total. For AAPL.US that total was 597 filings on 2026-07-28 and 605 on 2026-09-28; it grows with every filing. Each filing carries three blocks: non_derivative (common stock), derivative (options, RSUs, warrants), and footnotes.
One real filing, read properly
Apple filing 0001140361-26-025620, filed 2026-06-17 for period 2026-06-15. Ben Borders, Principal Accounting Officer. Three non-derivative rows:
| code | A/D | shares | price | held after |
|---|---|---|---|---|
M |
A | 240 | — | 38,953 |
F |
D | 124 | 296.42 | 38,829 |
S |
D | 116 | 295.14 | 38,713 |
Two disposals out of three rows. A naive counter reads "insider sold 240 shares."
Now follow the arithmetic. He held 38,713 before the filing. M settled 240 restricted stock units into shares. F withheld 124 shares to pay the tax on that vesting — footnote F2: "Shares withheld by Apple to satisfy tax withholding requirements on vesting of RSUs." S sold 116 under a plan adopted in advance — footnote F3: "pursuant to a Rule 10b5-1 trading plan." Net: +240 − 124 − 116 = 0. He ended at 38,713, exactly where he started.
The companion filing is starker. Jennifer Newstead, SVP and General Counsel: M acquired 30,104, F disposed 16,238 at 296.42 — $4,813,267.96. There is the $4.8 million "sale." Footnote F2 on that filing says, in the issuer's own words: *"Shares withheld by Apple to satisfy tax withholding requirements on vesting of RSUs. No shares were sold."* Her holding went from 27,680 to 41,546 — it rose by 13,866.
The codes are the lesson
M— exercise or conversion of a derivative under Rule 16b-3. That is an RSU settling into stock, where no cash moves, or an option being exercised, where the insider pays the strike — which is why anMso often sits beside anSfunding it. Thederivativeblock's exercise price is what tells the two apart.F— shares withheld by the issuer to pay tax. A disposal in the filing, but nothing reached the market.S— an open-market sale. The only one of the three that is a sale at all, and here it ran under a 10b5-1 plan set months earlier.P— an open-market purchase.
Aggregate acquired_or_disposed without reading transaction_code and the footnotes, and routine compensation mechanics turn into a story about executives dumping stock. The data did not mislead anyone; it was summarised badly.
This is a description of how compensation appears in filings, nothing more. Insider records are not a signal this course endorses reading, in either direction.
Try it now
- Here is one Form 4 filing from
/sec-filings/AAPL.US/form4, pinned withfilter[from]=2026-09-15&filter[to]=2026-09-17: Jennifer Newstead again, three months after the filing above. Reconcile theshares_owned_afterchain. Every row should equal the previous one plus or minus its ownshares_amount. Work back to what she held before the first row, and say which of the three rows reached the market.
- Across Apple's 50 newest Form 4 filings on 28 September 2026 (periods of report from 8 August 2025 to 22 September 2026), the
non_derivativeblocks held 80 rows. Theirtransaction_codevalues counted as below. Work out what fraction isMandF, and what fraction is an open-market sale.
transaction_code |
rows |
|---|---|
S |
38 |
M |
22 |
F |
15 |
G (a gift) |
5 |
- Here is the
footnotesarray of the September filing from step 1. Find the sentence that explains its disposal. It is usually right there.