Form 4 Insider Trading Endpoints
API Reference: Track corporate insider transactions, identify buying/selling patterns, and analyze insider conviction signals.
Overview
Form 4 insider trading endpoints provide comprehensive access to SEC Form 4 filings, which disclose insider transactions within 2 business days. Available data includes:
Light Tier:
- Recent Activity — Latest insider transactions with flexible filtering
- Top Insiders — Highest conviction traders by transaction value
- Largest Transactions — Biggest dollar-value insider trades
- Company Summary — Per-company insider activity aggregation
- Transaction Breakdown — Analysis by transaction type and role
Medium Tier:
- Trends — Time-series aggregation of insider activity
- Clusters — Detection of coordinated insider buying/selling
- Role Analytics — Analysis by insider role (CEO, CFO, Director, etc.)
- Repeated Activity — Insiders with multiple recent transactions
- Confidence Scores — Signal strength scoring for insider activity
Advanced Tier:
- Unusual Ownership — Significant ownership percentage changes
- Network Effects — Connected insiders trading together
- Sentiment Momentum — Directional trend analysis
Insider Search:
- Insider Search — Find insiders by name or attributes
- Insider Profile — Individual insider statistics
- Insider Transactions — Transaction history for specific insider
- Insider Companies — Companies an insider trades
All endpoints require authentication. Some endpoints require Pro or Elite tier access.
Recent Activity
Get the latest insider transactions with comprehensive filtering options.
Request
GET /v1/form4-recent-activity
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker (comma-separated for multiple) |
day_interval | number | No | 30 | Days of history to retrieve |
acquired_disposed_code | string | No | — | A for acquisitions, D for dispositions |
min_value | number | No | — | Minimum transaction value in USD |
role | string | No | — | Filter by insider role |
sector | string | No | — | Filter by company sector |
industry | string | No | — | Filter by company industry |
transaction_code | string | No | — | Filter by transaction code (P, S, M, A, etc.) |
is_acquisition | string | No | — | true for buys, false for sells |
cursor | string | No | — | Pagination cursor (transaction_date) |
limit | number | No | 500 | Maximum results to return |
Response Format
CSV (pipe-delimited)
transaction_date|issuer_cik|issuer_name|trading_symbols|owner_cik|insider_name|role|officer_title|transaction_code|transaction_description|transaction_shares|transaction_price_per_share|transaction_value|acquired_disposed_code|shares_owned_following_transaction|direct_or_indirect_ownership|accession_number|created_at
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-recent-activity?symbol=AAPL&day_interval=7&acquired_disposed_code=A"
Response:
transaction_date|issuer_cik|issuer_name|trading_symbols|owner_cik|insider_name|role|officer_title|transaction_code|transaction_description|transaction_shares|transaction_price_per_share|transaction_value|acquired_disposed_code|shares_owned_following_transaction|direct_or_indirect_ownership|accession_number|created_at
2024-01-15|0000320193|Apple Inc.|AAPL|0001234567|WILLIAMS JEFF|Officer|Chief Operating Officer|P|Open market or private purchase|5000|186.25|931250.00|A|125000|D|0001234567-24-000012|2024-01-16 08:15:23
2024-01-14|0000320193|Apple Inc.|AAPL|0002345678|KONDO DEIRDRE|Director||M|Exercise of derivative security|10000|45.50|455000.00|A|35000|D|0002345678-24-000008|2024-01-15 10:22:11
Response Fields
| Field | Type | Description |
|---|---|---|
transaction_date | date | Date of transaction |
issuer_cik | string | Company SEC CIK |
issuer_name | string | Company name |
trading_symbols | string | Stock ticker(s) |
owner_cik | string | Insider SEC CIK |
insider_name | string | Insider full name |
role | string | Insider role (Officer, Director, 10% Owner) |
officer_title | string | Specific title if officer |
transaction_code | string | SEC transaction code |
transaction_description | string | Human-readable description |
transaction_shares | number | Number of shares traded |
transaction_price_per_share | number | Price per share |
transaction_value | number | Total transaction value (USD) |
acquired_disposed_code | string | A (acquired) or D (disposed) |
shares_owned_following_transaction | number | Total shares owned after trade |
direct_or_indirect_ownership | string | D (direct) or I (indirect) |
accession_number | string | SEC filing identifier |
created_at | timestamp | When record was created |
Transaction Codes
| Code | Description |
|---|---|
P | Open market or private purchase |
S | Open market or private sale |
M | Exercise or conversion of derivative |
A | Grant, award, or other acquisition |
F | Payment of exercise price or tax liability |
G | Gift |
D | Sale to issuer (e.g., tender offer) |
Tier Requirement
Light Tier — Available to all authenticated users.
Top Insiders
Get the highest conviction insiders ranked by total transaction value.
Request
GET /v1/form4-top-insiders
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
day_interval | number | No | 90 | Days of history to analyze |
acquired_disposed_code | string | No | — | A for buyers, D for sellers |
symbol | string | No | — | Filter by ticker (comma-separated for multiple) |
limit | number | No | 50 | Maximum results (max 100) |
Response Format
CSV (pipe-delimited)
owner_cik|insider_name|acquired_disposed_code|total_transaction_value|total_transactions|avg_transaction_size|most_recent_date|companies_traded|rank
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-top-insiders?acquired_disposed_code=A&limit=10"
Response:
owner_cik|insider_name|acquired_disposed_code|total_transaction_value|total_transactions|avg_transaction_size|most_recent_date|companies_traded|rank
0001234567|BUFFETT WARREN E|A|125000000.00|15|8333333.33|2024-01-12|Berkshire Hathaway Inc. (BRK.A, BRK.B), Occidental Petroleum Corp. (OXY)|1
0002345678|ICAHN CARL C|A|89500000.00|8|11187500.00|2024-01-10|Icahn Enterprises LP (IEP), CVR Energy Inc. (CVI)|2
Response Fields
| Field | Type | Description |
|---|---|---|
owner_cik | string | Insider SEC CIK |
insider_name | string | Insider full name |
acquired_disposed_code | string | A (buyer) or D (seller) |
total_transaction_value | number | Total USD value across all transactions |
total_transactions | number | Count of transactions |
avg_transaction_size | number | Average transaction value |
most_recent_date | date | Date of most recent transaction |
companies_traded | string | List of companies traded |
rank | number | Ranking within acquired/disposed group |
Tier Requirement
Light Tier — Available to all authenticated users.
Largest Transactions
Get the biggest dollar-value insider transactions.
Request
GET /v1/form4-largest-transactions
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
day_interval | number | No | 30 | Days of history to retrieve |
min_value | number | No | 1000000 | Minimum transaction value (USD) |
acquired_disposed_code | string | No | — | A for acquisitions, D for dispositions |
symbol | string | No | — | Filter by ticker |
role | string | No | — | Filter by insider role |
sector | string | No | — | Filter by company sector |
industry | string | No | — | Filter by company industry |
transaction_code | string | No | — | Filter by transaction code |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns same fields as Recent Activity endpoint, sorted by transaction value descending.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-largest-transactions?min_value=5000000&limit=20"
Tier Requirement
Light Tier — Available to all authenticated users.
Company Summary
Get aggregated insider activity statistics for a specific company.
Request
GET /v1/form4-company-summary
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | Yes | — | Stock ticker symbol |
day_interval | number | No | 90 | Days of history to analyze |
Response Format
CSV (pipe-delimited)
Returns aggregated statistics including total buy/sell value, transaction counts, and unique insiders.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-company-summary?symbol=TSLA&day_interval=30"
Tier Requirement
Light Tier — Available to all authenticated users.
Transaction Breakdown
Get transaction type and role breakdown for companies.
Request
GET /v1/form4-transaction-breakdown
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
day_interval | number | No | 90 | Days of history to analyze |
role | string | No | — | Filter by insider role |
sector | string | No | — | Filter by company sector |
industry | string | No | — | Filter by company industry |
Response Format
CSV (pipe-delimited)
Returns breakdown of transaction types, counts, and values.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-transaction-breakdown?symbol=NVDA"
Tier Requirement
Light Tier — Available to all authenticated users.
Trends
Get time-series aggregation of insider activity trends.
Request
GET /v1/form4-trends
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
aggregation | string | No | weekly | Time bucket: daily, weekly, monthly |
limit | number | No | 52 | Number of periods to return |
Response Format
CSV (pipe-delimited)
Returns time-bucketed aggregations of buy/sell activity, transaction counts, and values.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-trends?symbol=AAPL&aggregation=weekly&limit=26"
Response:
period_start|period_end|buy_count|sell_count|buy_value|sell_value|net_value|unique_insiders
2024-01-08|2024-01-14|12|5|2450000.00|890000.00|1560000.00|8
2024-01-01|2024-01-07|8|3|1820000.00|320000.00|1500000.00|6
Response Fields
| Field | Type | Description |
|---|---|---|
period_start | date | Start of time bucket |
period_end | date | End of time bucket |
buy_count | number | Number of buy transactions |
sell_count | number | Number of sell transactions |
buy_value | number | Total buy value (USD) |
sell_value | number | Total sell value (USD) |
net_value | number | Net buy/sell value |
unique_insiders | number | Count of unique insiders |
Tier Requirement
Medium Tier — Requires Pro or Elite subscription.
Clusters
Detect coordinated insider buying or selling (multiple insiders within narrow timeframe).
Request
GET /v1/form4-clusters
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker (comma-separated for multiple) |
day_interval | number | No | 90 | Days of history to analyze |
min_insiders | number | No | 3 | Minimum insiders in cluster |
min_value | number | No | 100000 | Minimum cluster total value (USD) |
acquired_disposed_code | string | No | — | A for buy clusters, D for sell clusters |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
issuer_cik|issuer_name|trading_symbols|cluster_start_date|cluster_end_date|acquired_disposed_code|insider_count|transaction_count|cluster_total_value|days_since_cluster
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-clusters?min_insiders=5&acquired_disposed_code=A"
Response:
issuer_cik|issuer_name|trading_symbols|cluster_start_date|cluster_end_date|acquired_disposed_code|insider_count|transaction_count|cluster_total_value|days_since_cluster
0001234567|Tesla Inc.|TSLA|2024-01-10|2024-01-12|A|6|9|4250000.00|5
0002345678|NVIDIA Corp.|NVDA|2024-01-08|2024-01-09|A|5|7|3820000.00|7
Response Fields
| Field | Type | Description |
|---|---|---|
issuer_cik | string | Company SEC CIK |
issuer_name | string | Company name |
trading_symbols | string | Stock ticker(s) |
cluster_start_date | date | First transaction in cluster |
cluster_end_date | date | Last transaction in cluster |
acquired_disposed_code | string | A (buy cluster) or D (sell cluster) |
insider_count | number | Number of insiders in cluster |
transaction_count | number | Total transactions in cluster |
cluster_total_value | number | Combined transaction value (USD) |
days_since_cluster | number | Days since cluster occurred |
Tier Requirement
Medium Tier — Requires Pro or Elite subscription.
Role Analytics
Analyze insider activity by role (CEO, CFO, Director, 10% Owner, etc.).
Request
GET /v1/form4-role-analytics
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
day_interval | number | No | 90 | Days of history to analyze |
role | string | No | — | Filter by specific role |
acquired_disposed_code | string | No | — | A for buys, D for sells |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns aggregated statistics by insider role.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-role-analytics?symbol=MSFT&role=Officer"
Tier Requirement
Medium Tier — Requires Pro or Elite subscription.
Repeated Activity
Find insiders with multiple transactions in the lookback period.
Request
GET /v1/form4-repeated-activity
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
day_interval | number | No | 90 | Days of history to analyze |
min_occurrences | number | No | 3 | Minimum transactions to qualify |
acquired_disposed_code | string | No | — | A for repeated buys, D for repeated sells |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns insiders with multiple recent transactions, showing consistency of conviction.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-repeated-activity?min_occurrences=5&acquired_disposed_code=A"
Tier Requirement
Medium Tier — Requires Pro or Elite subscription.
Confidence Scores
Get insider activity with signal confidence scoring.
Request
GET /v1/form4-confidence-scores
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
day_interval | number | No | 90 | Days of history to analyze |
min_score | number | No | 50.0 | Minimum confidence score (0-100) |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns transactions with confidence scores based on transaction size, insider role, timing, and other factors.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-confidence-scores?min_score=75&limit=50"
Confidence Score Factors
Scores are calculated based on:
- Transaction size relative to insider's history
- Insider role and seniority
- Open market purchases (higher weight)
- Clustered activity with other insiders
- Repeated transactions in same direction
Tier Requirement
Medium Tier — Requires Pro or Elite subscription.
Unusual Ownership
Detect significant ownership percentage changes.
Request
GET /v1/form4-unusual-ownership
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
min_percent_change | number | No | 10.0 | Minimum ownership % change |
severity | string | No | — | Filter: high, medium, low |
role | string | No | — | Filter by insider role |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns transactions where insiders significantly changed their ownership stake.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-unusual-ownership?min_percent_change=20&severity=high"
Tier Requirement
Advanced Tier — Requires Elite subscription.
Network Effects
Identify connected insiders trading together (board members, management teams).
Request
GET /v1/form4-network-effects
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
min_connected_insiders | number | No | 3 | Minimum connected insiders |
acquired_disposed_code | string | No | — | A for buys, D for sells |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns groups of connected insiders with correlated trading activity.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-network-effects?min_connected_insiders=4"
Tier Requirement
Advanced Tier — Requires Elite subscription.
Sentiment Momentum
Analyze directional trends in insider sentiment.
Request
GET /v1/form4-sentiment-momentum
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | No | — | Filter by ticker |
momentum_category | string | No | — | Filter: accelerating_buys, decelerating_sells, etc. |
acquired_disposed_code | string | No | — | A for buy momentum, D for sell momentum |
limit | number | No | 100 | Maximum results to return |
Response Format
CSV (pipe-delimited)
Returns companies with shifting insider sentiment patterns.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-sentiment-momentum?momentum_category=accelerating_buys"
Tier Requirement
Advanced Tier — Requires Elite subscription.
Insider Search
Search for insiders by name or browse with filters.
Request
GET /v1/form4-insider-search
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name_query | string | No | — | Fuzzy name search (min 3 characters) |
owner_cik | string | No | — | Exact CIK lookup |
min_companies | number | No | 1 | Minimum companies traded |
activity_level | string | No | — | Very Active, Active, Moderate, Occasional |
position_type | string | No | — | Net Buyer, Net Seller, Mixed |
limit | number | No | 50 | Maximum results (max 100) |
Response Format
CSV (pipe-delimited)
owner_cik|insider_name|companies_traded|total_transactions|total_buy_value|total_sell_value|net_position_change|avg_transaction_size|primary_role|activity_level|position_type|first_transaction|last_transaction|transactions_last_30_days
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-insider-search?name_query=Warren%20Buffett"
Response:
owner_cik|insider_name|companies_traded|total_transactions|total_buy_value|total_sell_value|net_position_change|avg_transaction_size|primary_role|activity_level|position_type|first_transaction|last_transaction|transactions_last_30_days
0001234567|BUFFETT WARREN E|8|156|2850000000.00|125000000.00|2725000000.00|19102564.10|Director|Very Active|Net Buyer|2018-03-15|2024-01-12|3
Response Fields
| Field | Type | Description |
|---|---|---|
owner_cik | string | Insider SEC CIK (padded to 10 digits) |
insider_name | string | Insider full name |
companies_traded | number | Count of companies traded |
total_transactions | number | Total transactions (all time) |
total_buy_value | number | Cumulative buy value (USD) |
total_sell_value | number | Cumulative sell value (USD) |
net_position_change | number | Net buy/sell value |
avg_transaction_size | number | Average transaction value |
primary_role | string | Most common role |
activity_level | string | Trading frequency category |
position_type | string | Net buyer, seller, or mixed |
first_transaction | date | Date of first transaction |
last_transaction | date | Date of most recent transaction |
transactions_last_30_days | number | Recent transaction count |
Search Modes
Discovery Mode (no name_query):
- Returns insiders sorted by activity level
- Useful for finding most active traders
Search Mode (with name_query):
- Fuzzy matching using trigrams
- Handles name variations and typos
- Results ranked by similarity
Tier Requirement
Insider Search — Available to all authenticated users.
Insider Profile
Get comprehensive profile for a specific insider.
Request
GET /v1/form4-insider-profile
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
owner_cik | string | Yes | — | Insider SEC CIK |
Response Format
CSV (pipe-delimited)
Returns same fields as Insider Search for the specified CIK.
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-insider-profile?owner_cik=0001234567"
Tier Requirement
Insider Search — Available to all authenticated users.
Insider Transactions
Get transaction history for a specific insider across all companies.
Request
GET /v1/form4-insider-transactions
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
owner_cik | string | Yes | — | Insider SEC CIK |
day_interval | number | No | 90 | Days of history to retrieve |
limit | number | No | 100 | Maximum results (max 500) |
Response Format
CSV (pipe-delimited)
transaction_date|issuer_cik|issuer_name|trading_symbols|role|officer_title|transaction_code|transaction_description|transaction_shares|transaction_price_per_share|transaction_value|acquired_disposed_code|shares_owned_following_transaction|direct_or_indirect_ownership|accession_number
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-insider-transactions?owner_cik=0001234567&day_interval=180"
Tier Requirement
Insider Search — Available to all authenticated users.
Insider Companies
Get breakdown of companies traded by a specific insider.
Request
GET /v1/form4-insider-companies
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
owner_cik | string | Yes | — | Insider SEC CIK |
day_interval | number | No | 90 | Days of history to analyze |
Response Format
CSV (pipe-delimited)
issuer_cik|issuer_name|trading_symbols|total_transactions|total_buy_value|total_sell_value|net_value|first_transaction|last_transaction
Example
Request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://apollo.profitelligence.com/v1/form4-insider-companies?owner_cik=0001234567"
Response:
issuer_cik|issuer_name|trading_symbols|total_transactions|total_buy_value|total_sell_value|net_value|first_transaction|last_transaction
0001318605|Tesla Inc.|TSLA|8|0.00|45000000.00|-45000000.00|2023-11-15|2024-01-12
0001652044|Alphabet Inc.|GOOGL, GOOG|3|1250000.00|0.00|1250000.00|2023-12-01|2024-01-05
Response Fields
| Field | Type | Description |
|---|---|---|
issuer_cik | string | Company SEC CIK |
issuer_name | string | Company name |
trading_symbols | string | Stock ticker(s) |
total_transactions | number | Count of transactions |
total_buy_value | number | Cumulative buy value (USD) |
total_sell_value | number | Cumulative sell value (USD) |
net_value | number | Net buy/sell value |
first_transaction | date | Date of first transaction |
last_transaction | date | Date of most recent transaction |
Tier Requirement
Insider Search — Available to all authenticated users.
Error Responses
Missing Required Parameter
error,owner_cik parameter is required
No Data Found
error,No insider activity found for the specified criteria
Feature Access Denied
{
"error": "Feature access denied",
"code": "FEATURE_TIER_REQUIRED",
"details": "This endpoint requires Pro tier subscription",
"upgrade_url": "https://profitelligence.com/subscribe"
}
Code Examples
Python: Find Recent Insider Buying
import requests
import io
import pandas as pd
def get_insider_buying(token: str, symbol: str, days: int = 30) -> pd.DataFrame:
"""Get recent insider buying activity for a company."""
response = requests.get(
"https://apollo.profitelligence.com/v1/form4-recent-activity",
params={
"symbol": symbol,
"day_interval": days,
"acquired_disposed_code": "A", # Acquisitions only
"limit": 100
},
headers={"Authorization": f"Bearer {token}"}
)
response.raise_for_status()
# Parse pipe-delimited CSV
df = pd.read_csv(io.StringIO(response.text), sep='|')
df['transaction_date'] = pd.to_datetime(df['transaction_date'])
return df
# Usage
buys = get_insider_buying(jwt_token, "NVDA", days=7)
print(f"Total insider buying: ${buys['transaction_value'].sum():,.0f}")
print(f"Unique insiders: {buys['insider_name'].nunique()}")
Python: Detect Buy Clusters
def find_buy_clusters(token: str, min_insiders: int = 5) -> pd.DataFrame:
"""Find companies with clustered insider buying."""
response = requests.get(
"https://apollo.profitelligence.com/v1/form4-clusters",
params={
"min_insiders": min_insiders,
"acquired_disposed_code": "A", # Buy clusters
"day_interval": 30,
"limit": 50
},
headers={"Authorization": f"Bearer {token}"}
)
response.raise_for_status()
df = pd.read_csv(io.StringIO(response.text), sep='|')
# Sort by cluster value
df = df.sort_values('cluster_total_value', ascending=False)
return df
# Usage
clusters = find_buy_clusters(jwt_token, min_insiders=5)
print(clusters[['trading_symbols', 'insider_count', 'cluster_total_value']].head())
Python: Search for Insider
def search_insider(token: str, name: str) -> dict:
"""Search for an insider and get their full profile."""
# First, search by name
response = requests.get(
"https://apollo.profitelligence.com/v1/form4-insider-search",
params={"name_query": name, "limit": 1},
headers={"Authorization": f"Bearer {token}"}
)
response.raise_for_status()
df = pd.read_csv(io.StringIO(response.text), sep='|')
if df.empty:
return None
owner_cik = df.iloc[0]['owner_cik']
# Get detailed profile, transactions, and companies
profile_resp = requests.get(
"https://apollo.profitelligence.com/v1/form4-insider-profile",
params={"owner_cik": owner_cik},
headers={"Authorization": f"Bearer {token}"}
)
transactions_resp = requests.get(
"https://apollo.profitelligence.com/v1/form4-insider-transactions",
params={"owner_cik": owner_cik, "limit": 100},
headers={"Authorization": f"Bearer {token}"}
)
companies_resp = requests.get(
"https://apollo.profitelligence.com/v1/form4-insider-companies",
params={"owner_cik": owner_cik},
headers={"Authorization": f"Bearer {token}"}
)
return {
"profile": pd.read_csv(io.StringIO(profile_resp.text), sep='|'),
"transactions": pd.read_csv(io.StringIO(transactions_resp.text), sep='|'),
"companies": pd.read_csv(io.StringIO(companies_resp.text), sep='|')
}
# Usage
insider = search_insider(jwt_token, "Warren Buffett")
if insider:
print(insider['profile'])
print(f"\nRecent transactions: {len(insider['transactions'])}")
print(f"Companies traded: {len(insider['companies'])}")
JavaScript: Get Top Insider Buyers
async function getTopBuyers(token, days = 90, limit = 20) {
const params = new URLSearchParams({
day_interval: days,
acquired_disposed_code: 'A', // Acquisitions only
limit: limit
});
const response = await fetch(
`https://apollo.profitelligence.com/v1/form4-top-insiders?${params}`,
{ headers: { 'Authorization': `Bearer ${token}` } }
);
const csv = await response.text();
// Parse CSV to array of objects
const lines = csv.trim().split('\n');
const headers = lines[0].split('|');
return lines.slice(1).map(line => {
const values = line.split('|');
return headers.reduce((obj, header, i) => {
obj[header] = values[i];
return obj;
}, {});
});
}
// Usage
const topBuyers = await getTopBuyers(token, 90, 10);
topBuyers.forEach(insider => {
console.log(`${insider.insider_name}: $${parseFloat(insider.total_transaction_value).toLocaleString()}`);
});
JavaScript: Track Insider Trends
async function getInsiderTrends(token, symbol, weeks = 12) {
const params = new URLSearchParams({
symbol: symbol,
aggregation: 'weekly',
limit: weeks
});
const response = await fetch(
`https://apollo.profitelligence.com/v1/form4-trends?${params}`,
{ headers: { 'Authorization': `Bearer ${token}` } }
);
const csv = await response.text();
const lines = csv.trim().split('\n');
const headers = lines[0].split('|');
const data = lines.slice(1).map(line => {
const values = line.split('|');
const row = headers.reduce((obj, header, i) => {
obj[header] = values[i];
return obj;
}, {});
// Calculate net sentiment
row.net_value = parseFloat(row.buy_value) - parseFloat(row.sell_value);
return row;
});
return data;
}
// Usage
const trends = await getInsiderTrends(token, 'AAPL', 12);
console.log('Insider sentiment over time:');
trends.forEach(week => {
const sentiment = week.net_value > 0 ? 'BULLISH' : 'BEARISH';
console.log(`${week.period_start}: ${sentiment} (Net: $${week.net_value.toLocaleString()})`);
});
Understanding Insider Data
What Makes Insider Trades Significant?
High-Conviction Signals:
- Open market purchases (code
P) by executives - Large transactions relative to insider's salary
- Multiple insiders buying within days (clusters)
- Repeated buying by same insider
- Unusual ownership percentage increases
Lower Signal Value:
- Automatic plan sales (10b5-1)
- Option exercises (code
M) followed by immediate sale - Tax-related sales (code
F) - Small routine transactions
Transaction Timing
- Form 4 must be filed within 2 business days of transaction
- Look for patterns across multiple insiders
- Recent clusters may indicate material non-public information boundaries
- Compare insider activity timing with earnings reports and price movements
Role Significance
Highest Signal:
- CEO, CFO, COO (C-suite executives)
- 10% owners (major shareholders)
- Board chairs
Moderate Signal:
- Directors
- Vice Presidents
- Other officers
Lower Signal:
- Lower-level officers
- Beneficial owners with small stakes
Next Steps
- FRED Economic Endpoints — Macro indicators
- Analytics Endpoints — Advanced quantitative analysis
- Company Data Endpoints — Price and fundamental data