Insiders

Returns a paginated list of insider transaction records for an asset, including recent insider actions, roles, and reported positions.

This endpoint is applicable only to stocks. For ETFs and mutual funds, insider transactions do not exist in this model, so the endpoint returns an empty result:

This is expected behavior, as insider ownership and insider trading disclosures apply only to operating companies (stocks).

When to Use This Endpoint

  • Display recent insider activity on equity profile pages.
  • Analyze insider behavior as a qualitative signal (buying, selling, gifts).
  • Support governance and ownership transparency features.
  • Complement aggregated insider metrics from v1/holders/general.

Request Parameters

POST
v1/holders/insiders
symbol stringrequired

Asset identifier (ticker symbol). Must be a stock symbol.

limit integeroptional

Maximum number of insider records to return.

filters arrayoptional

Optional filter expressions.

Each filter condition is defined as: [field, operator, value]. Conditions can be combined using logical operators and/or.

Supported operators:

Numeric fields:

  • > - greater than
  • >= - greater than or equal
  • < - less than
  • <= - less than or equal
  • = - equals
  • <> - not equal

String fields:

  • like – pattern match (requires % as a wildcard)
  • not_like - pattern does not match (requires % as a wildcard)
  • contains - value exists in string
  • not_contains - value does not exist in string
  • startswith - string starts with value
  • endswith - string ends with value

% usage examples:

  • %abc% - matches any string containing "abc"
  • abc% - matches any string starting with "abc"
  • %abc - matches any string ending with "abc"

Example:

"filters": ["relation", "like", "Chief%"]
sort_by arrayoptional

Optional sorting configuration for result items. Each sorting setup is defined as [selector, desc]:

  • selector - Metric used for sorting (e.g., position_report_date).
  • desc - Sorting direction (true for descending, false for ascending).

Sortings can be combined using ,.

Example:

"sort_by": [
    {
        "selector": "position_report_date",
        "desc": true
    }
]
offset integeroptional

Pagination offset (0-based).

tag stringoptional

User-defined identifier for the task (max 255 characters).

It is returned in the response data object, allowing you to match results with the corresponding request. It does not affect API processing or filtering logic.

Example Request
curl --location "https://api.finimpulse.com/v1/holders/insiders" \
  --header "Content-Type: application/json" \
  --header "Authorization: Bearer <API_TOKEN>" \
  -d '{
      "symbol": "NVDA",
      "limit": 3,
      "offset": 0,
      "tag": "just tag"
  }'
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

var client = new HttpClient();
var url = "https://api.finimpulse.com/v1/holders/insiders";

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "<API_TOKEN>");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var json = @"{
    ""symbol"": ""NVDA"",
    ""limit"": 3,
    ""offset"": 0,
    ""tag"": ""just tag""
}";
var content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
<?php
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.finimpulse.com/v1/holders/insiders",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "Authorization: Bearer <API_TOKEN>"
  ],
  CURLOPT_POSTFIELDS => json_encode(
[
      "symbol" => "NVDA",
      "limit" => 3,
      "offset" => 0,
      "tag" => "just tag"
    ]
  )
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
import urllib.request
import json

url = "https://api.finimpulse.com/v1/holders/insiders"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer <API_TOKEN>"
}
data = {
    "symbol": "NVDA",
    "limit": 3,
    "offset": 0,
    "tag": "just tag"
}

req = urllib.request.Request(url,
    data=json.dumps(data).encode("utf-8"),
    headers=headers,
    method="POST")

with urllib.request.urlopen(req) as response:
    result = json.loads(response.read().decode("utf-8"))
    print(result)
const https = require('https');

const data = JSON.stringify({
    "symbol": "NVDA",
    "limit": 3,
    "offset": 0,
    "tag": "just tag"
});

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <API_TOKEN>',
    'Content-Length': Buffer.byteLength(data)
  }
};

const req = https.request('https://api.finimpulse.com/v1/holders/insiders', options, (res) => {
  let body = '';
  res.on('data', chunk => body += chunk);
  res.on('end', () => console.log(JSON.stringify(JSON.parse(body), null, 2)));
});

req.on('error', (e) => console.error(e));
req.write(data);
req.end();

Response

Returns pagination metadata and a list of insider transaction records.

Pagination Fields

total_count integer

Total number of insider records available.

items_count integer

Number of records returned in the current response.

items array

Array of insider transaction entries.

Insider Transaction Entry Item

name string

Insider name.

relation string

Insider’s relationship to the company (e.g. Director, Officer).

transaction_description string

Description of the most recent reported transaction (e.g. Sale, Purchase, Stock Gift).

latest_trans_date string

Date of the most recent reported insider transaction.

position_direct integer

Number of shares directly owned after the transaction (if reported).

position_report_date string

Reporting date of the insider’s position.

Example Response
{
    "task_id": "103d7806-245a-4ff8-90c3-f5bc19983b33",
    "status_code": 20000,
    "status_message": "OK",
    "cost": 0.0012,
    "data": {
        "symbol": "NVDA",
        "limit": 3,
        "offset": 0,
        "filters": [
            "relation",
            "like",
            "Chief%"
        ],
        "tag": "just tag",
        "sort_by": [
            {
                "selector": "position_report_date",
                "desc": true
            }
        ]
    },
    "result": {
        "total_count": 2,
        "items_count": 2,
        "items": [
            {
                "name": "HUANG JEN-HSUN",
                "relation": "Chief Executive Officer",
                "transaction_description": "Stock Gift",
                "latest_trans_date": "2025-12-17",
                "position_direct": null,
                "position_report_date": "2026-02-04"
            },
            {
                "name": "KRESS COLETTE M.",
                "relation": "Chief Financial Officer",
                "transaction_description": "Sale",
                "latest_trans_date": "2026-01-13",
                "position_direct": null,
                "position_report_date": "2026-02-04"
            }
        ]
    }
}

Notes

  • A single insider may appear multiple times across pages if multiple filings have been made historically.
  • position_direct may be null when the filing reports a transaction but not an updated position.
  • Dates reflect filing/reporting timelines, not trade execution timestamps.