/insider-module/api/insiders/filings/by-ticker/{ticker}Get all insider filings for a specific company.
Get all insider filings for a specific company. Returns filing summaries with issuer details, owner counts, transaction/holding counts, and SEC document URLs.
Why use this
Common use case
Issuer-scoped insider filings table — every Form 3/4/5 filing made by reporting persons related to one ticker, with optional sub-filtering by form type, date range, and individual insider CIK.
The insider_cik filter is the lever for 'all of CEO Cook's filings at AAPL' — it joins through FilingReporter so joint filings where the requested insider was one of N co-filers are correctly included. Combine with form_type='4/A' to surface only amendments touching that insider.
Returns HTTP 404 when the ticker cannot be resolved (vs /filings/latest which silently filters to no rows). Pagination is offset/limit-based; for very deep filing histories (issuers with 1000s of filings) use the from_date/to_date range to bound the window. For a fully nested filing tree (transactions, holdings, footnotes, reporters) on a specific row use GET /insider-module/api/insiders/filings/{accession_number}; for cross-issuer filings use GET /insider-module/api/insiders/filings/latest.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| ticker | path | required | — | — | Stock ticker (e.g. AAPL) | AAPL |
| limit | query | optional | 50 | — | Limit results (1-1000) | 20 |
| offset | query | optional | 0 | — | Pagination offset | 0 |
| form_type | query | optional | — | — | Filter by form type (3, 4, 5, 3/A, 4/A, 5/A) | 4 |
| from_date | query | optional | — | — | Start date (YYYY-MM-DD) | 2026-01-01 |
| to_date | query | optional | — | — | End date (YYYY-MM-DD) | 2026-04-01 |
| insider_cik | query | optional | — | — | Filter by insider CIK (10-digit zero-padded) | 0001214156 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | Always `success` on 2xx. |
| data | array | no | Array of filing-summary rows for the requested issuer, ordered by `filed_at DESC`. Excludes superseded amendments. Returns HTTP 404 when the ticker cannot be resolved at all. |
| data[].filing_id | string | no | Internal FinRadar UUID for the filing. |
| data[].accession_number | string | no | SEC accession number in canonical `XXXXXXXXXX-YY-NNNNNN` format. |
| data[].form_type | string | no | Form type (`3`/`4`/`5`/`3/A`/`4/A`/`5/A`). |
| data[].filed_at | string | yes | ISO-8601 UTC filing acceptance timestamp. |
| data[].accepted_at | string | yes | ISO-8601 UTC EDGAR acceptance timestamp. |
| data[].period_of_report | string | yes | ISO `YYYY-MM-DD` period covered by the filing (Form 4 Item 3). |
| data[].is_amendment | boolean | no | `true` for `*/A` amendments. |
| data[].is_late | boolean | yes | `true` when filed past the 2-business-day deadline. |
| data[].business_days_to_file | integer | yes | Business days between trade and filing. |
| data[].issuer | object | no | Issuer block — same value across all rows since this endpoint is ticker-scoped. |
| data[].issuer.cik | string | no | Issuer CIK. |
| data[].issuer.name | string | yes | Issuer name. |
| data[].issuer.trading_symbol | string | yes | Issuer ticker. |
| data[].owner_count | integer | no | Number of reporting persons on the filing. |
| data[].non_derivative_transaction_count | integer | no | Form 4 Table I transaction count. |
| data[].derivative_transaction_count | integer | no | Form 4 Table II transaction count. |
| data[].non_derivative_holding_count | integer | no | Form 4 Table I holdings count. |
| data[].derivative_holding_count | integer | no | Form 4 Table II holdings count. |
| data[].footnote_count | integer | no | Footnote count on the filing. |
| data[].xml_url | string | yes | SEC EDGAR XML document URL. |
| data[].index_url | string | yes | SEC EDGAR filing index URL. |
| meta | object | yes | Result metadata block — pagination + company profile (the same `meta.company` shape as `/holdings/by-ticker`). |
| meta.pagination | object | no | Pagination sub-block. |
| meta.pagination.total | integer | no | Total matching filings for the issuer + filter set. |
| meta.pagination.limit | integer | no | Effective page size. |
| meta.pagination.offset | integer | no | Echo of requested offset. |
| meta.pagination.has_more | boolean | no | `true` when another page is available. |
| meta.company | object | no | Company profile block (ticker / name / cik). |
| meta.company.ticker | string | no | Issuer ticker (canonical hyphen form). Falls back to upper-cased path parameter when CompanyStub missing. |
| meta.company.name | string | no | Issuer name. Falls back to `'Unknown'` when missing. |
| meta.company.cik | string | no | Issuer CIK. |
| request_id | string | yes | Per-request UUID for log correlation. |
| timestamp | string | no | ISO-8601 UTC response timestamp. |
Sample response
- "status": "success"
- "data":
- "meta":
- "pagination":
- "company":
- "request_id": "e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b"
- "timestamp": "2026-05-02T15:52:18.094Z"
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/insider-module/api/insiders/filings/by-ticker/{ticker}?api_Token=YOUR_API_KEY" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).