news

Insider cluster buys (several insiders of one issuer buying together)

Episodes in which several different insiders of one issuer bought on the open market together: an issuer's Form 4 purchase dates are chained into one episode while consecutive purchases are at most 10 days apart (an episode is cut at 30 days), and every purchase inside it is examined before a buyer counts.

Counting names is not enough — the loudest look-alikes are an IPO or PIPE allocation (caught by its price shape, or by the filing's own footnote saying the shares came from the issuer, an offering or a negotiated block), a mutual-bank conversion, ESPP / DRIP / director-plan lots, the same transaction reported through two owners (a director via the fund and the fund itself), and plan lots sitting next to one real purchase. Each buyer therefore carries a role: independent buyers are the cluster; plan_like (with reason when the filing's words decided it), unpriced and duplicate_of buyers are listed so you can see why a 30-name filing burst is not one. The episode's pattern is open_market when at least two independent buyers remain and one of them is an officer or director, holders_only when only 10% holders without a role remain, and plan_or_offering otherwise. The default hides everything but open_market; ask for the rest explicitly. The rule was fixed against 90 episodes checked by hand against the filings (2026-09-22): it shows 58 of 58 real clusters and hides 29 of 30 look-alikes; a 401(k) plan purchase can still pass, since the filing says so only in a footnote.

days is measured on known_at — the moment the episode's latest filing reached EDGAR — so "what became known this month" is one call. A purchase filed more than ~40 days after the trade is not chained (2.3% of Form 4 purchases). Coverage starts at meta.coverage_since (the tranche table begins in August 2025); this is a descriptive screen (research_only, not point-in-time), with no returns attached. Only common-stock purchases outside Rule 10b5-1 plans are considered; units, preferred and warrants are ignored.

get/api/news/insider/clusters/

Query parameters

daysinteger

Lookback in days over known_at, 1-90, default 30. Deeper than your plan's archive horizon (Free 30, Basic 90) returns 403.

min_buyersinteger

Minimum headcount, 2-10, default 2: independent buyers for open_market / holders_only episodes, everyone who bought (buyers_total) for plan_or_offering ones, where by construction fewer than two buyers are independent.

min_usdinteger

Drop episodes whose total_usd is below this. An episode with an unknown total (value_partial with no priced fill) is kept, not dropped — a missing number is not a small one.

pattern'open_market' | 'plan_or_offering' | 'holders_only' | 'all'

open_market (default), plan_or_offering, holders_only, or all. Insiders taking a $70M IPO allocation is an event too; it is labeled, not hidden, when you ask for it.

symbolstring
Example:NVDA

One ticker. A renamed company's current ticker also matches episodes tagged with its former ticker, and share-class siblings (GOOGL / GOOG) match each other. A delisted ticker still returns its episodes when named explicitly; the unfiltered list shows active listings only. ticker is accepted as an alias.

sort'recent' | 'buyers' | 'value'

recent (default) — newest known_at first; buyers — most independent buyers first, ties by value; value — largest total_usd first, unknown totals last. Cursors are sort-specific.

cursorstring

Opaque cursor from a prior response's next_cursor, with the same sort. Omit for the first page.

page_sizeinteger

Items per page, default 10; 1-20 on every tier, 21-50 with a Pro key. limit is accepted as an alias.

Response

A page of classified purchase episodes, newest known first by default.

next_cursorstring nullable required

Opaque cursor for the next page (pass back with the same sort); null at the end.

Example response

{
  "results": [
    {
      "ticker": "AMRZ",
      "name": "Amrize Ltd",
      "buyers_detail": [
        {
          "name": "Jenisch Jan Philipp",
          "title": "Chairman & CEO"
        }
      ],
      "filings_detail": [
        {
          "accession_number": "0002035989-26-000078"
        }
      ]
    }
  ],
  "meta": {
    "episode_gap_days": 10,
    "episode_max_days": 30,
    "research_only": true
  }
}

Changes