Funds & Institutional

Track institutional positioning, Form-4 insider activity, and smart-money clusters. Real-time access to WRDS 13F deep history (78.6M rows), quarterly position deltas, top shareholders by ticker, and insider transaction feeds.

What's inside#

  • 13F SEC filings (quarterly snapshots) — 78.6M+ historical rows from WRDS Thomson Securities Database: fund holdings, manager positioning across all tickers, and quarter-over-quarter position deltas by manager & position size.
  • Top shareholders by ticker — per-ticker institutional, fund, and insider holder lists with share counts, positions, and ownership %.
  • Form-4 insider activity — live insider transaction feed (acquisitions/sales/option exercises) with insider title, transaction type, share/price/value, cross-ticker scope.
  • Smart-money clusters — multi-insider synchronized buying patterns (2+ distinct insiders buying same ticker within 30 days); cluster score + buyer count.
  • Mutual-fund ownership — which registered mutual funds hold a given stock, from the CRSP survivor-bias-free mutual-fund holdings archive (308M rows): each fund's position as a percent of its total net assets, share count, and USD market value, largest first. Latest-available quarter-end (the archive lags — coverage 2002-01-31 → 2021-12-31).

All data sourced from WRDS (13F from Thomson Reuters, daily refresh) and Quiver Quant (Form-4 feed, real-time) with fallback sourcing and vendor error handling.

Access#

4 credits/call. Unlocked on Starter and up. (À-la-carte add-on available: +$149/mo.)

Endpoints#

MethodPathDescription
GET/api/v3/intel/sec13f13F holdings snapshots. Query by ?ticker= and/or ?fund= (substring match); returns {ticker, fund, items, count, source}.
GET/api/v3/intel/sec13f/changesQuarter-over-quarter 13F position deltas. Query by ?ticker= and/or ?fund=; ?min_pct= filters by position size change. Returns {ticker, fund, min_pct, items, count, source}.
GET/api/v3/intel/top_shareholders/{ticker}Top institutional/fund/insider shareholders for a ticker. Returns {ticker, report_date, ownership[], ownership_options[], count, source}.
GET/api/v3/intel/insidersLive Form-4 insider transaction feed (cross-ticker). Query ?ticker= to filter; ?limit= (1–500, default 50). Returns {ticker, items, count, source}.
GET/api/insider/clustersSmart-money clusters: 2+ insiders buying same ticker within 30 days. Returns {clusters[], n, source}.
GET/api/smart-money/{ticker}Smart-money detail for ticker (institutional holder names + positions). Returns {ticker, detail}.
GET/api/v3/funds/mutual_fund_ownership/{ticker}CRSP mutual-fund holders of a stock: each holding fund (crsp_portno, security_name) with its position as a percent of the fund's total net assets (percent_tna), share count and USD market value, largest position first. Latest-available quarter-end (archive lags — coverage 2002 → 2021-12-31); ?date= pages history, ?top= (1–5000) and ?min_market_val= filter. Returns {ticker, report_dt, n_funds, funds, coverage}.

Examples#

Example 1: Fetch 13F holdings and track position changes#

Shell
1# Get the latest 13F holdings for Apple2curl -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.tengu.co/api/v3/intel/sec13f?ticker=AAPL&limit=50"4 5# Response structure:6# {7#   "ok": true,8#   "timestamp": "2024-12-16T14:22:00Z",9#   "ticker": "AAPL",10#   "fund": null,11#   "items": [12#     {13#       "fund_name": "Berkshire Hathaway",14#       "manager_cik": "0000051143",15#       "ticker": "AAPL",16#       "shares": 931159500,17#       "value_usd": 145678234560,18#       "report_date": "2024-09-30",19#       "report_quarter": "Q3 2024"20#     },21#     { ... }22#   ],23#   "count": 45,24#   "source": "warehouse:thomson_13f"25# }26 27# Get position changes (QoQ deltas) for Apple28curl -H "Authorization: Bearer $TENGU_API_KEY" \29  "https://firm.tengu.co/api/v3/intel/sec13f/changes?ticker=AAPL&min_pct=5.0"30 31# Response structure:32# {33#   "ok": true,34#   "timestamp": "2024-12-16T14:22:15Z",35#   "ticker": "AAPL",36#   "fund": null,37#   "min_pct": 5.0,38#   "items": [39#     {40#       "fund_name": "Bridgewater Associates",41#       "manager_cik": "0000824348",42#       "ticker": "AAPL",43#       "previous_shares": 2000000,44#       "current_shares": 2500000,45#       "pct_change": 25.0,46#       "prev_report_date": "2024-06-30",47#       "curr_report_date": "2024-09-30"48#     },49#     { ... }50#   ],51#   "count": 12,52#   "source": "warehouse:thomson_13f"53# }
Python
1import os, requests2 3# Fetch top 13F holders for a stock4r = requests.get(5    "https://firm.tengu.co/api/v3/intel/sec13f",6    params={"ticker": "AAPL", "limit": 50},7    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},8    timeout=30,9)10r.raise_for_status()11data = r.json()12for holding in data["items"][:5]:13    print(f"{holding['fund_name']}: {holding['shares']:,} shares (${holding['value_usd']:,.0f})")14 15# Track top shareholders for a ticker16r = requests.get(17    "https://firm.tengu.co/api/v3/intel/top_shareholders/AAPL",18    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},19    timeout=30,20)21r.raise_for_status()22profile = r.json()23print(f"\nTop {len(profile['ownership'])} shareholders as of {profile['report_date']}")24for holder in profile["ownership"][:10]:25    print(f"  {holder['holder']}: {holder['shares']:,} shares")

