A ticker search also returns rows this issuer FILED UNDER SYMBOLS IT NO LONGER LISTS (renames, filer typos, ADR spellings)
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 per-security INSIDER POSITIONS from SEC Form 3/4/5 filings — one row per holding line reported by a corporate insider (director, officer, or 10%+ beneficial owner). Use this when the user asks: what a specific insider currently HOLDS, who the largest insider holders of a stock are, an insider's position across companies, or direct-vs-indirect ownership structure. This is the position (stock) companion to get_insider_transactions (the buys/sells flow). Source: SEC bulk Form 3/4/5 dataset (insider_holdings_v2), 2006→present, refreshed quarterly. Each row carries the filing envelope (company_cik, company_name, ticker, reporting_owner_cik/name, role flags, filing_date, period_of_report), the position (holding_type nonderiv|deriv, security_title, shrs_owned_following_trans, valu_owned_following_trans, direct_indirect_ownership D|I), and — for derivative holdings — conv_exercise_price, exercise_date, expiration_date, and underlying-security detail. Useful filter combos: ticker='NVDA', sort_order='desc' most-recent NVDA insider holdings reporting_owner_cik='0001214128' one insider's positions everywhere ticker='AAPL', holding_type='deriv' AAPL insiders' option/RSU positions ticker='TSLA', is_ten_percent_owner=true 10%+ owners of TSLA company_cik='0000320193', min_value=1000000 Apple insiders holding >$1M reporting_owner_name='Musk' name substring (case-insensitive) shares/value are 'following the reported transaction' — the position as of that filing, not a live real-time holding. For the trades themselves use get_insider_transactions; ownership ties together via reporting_owner_cik.
Request
- Base URL: https://api.keyvex.com
- URL: https://api.keyvex.com/v1/insider-holdings
- Auth: API key in header x-api-key
Query parameters
Exact issuer ticker (e.g., 'AAPL', 'BRK.B').
Issuer CIK (10-digit, leading-zero padded). Returns insider holdings across all reporting periods for that company.
Case-insensitive substring against issuer company name (e.g., 'Apple', 'Tesla').
Insider CIK (10-digit, leading-zero padded). Returns one insider's positions across every company they report on.
Case-insensitive substring against the insider's name (e.g., 'Musk', 'Cook').
DEFAULT TRUE — leave it alone unless you specifically want raw filings. When shares are held through a fund, trust or family holding company, every person deemed a beneficial owner files their own Form 3/4/5 reporting the SAME position, so one block appears once per filer. By default those lines are merged into one row per position, so share counts are the shares actually held; reporting_owner_name names every filer and co_reported_accessions lists every accession. Set false for one row per filing — totals then count the same shares once per reporting person.
'nonderiv' = direct securities (common stock); 'deriv' = derivative holdings (options, RSUs, warrants, convertibles). Omit for both.
'D' direct ownership, 'I' indirect (held via trust, LLC, family member, etc.).
True returns only holdings reported by directors.
True returns only holdings reported by officers.
True returns only holdings reported by 10%+ beneficial owners.
Minimum shares owned following the reported transaction. Use to focus on large positions.
Minimum USD value owned following the reported transaction. Use to focus on large positions.
ISO date (YYYY-MM-DD). Only holdings whose period_of_report >= this date.
ISO date (YYYY-MM-DD). Only holdings whose period_of_report <= this date.
Sort field. Only period_of_report is supported. Default: period_of_report.
Default: desc (most recent reporting period first).
Maximum records to return. Default 50, max 500.
Response
JSON envelope: { results: [...], count, has_more }.
Changes
No recorded changes to this operation across all 1 revision of this API.