H

HoldingsIntel API

Programmatic access to institutional investment signals derived from SEC 13F filings, insider trades, and activist filings.

Enterprise Feature

API access is available on Enterprise plans. Browse the documentation below to see what's possible, then contact us to get started.

Request API Access

Get an API Key

Generate keys in your account settings. Keys are hashed — store securely.

Make Requests

Pass your key via the Authorization header. All responses are JSON.

Build & Analyze

Access 500+ filers, 50K+ securities, and proprietary signals like Conviction Score.

Authentication

All API requests require a Bearer token. Include your API key in the Authorization header:

curl -H "Authorization: Bearer hi_live_your_key_here" \
  https://holdingsintel.com/api/v1/filers

Endpoints

MethodPathDescription
GET
/api/v1/filersList all tracked institutional investors
GET
/api/v1/filers/:cikGet filer detail with latest AUM and positions
GET
/api/v1/filers/:cik/holdingsGet a filer's holdings for a given quarter
GET
/api/v1/securitiesList tracked securities with ticker and CUSIP
GET
/api/v1/securities/:identifierGet security detail by ticker or CUSIP
GET
/api/v1/securities/:identifier/holdersGet all institutional holders of a security
GET
/api/v1/signals/convictionHigh-conviction institutional moves (score 50+)
GET
/api/v1/signals/double-downsContrarian buys — increased shares into price drops
GET
/api/v1/signals/smart-moneyNet institutional buying/selling with sentiment
GET
/api/v1/signals/convergenceMulti-source convergence scores (institutional + insider + activist)

Pagination

All list endpoints support pagination via page and per_page parameters. Maximum 100 items per page.

GET /api/v1/signals/conviction?page=2&per_page=50&quarter=2025-Q4

Responses include metadata:

{
  "data": [...],
  "meta": {
    "total": 325610,
    "page": 2,
    "per_page": 50,
    "quarter": "2025-Q4",
    "timestamp": "2026-02-28T12:00:00Z"
  }
}

Code Examples

Python
Using the requests library
import requests

API_KEY = "hi_live_your_key_here"
BASE_URL = "https://holdingsintel.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Get Berkshire Hathaway's current holdings
resp = requests.get(
    f"{BASE_URL}/filers/0001067983/holdings",
    headers=headers,
    params={"per_page": 20}
)
holdings = resp.json()["data"]

for h in holdings:
    print(f"{h['ticker']:8s} {h['change_type']:12s} "
          f"conviction={h['conviction_score']}")
JavaScript
Using fetch
const API_KEY = "hi_live_your_key_here";
const BASE = "https://holdingsintel.com/api/v1";

const res = await fetch(
  `${BASE}/signals/conviction?quarter=2025-Q4&per_page=10`,
  { headers: { Authorization: `Bearer ${API_KEY}` } }
);
const { data, meta } = await res.json();

console.log(`${meta.total} high conviction moves`);
data.forEach(d =>
  console.log(`${d.ticker} — conviction: ${d.conviction_score}`)
);
curl
Get double-down signals
curl -s \
  -H "Authorization: Bearer hi_live_your_key_here" \
  "https://holdingsintel.com/api/v1/signals/double-downs?quarter=2025-Q4&per_page=5" \
  | jq '.data[] | {ticker, filer_name, double_down_score}'

Rate Limits

PlanDaily LimitAccess
FreeNo API access
ProNo API access
Pro+No API access
Enterprise1,000 / dayFull read access to all endpoints

Rate limit headers (X-RateLimit-Remaining) are included in responses. When exceeded, you will receive a 429 status.

Ready to get started?

Create your API key and start querying institutional data in minutes.