Example 2: Monitor insider activity and cluster buys#

Shell
1# Get the live insider transaction feed2curl -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.tengu.co/api/v3/intel/insiders?ticker=NVDA&limit=25"4 5# Response structure:6# {7#   "ok": true,8#   "timestamp": "2024-12-16T14:22:30Z",9#   "ticker": "NVDA",10#   "items": [11#     {12#       "insider_name": "Jensen Huang",13#       "title": "CEO, President",14#       "ticker": "NVDA",15#       "transaction_type": "Sale",16#       "shares": 5000,17#       "price_usd": 142.50,18#       "value_usd": 712500,19#       "as_of_ts": "2024-12-10T16:30:00Z"20#     },21#     { ... }22#   ],23#   "count": 8,24#   "source": "vendor:quiver"25# }26 27# Get insider cluster buys (smart money patterns)28curl -H "Authorization: Bearer $TENGU_API_KEY" \29  "https://firm.tengu.co/api/insider/clusters?limit=25"30 31# Response structure:32# {33#   "ok": true,34#   "timestamp": "2024-12-16T14:22:45Z",35#   "clusters": [36#     {37#       "ticker": "UVXY",38#       "cluster_score": 0.4,39#       "n_buyers": 2,40#       "total_value_usd": 485000,41#       "window_days": 30,42#       "as_of_ts": "2024-12-10T18:00:00Z"43#     },44#     { ... }45#   ],46#   "n": 8,47#   "source": "computed_from_bronze.quiver_insiders"48# }
Python
1import os, requests2 3# Pull insider activity for a ticker4r = requests.get(5    "https://firm.tengu.co/api/v3/intel/insiders",6    params={"ticker": "NVDA", "limit": 50},7    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},8    timeout=30,9)10r.raise_for_status()11data = r.json()12print(f"Recent insider trades in {data['ticker']}:")13for trade in data["items"][:10]:14    print(f"  {trade['insider_name']} ({trade['title']}) {trade['transaction_type'].lower()}: "15          f"{trade['shares']:,} @ ${trade['price_usd']:.2f}")16 17# Detect multi-insider cluster buys (smart-money signal)18r = requests.get(19    "https://firm.tengu.co/api/insider/clusters",20    params={"limit": 50},21    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},22    timeout=30,23)24r.raise_for_status()25clusters = r.json()26print(f"\nSmart-money cluster buys (2+ insiders, 30-day window):")27for cluster in clusters["clusters"]:28    print(f"  {cluster['ticker']}: {cluster['n_buyers']} insiders, "29          f"score={cluster['cluster_score']}, value=${cluster['total_value_usd']:,.0f}")

Example 3: Mutual-fund ownership base for a stock#

See which registered mutual funds hold a stock and how concentrated the ownership is, from the CRSP survivor-bias-free holdings archive. CRSP carries the usual academic lag — the archive ends 2021-12-31 — so with no ?date= the latest available quarter-end is returned, and the report_dt served comes back in the response.

Shell
1# Billion-dollar-plus mutual-fund holders of Apple, latest available quarter2curl -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.tengu.co/api/v3/funds/mutual_fund_ownership/AAPL?top=25&min_market_val=1e9"4 5# Response structure:6# {7#   "ok": true,8#   "timestamp": "2024-12-16T14:23:30Z",9#   "ticker": "AAPL",10#   "report_dt": "2021-12-31",11#   "mode": "latest_available",12#   "coverage": { "start": "2002-01-31", "end": "2021-12-31" },13#   "n_funds": 38,14#   "n_returned": 25,15#   "truncated": true,16#   "min_market_val": 1000000000.0,17#   "funds": [18#     {19#       "crsp_portno": 1021966,20#       "security_name": "APPLE INC",21#       "percent_tna": 5.84,22#       "nbr_shares": 42150000,23#       "market_val": 7482000000,24#       "permno": 14593,25#       "cusip": "037833100"26#     },27#     { ... }28#   ],29#   "source": "warehouse:bronze.mutual_fund_holdings"30# }
Python
1import os, requests2 3r = requests.get(4    "https://firm.tengu.co/api/v3/funds/mutual_fund_ownership/AAPL",5    params={"top": 25, "min_market_val": 1e9},6    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},7    timeout=30,8)9r.raise_for_status()10data = r.json()11print(f"{data['ticker']}: {data['n_funds']} mutual-fund holders "12      f"as of {data['report_dt']}")13for fund in data["funds"][:10]:14    print(f"  {fund['security_name']}: ${fund['market_val'] / 1e9:.2f}B "15          f"({fund['percent_tna']:.2f}% of fund TNA)")