/insider-module/api/insiders/screenScreen for specific insider criteria.
Screen for specific insider criteria. Supports sector/industry filtering from Sharadar classification.
Why use this
Common use case
Insider-activity screener — returns one aggregate row PER COMPANY (not per transaction), so you can rank tickers by net insider sentiment, net value, or activity volume. Filter by date window, sentiment/net-value thresholds, minimum transactions/insiders, C-suite-only, the exclusion flags, and Sharadar sector/industry. Combine with GET /insider-module/api/insiders/aggregation/by-sector when you want sector-level rather than company-level roll-ups, or GET /insider-module/api/insiders/transactions/search for the per-transaction rows behind each company.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| filed_at_days | query | optional | 7 | — | Look back this many days by FILING date (when the Form 4 landed on EDGAR). Range 1–3650. | 30 |
| transaction_days | query | optional | — | — | Look back this many days by TRANSACTION (trade-execution) date. Range 1–365. Omit to derive the transaction window from `filed_at_days` (with a 2-week filing-delay buffer). | 30 |
| sentiment_gt | query | optional | — | — | Keep only companies whose count-based `sentiment_score` is greater than this (range -1.0 to 1.0). E.g. `0.5` = strong net buying. | 0.5 |
| sentiment_lt | query | optional | — | — | Keep only companies whose count-based `sentiment_score` is less than this (range -1.0 to 1.0). E.g. `-0.5` = strong net selling. | -0.5 |
| net_value_gt | query | optional | — | — | Keep only companies whose `net_value` (buy USD − sell USD) is greater than this. | 1000000 |
| net_value_lt | query | optional | — | — | Keep only companies whose `net_value` is less than this. | -1000000 |
| min_transactions | query | optional | 1 | — | Minimum number of transactions a company must have to appear in results. | 3 |
| min_insiders | query | optional | 1 | — | Minimum number of distinct insiders a company must have to appear in results. | 2 |
| csuite_only | query | optional | false | — | When `true`, restrict the aggregation to C-suite (CEO/CFO/COO/CIO/CTO/General Counsel) activity. | true |
| exclude_10b5_1 | query | optional | false | — | When `true`, exclude pre-planned Rule 10b5-1 trades from the filtered totals (the `rule_10b5_1_*` transparency fields are unaffected). | true |
| exclude_cashless | query | optional | false | — | When `true`, exclude cashless option exercises from the filtered totals. | true |
| exclude_sell_to_cover | query | optional | false | — | When `true`, exclude RSU sell-to-cover (tax-withholding) sales from the filtered totals. | true |
| limit | query | optional | 100 | — | Maximum number of company rows to return (1–1000). | 50 |
| offset | query | optional | 0 | — | Zero-based pagination offset. | 0 |
| sort_by | query | optional | abs_sentiment | sentiment, abs_sentiment, net_value, abs_net_value, total_transactions | Sort key. `abs_sentiment`/`abs_net_value` rank by magnitude regardless of direction (most-active first); `sentiment`/`net_value` rank signed (most-bullish first); `total_transactions` ranks by activity volume. | net_value |
| sector | query | optional | — | — | Sharadar sector classification, case-sensitive (e.g. `Technology`, `Healthcare`, `Financial Services`). Restricts the screen to one sector. Tickers without Sharadar mappings are excluded. | Technology |
| industry | query | optional | — | — | Sharadar industry classification, case-sensitive (more specific than `sector`). Em-dash characters require URL-encoding when round-tripping. Use the `/financials/tickers` endpoint to enumerate exact valid values. | Consumer Electronics |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| results | array | no | Array of per-COMPANY aggregate rows (one entry per ticker with activity in the window) — NOT per-transaction rows. Sorted by `sort_by`. Empty array when no company matches the filters. |
| results[].ticker | string | no | Issuer ticker (canonical hyphen form). |
| results[].company_name | string | no | Issuer name. |
| results[].issuer_cik | string | no | Issuer CIK (10-character zero-padded). |
| results[].sector | string | yes | Sharadar sector classification for the issuer. Null when the ticker is unmapped. |
| results[].industry | string | yes | Sharadar industry classification (more specific than `sector`). Null when unmapped. |
| results[].total_transactions | integer | no | Total transactions matching filters. |
| results[].total_buys | integer | no | Total buy transactions matching filters. |
| results[].total_sells | integer | no | Total sell transactions matching filters. |
| results[].total_buy_value | number | no | Total buy value (USD) matching filters. |
| results[].total_sell_value | number | no | Total sell value (USD) matching filters. |
| results[].net_value | number | no | Net value (buy − sell, USD) matching filters. |
| results[].total_buy_shares | number | no | Total shares bought matching filters. |
| results[].total_sell_shares | number | no | Total shares sold matching filters. |
| results[].net_shares | number | no | Net shares (buy − sell) matching filters. |
| results[].unique_insiders | integer | no | Count of unique insiders matching filters. |
| results[].unique_buyers | integer | no | Count of unique buyers matching filters. |
| results[].unique_sellers | integer | no | Count of unique sellers matching filters. |
| results[].rule_10b5_1_buy_count | integer | no | ACTUAL 10b5-1 buy-plan count (transparency — NOT affected by `exclude_10b5_1`). |
| results[].rule_10b5_1_sell_count | integer | no | ACTUAL 10b5-1 sell-plan count (transparency). |
| results[].rule_10b5_1_buy_value | number | no | ACTUAL 10b5-1 buy value, USD (transparency). |
| results[].rule_10b5_1_sell_value | number | no | ACTUAL 10b5-1 sell value, USD (transparency). |
| results[].csuite_buy_count | integer | no | C-suite buy count matching filters. |
| results[].csuite_sell_count | integer | no | C-suite sell count matching filters. |
| results[].csuite_buy_value | number | no | C-suite buy value, USD, matching filters. |
| results[].csuite_sell_value | number | no | C-suite sell value, USD, matching filters. |
| results[].csuite_net_value | number | no | C-suite net value, USD, matching filters. |
| results[].officer_buy_value | number | no | Officer buy value, USD, matching filters. |
| results[].officer_sell_value | number | no | Officer sell value, USD, matching filters. |
| results[].director_buy_value | number | no | Director buy value, USD, matching filters. |
| results[].director_sell_value | number | no | Director sell value, USD, matching filters. |
| results[].buy_sell_ratio | number | no | Ratio of buys to sells. |
| results[].sentiment_score | number | no | Count-based sentiment in [-1, +1]. |
| results[].value_sentiment_score | number | no | Value-based sentiment in [-1, +1]. |
| results[].csuite_sentiment_score | number | no | C-suite count-based sentiment in [-1, +1]. |
| results[].value_csuite_sentiment_score | number | no | C-suite value-based sentiment in [-1, +1]. |
| results[].filing_count | integer | no | Distinct filings count for the company in the window. |
| results[].latest_transaction_date | string | yes | ISO `YYYY-MM-DD` of the company's latest transaction in the window. Null when empty. |
| meta | object | no | InsiderScreenMeta result-metadata block. |
| meta.total_results | integer | no | Total matching companies (pre-pagination). |
| meta.returned | integer | no | Number of company rows returned on this page. |
| meta.limit | integer | no | Echo of the effective limit. |
| meta.offset | integer | no | Echo of the requested offset. |
| meta.has_more | boolean | no | `true` when another page is available. |
| meta.request_id | string | yes | Per-request UUID for log correlation. |
| meta.timestamp | string | no | ISO-8601 UTC response timestamp. |
| meta.filters_applied | object | no | Verbatim echo of the applied filter set. |
Sample response
- "results":
- "meta":
- "total_results": 87
- "returned": 1
- "limit": 100
- "offset": 0
- "has_more": false
- "request_id": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d"
- "timestamp": "2026-05-02T15:36:42.117Z"
- "filters_applied":
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/screen?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).