---
title: "A ticker search also returns rows this issuer FILED UNDER SYMBOLS IT NO LONGER LISTS (renames, filer typos, ADR spellings)"
method: GET
path: "/v1/planned-insider-sales"
---

# A ticker search also returns rows this issuer FILED UNDER SYMBOLS IT NO LONGER LISTS (renames, filer typos, ADR spellings)

`GET /v1/planned-insider-sales`

## Request

- Base URL: `https://api.keyvex.com`
- URL: `https://api.keyvex.com/v1/planned-insider-sales`
- Auth: API key in header `x-api-key`

A ticker search also returns rows this issuer FILED UNDER SYMBOLS IT NO LONGER LISTS (renames, filer typos, ADR spellings). Each row keeps `ticker` as SEC received it and gains `current_ticker` when the issuer trades under a different symbol today. Separately-listed share classes are NOT merged, and asking for a RETIRED symbol returns only rows filed under it — retired symbols get reissued to other companies. Returns Form 144 filings — notices of proposed sale by corporate insiders (officers, directors, 10%+ holders) under Rule 144 of the Securities Act. Each record is one planned-sale line from one filing.  ⚠ aggregate_market_value is NULLABLE. A Form 144 that did not state a value now reports null rather than 0 — but a filer who genuinely stated 0.00 still reports 0, and that happens. Null never satisfies min_value and sorts last.  ⚠ AND SOME FILERS STATE THE ISSUER'S MARKET CAP IN THAT BOX, WHICH PUTS THEM AT THE TOP OF A DESCENDING VALUE SORT. Measured 2026-09-04: 5 of the top 100 — SYF 4,000 shares stating $25.24bn ($6.31m per share), IT 860 shares stating $11.72bn. Dividing those by shares_outstanding on the same row gives $77.57 and $185.66, which are the real share prices. ⚠ THE CHECK CATCHES TWO OF THOSE FIVE, NOT ALL FIVE, AND SAYS SO RATHER THAN OVERSTATING ITSELF. TCMD, EPSM and XHR imply $36,017, $17,577 and $16,686 per share — absurd for those issuers, but below BRK.A's real $740,000 peak, so no per-row test separates them from a genuine high-priced sale. They still read 'checked'. Settling them needs a comparison against the day's actual price bar. Every row therefore carries aggregate_market_value_check:   'checked'          the value implies a plausible price for the shares sold   'not_stated'       no value was filed (distinct from a filed 0.00)   'no_share_count'   no share count, so the check could not run   'implausible_looks_like_market_cap'                      implies a per-share price above any that has traded,                      and shares_outstanding yields a plausible one instead   'implausible_unexplained'                      implies an impossible price and shares_outstanding does                      not explain it — we can say it is not the sale value                      without being able to say what it is ⚠ The number is NOT corrected. SEC's bytes are served exactly as filed, and we do not invent a value the filer never stated. If you rank by this field, exclude anything whose check does not read 'checked' — otherwise the top of your list is market capitalisations.  Use this when the user asks about: insiders who have announced they're about to sell, upcoming insider sales at a specific company, large planned sales by value, or which executives are signaling intent to exit positions.  Form 144 is a *forward-looking* signal. It's filed BEFORE the actual sale, which later lands as a Form 4. The complement to get_insider_transactions: that tool tells you what insiders just did, this one tells you what they're about to do. Filing thresholds: ≥5,000 shares OR ≥$50,000 aggregate value.  The aggregate_market_value is the insider's estimate at filing time; the actual sale price/value can differ. The approximate_sale_date is also an estimate — the real Form 4 transaction_date may be days later.  Most Form 144 filings list one security line, but a single filing can cover multiple share classes (e.g., separate Class A + Class B). Each line is returned as its own record.

## Query parameters

- `ticker` string
- `company_cik` string
- `filer_name` string
- `min_value` number
- `since` string
- `until` string
- `sort_by` 'filing_date' | 'approximate_sale_date' | 'aggregate_market_value'
- `sort_order` 'desc' | 'asc'
- `limit` integer

## Response `200`

JSON envelope: { results: [...], count, has_more }.

## Other responses

- `400`: Invalid parameter.
- `401`: Missing or invalid API key.
- `402`: This tool requires a higher plan (upgrade_required). Retrying will not help.
- `429`: Tier rate/quota limit reached (rate_limited). Retry-After points at the reset.

---

[API](https://skmtc.dev/keyvex/apis/keyvex-api.md) · [All operations](https://skmtc.dev/keyvex/apis/keyvex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/keyvex/apis/keyvex-api/revisions/01c0210c19cd?raw)
