Contents Lesson 14 of 17

4 min read · practitioner

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 an M so often sits beside an S funding it. The derivative block'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

  1. Here is one Form 4 filing from /sec-filings/AAPL.US/form4, pinned with filter[from]=2026-09-15&filter[to]=2026-09-17: Jennifer Newstead again, three months after the filing above. Reconcile the shares_owned_after chain. Every row should equal the previous one plus or minus its own shares_amount. Work back to what she held before the first row, and say which of the three rows reached the market.
Live API response: mda1 apple form4 september 2026
  1. 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_derivative blocks held 80 rows. Their transaction_code values counted as below. Work out what fraction is M and F, and what fraction is an open-market sale.
transaction_code rows
S 38
M 22
F 15
G (a gift) 5
  1. Here is the footnotes array of the September filing from step 1. Find the sentence that explains its disposal. It is usually right there.
Live API response: mda12 apple form4 footnotes september 2026