Insider transactions (Form 4)

Trades insiders report on SEC Form 4 (and Form 5), nested filing then transactions, with the insiders, footnotes and links to the filing. A trade's direction is its acquired_disposed_code (A or D). Rows failing a consistency check carry data_quality_flags and are left out unless include_anomalies is true; the count left out is reported.

MCP toolCLI command
akkru_insider_transactionsakkru insider-transactions

#Actions

ActionWhat it does
listOne company's (ticker or cik) and/or one insider's (insider_cik) filings. 30 credits per page.
statsTotals over a date window for one company and/or insider, with the ids of every transaction counted. 40 credits plus 5 per 1,000 transactions counted.
getTransactions by id (from stats), up to 100. 10 credits per 5 ids.
insidersEveryone who filed a Form 4 for one company, one row per CIK, with roles, latest title and filing counts; gives the insider_cik the other actions take. 30 credits.
typesThe transaction codes with their official names. Free.
tickersThe companies with Form 4 data, 500 per page. 30 credits per page.
searchScreen every company's trades with trade_filters and aggregate_filters. Pro plan or higher; 65-920 credits.

A company outside your plan's coverage returns 403 and the call is still charged.

#Parameters

tickerstring

Company ticker, e.g. "AAPL" (US), "000100" (Korea), "1332" (Japan), "VIRI_F" (Europe), "600519_CN" (China A-share); any symbol the company has traded under.

cikstring

Company SEC CIK, digits, e.g. "320193"; any CIK the company has filed under. Give ticker or cik, not both.

insider_cikstring

Insider SEC CIK, digits (from action "insiders").

transaction_codearray of string

SEC transaction codes to keep, e.g. ["P", "S"] (up to 20; action "types" lists them). Unknown codes are dropped and reported in _warnings.

transaction_form_typestring

Only "4" or only "5".

relationshiparray of string

list, stats: the role on the filing, any of "is_director", "is_officer", "is_ten_percent_owner", "is_other". insiders: a role ever reported, any of "ever_director", "ever_officer", "ever_ten_percent_owner", "ever_other".

include_unresolved_amendmentsboolean

true: include amendments that could not be matched to their original filing.

exclude_likely_mergedboolean

true: leave out filings whose amendment match is only probable.

include_anomaliesboolean

true: include rows that fail a consistency check (left out by default).

start_datestring

Window start, transaction date "YYYY-MM-DD".

as_of_datestring

Window end, transaction date "YYYY-MM-DD" (not in the future); filings submitted after it are left out too.

methodstring

"ad" (default): totals by acquired_disposed_code; "ps": P as a buy and S as a sell, only those two codes. One of ad, ps.

is_derivativeboolean

true: derivative rows only; false: non-derivative rows only.

ids_pageinteger

Page of transaction_ids in the stats response (default 1).

ids_page_sizeinteger

transaction_ids per page, 1-1,000 (default 200).

transaction_idsarray of integer

Transaction ids from action "stats" (1-100).

tickersarray of string

Only these companies (up to 100); any symbol a company has traded under. Default: every company.

exclude_tickersarray of string

Leave these companies out (up to 100).

sectorsarray of string

Only companies in these sectors (names from the catalog action of Computed metrics). Pro plan or higher.

trade_filtersobject

Trade-level filters: transaction_code, relationship, is_derivative, principal_amount_not_shares, include_anomalies, exclude_likely_merged, include_unresolved_amendments, and up to 8 conditions {field, op, value} on transaction_value, price_per_share, shares, own_pct_change, split_adjusted_shares or split_adjusted_price.

aggregate_filtersarray of object

Company-level conditions (up to 8) {metric, op, value} on value_acquired, value_disposed, net_value, shares_acquired, shares_disposed, net_shares, txn_count, txn_count_acquired, txn_count_disposed, max_txn_value_acquired, max_txn_value_disposed or distinct_insiders. Operators for both: >, >=, <, <=, between ([low, high]).

group_by_tickerboolean

true (default): one row per company; false: one row per transaction.

sort_bystring

Grouped: ticker or txn_count. One row per transaction: transaction_date, filing_date, transaction_value, shares, price_per_share, own_pct_change, split_adjusted_shares or split_adjusted_price.

sort_orderstring

"desc" (default) or "asc".

pageinteger

Page number, from 1; the response's next_page gives the next one.

page_sizeinteger

list, get: filings per page; search: rows per page, with page times page_size at most 500; tickers: companies per page, up to 500.

detailstring

Response detail, same price at every level: "full" (default) returns everything; "light" leaves out the bulkiest fields, such as breakdown lists; "minimal" returns only the values and what identifies them, without sources or calculation details. Every action takes it; a call without detail levels ignores it. Try "light" or "minimal" for shorter replies that use less context and fewer tokens. One of full, light, minimal.

#Examples

MCP
{"action": "list", "ticker": "AAPL", "transaction_code": ["P", "S"], "page_size": 5}
CLI
akkru insider-transactions list --ticker AAPL --page-size 5 --json '{"transaction_code": ["P", "S"]}'
MCP
{"action": "stats", "ticker": "AAPL", "start_date": "2025-01-01"}
CLI
akkru insider-transactions stats --ticker AAPL --start-date 2025-01-01
MCP
{"action": "get", "transaction_ids": [5144965, 5144966, 5144967]}
CLI
akkru insider-transactions get --json '{"transaction_ids": [5144965, 5144966, 5144967]}'
MCP
{"action": "insiders", "ticker": "AAPL", "relationship": ["ever_officer"]}
CLI
akkru insider-transactions insiders --ticker AAPL --json '{"relationship": ["ever_officer"]}'
MCP
{"action": "types"}
CLI
akkru insider-transactions types
MCP
{"action": "tickers", "page": 1}
CLI
akkru insider-transactions tickers --page 1
MCP
{"action": "search", "start_date": "2026-04-01", "trade_filters": {"transaction_code": ["P"]}, "page_size": 10}
CLI
akkru insider-transactions search --start-date 2026-04-01 --page-size 10 --json '{"trade_filters": {"transaction_code": ["P"]}}'