Ownership · US only
Insider trades
- Coverage
- US
- Billing
- 20 cr / thousand calls
One row per insider transaction, sourced from per-transaction SEC Form 4 / Form 5 filings (Form 3 reports only initial holdings and has no transaction rows). The endpoint restates only the transaction facts in the filing (who, when, how much was bought or sold); it includes no profiling or evaluation of the reporting person.
- The date axis is the filing date
filing_date; omittingfrom/toreturns every record ingested so far, paginated byfiling_date desc, accession_number desc. transaction_typeis a normalized enum; the original SEC transaction code is intransaction_code. To filter for open-market buys and sells only, usebuy/sell(neitherexercisenortax_withholdingis an open-market trade).
Shared ownership conventions
Both endpoints in this group cover only US-listed companies, with the data parsed from the as-filed SEC documents; a non-US ticker returns 404.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | required | A single ticker. |
| from | date | optional | Start of the filing date (filing_date) range, inclusive of that day; to query a single day, set from = to. |
| to | date | optional | End of the filing date range, inclusive of that day. |
| transaction_type | string | optional | buy | sell | award | exercise | tax_withholding | other, multiple values allowed, comma-separated. Default All. |
| limit | int | optional | Maximum 500. Default 50. |
| page | int | optional | Starts at 1. Default 1. |
Sorted filing_date desc, accession_number desc; within one filing, in the row order of the filed form. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.
Response fields
| Field | Type | Description |
|---|---|---|
| ticker | string | canonical ticker |
| insider_name | string | Name of the reporting person (uppercase, as in the as-filed document) |
| insider_title | string | Title of the reporting person, as filed |
| is_director | bool | Director status as checked on the filed form |
| is_officer | bool | Officer status as checked on the filed form |
| transaction_type | string | Normalized enum: buy (P, open-market or private purchase) / sell (S, open-market or private sale) / award (A, award) / exercise (M, shares acquired on the exercise or conversion of options or derivative securities) / tax_withholding (F, shares disposed of for tax withholding at vesting, a reduction in holdings) / other (G gift, C conversion, D returned to the issuer, J other, and so on) |
| transaction_code | string | Original SEC transaction code |
| transaction_date | date | Transaction date |
| security_title | string | Security name (Common Stock / RSU / Option, and so on) |
| ownership_type | string | direct | indirect |
| shares | number | Number of shares transacted |
| price_per_share | number | Transaction price; null for awards |
| total_value | number | shares × price_per_share; null when price_per_share is null |
| shares_owned_after | number | Shares held after the transaction |
| accession_number | string | SEC accession number (e.g. 0000320193-25-000123) identifying this filing |
| form_type | string | SEC form name, either 4 or 5. Only original filings are returned; amendments (4/A / 5/A) do not get their own rows |
| filing_url | string | Deep link to the filing on SEC EDGAR; opens directly |
| filing_date | date | Filing date: the date the filing became public on EDGAR |
No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.
Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.