Skip to main content
AAPLMSFTGOOGLMETANVDABRK-BAMZNJPMBACKOCVXOXYAXPCMGV
HoldLens logoHoldLens
Shipped · Free · No auth

Public JSON API

Every ranked list, every ConvictionScore, every tracked manager — as static JSON under holdlens.com/api/v1/. No API key. No rate limit beyond CDN edge caching. Attribution appreciated, not required.

Dataroma has no API at all — HoldLens has 17 free endpoints powering everything on the site.

Quick start

Every endpoint is a static JSON file. Call it from anything — curl, Python, a React component, a Google Sheet:

curl https://holdlens.com/api/v1/big-bets.json | jq '.data[0]'

# or in Python
import requests
r = requests.get("https://holdlens.com/api/v1/scores/NVDA.json")
print(r.json()["data"]["score"])

Responses are a thin envelope: { data, meta }. All prices derived from SEC 13F filings. Last refreshed every quarter within 45 days of period end.

Endpoints (17)

GET/api/v1/index.json

Catalog of every endpoint exposed by the API.

Example response
{
  "name": "HoldLens Public JSON API",
  "version": "v1",
  "base_url": "https://holdlens.com/api/v1",
  "quarter": "2025-Q4",
  "endpoints": [ /* ... */ ]
}
GET/api/v1/scores.json

Every tracked ticker ranked by the unified signed −100..+100 ConvictionScore.

Example response
{
  "data": [
    {
      "ticker": "NVDA",
      "name": "NVIDIA Corp",
      "sector": "Technology",
      "score": 68,
      "direction": "BUY",
      "label": "High conviction BUY",
      "buyer_count": 8,
      "seller_count": 1,
      "owner_count": 12
    }
  ],
  "meta": { "count": 94, "quarter": "2025-Q4" }
}
GET/api/v1/scores/{ticker}.json

Full breakdown for a single ticker — every layer of the conviction model.

Example response
{
  "data": {
    "ticker": "NVDA",
    "score": 68,
    "direction": "BUY",
    "breakdown": {
      "smartMoney": 22, "insiderBoost": 8, "trackRecord": 14,
      "trendStreak": 10, "concentration": 7, "contrarian": 0,
      "dissentPenalty": 3, "crowdingPenalty": 4
    }
  }
}
GET/api/v1/signals/buys.json

Top 100 buy signals sorted by score descending.

Example response
{ "data": [ { "ticker": "NVDA", "score": 68, "buyer_count": 8 } ] }
GET/api/v1/signals/sells.json

Top 100 sell signals sorted by score ascending.

Example response
{ "data": [ { "ticker": "BABA", "score": -22, "seller_count": 3 } ] }
GET/api/v1/managers.json

All 30 tracked superinvestors with quality score and 10y CAGR.

Example response
{
  "data": [
    {
      "slug": "warren-buffett",
      "name": "Warren Buffett",
      "fund": "Berkshire Hathaway",
      "quality_score": 10,
      "cagr_10y": 13.2,
      "top_holding": "AAPL",
      "top_holding_pct": 22.4
    }
  ]
}
GET/api/v1/managers/{slug}.json

Manager detail: holdings, recent quarterly moves, bio, philosophy.

Example response
{
  "data": {
    "slug": "warren-buffett",
    "name": "Warren Buffett",
    "cagr_10y": 13.2,
    "holdings": [ { "ticker": "AAPL", "pct": 22.4 } ],
    "recent_moves": [
      { "quarter": "2025-Q4", "ticker": "BAC", "action": "trim" }
    ]
  }
}
GET/api/v1/big-bets.json

Top 100 conviction × position-size ranked bets across all managers.

Example response
{
  "data": [
    {
      "rank": 1,
      "manager": "Bill Ackman",
      "fund": "Pershing Square Capital",
      "ticker": "CMG",
      "position_pct": 21.4,
      "conviction_score": 34,
      "combined_score": 727.6
    }
  ]
}
GET/api/v1/rotation.json

12-sector × 8-quarter signed net-flow heatmap. Green = buying, red = selling.

Example response
{
  "data": [
    {
      "sector": "Technology",
      "quarters": {
        "2025-Q4": { "net": 8.4, "buys": 12, "sells": 3 }
      }
    }
  ]
}
GET/api/v1/sector/{slug}.json

Per-sector drilldown: tickers ranked by conviction, top managers overweight in the sector, 8Q flow. One-click from the rotation heatmap. Slugs: technology, financials, energy, healthcare, consumer-discretionary, consumer-staples, industrials, materials, real-estate, communication, utilities.

Example response
{
  "data": {
    "sector": "Technology",
    "slug": "technology",
    "stats": { "ticker_count": 16, "avg_conviction": 7.9, "net_flow_4q": 75.3 },
    "tickers": [ { "ticker": "NVDA", "conviction_score": 19, "direction": "BUY" } ],
    "top_managers": [ { "name": "Michael Burry", "sector_pct": 62.4 } ]
  }
}
GET/api/v1/alerts.json

Top 200 high-impact 13F moves where a single position change shifted more than 5% of a superinvestor's portfolio. The raw feed behind the /alerts page email digest.

Example response
{
  "data": [
    {
      "ticker": "NVDA",
      "action": "new",
      "manager": "Michael Burry",
      "quarter": "2025-Q1",
      "portfolio_impact_pct": 49.0,
      "conviction_score": 19
    }
  ]
}
GET/api/v1/consensus.json

Widely-held tickers (≥5 superinvestor owners) that ALSO have positive ConvictionScore AND net-buying flow in the last 2 quarters. Where smart money agrees.

Example response
{
  "data": [
    {
      "rank": 1,
      "ticker": "META",
      "owner_count": 15,
      "conviction_score": 5,
      "recent_buyers": 6,
      "recent_sellers": 0,
      "score": 177.0
    }
  ]
}
GET/api/v1/crowded.json

Top 30 tickers by ownership, each tagged loading / unwinding / stable based on last 2Q flow. Crowded + unwinding = the exit is about to get ugly.

Example response
{
  "data": [
    {
      "rank": 1,
      "ticker": "META",
      "owner_count": 15,
      "conviction_score": 5,
      "net_direction": "loading"
    }
  ]
}
GET/api/v1/contrarian.json

Tickers where ≥2 superinvestors are buying AND ≥2 others are selling in the same 4-quarter window. The disagreement signal Dataroma can't show. Returns per-ticker split of who's on each side.

Example response
{
  "data": [
    {
      "rank": 1,
      "ticker": "META",
      "buyer_count": 16,
      "seller_count": 9,
      "buyers": [ { "slug": "bill-ackman", "name": "Bill Ackman" } ],
      "sellers": [ { "slug": "david-tepper", "name": "David Tepper" } ]
    }
  ]
}
GET/api/v1/best-now.json

Top 50 buy candidates — what the smartest investors are buying right now.

Example response
{ "data": [ { "ticker": "NVDA", "score": 68, "direction": "BUY" } ] }
GET/api/v1/value.json

Top 50 smart-money buys for value overlay with your own 52w-range feed.

Example response
{ "data": [ { "ticker": "BABA", "score": 42 } ] }
GET/api/v1/quarters.json

List of available 13F quarters with labels.

Example response
{ "data": [ { "quarter": "2025-Q4", "label": "Q4 2025" } ] }
HoldLens Pro · Founders pricing
Email alerts + conviction scores + alpha attribution
€9/mo founders · cancel anytime
See pricing →

Embed a ConvictionScore badge

Drop the signed −100..+100 ConvictionScore for any tracked ticker onto your blog, newsletter, or Notion page. Static, no JS load, no API key, no rate limit. Shares the same glyph set as the live site so it looks native on any dark background.

Basic iframe (recommended)
<iframe
  src="https://holdlens.com/embed/NVDA/"
  width="200"
  height="280"
  loading="lazy"
  style="border: 0; border-radius: 14px;"
  title="NVDA ConvictionScore — HoldLens"
></iframe>

Swap NVDA for any tracked ticker. Recommended size: 200×280 px. Responsive-safe.

Tracked tickers

94 supported tickers today (every entry on the ticker index). Pass the symbol as ALL-CAPS — /embed/AAPL/, not /embed/aapl/. Unknown symbols 404.

Attribution

Every badge includes a holdlens.com ↗ link at the bottom. Please don’t strip it — it’s how we keep the widget free forever.

Data freshness + licensing

Source: SEC 13F filings (every tracked manager). Quarterly refresh cadence — typically within 45 days of quarter end.

License: Free for personal and commercial use. Attribution appreciated but not required. Do not redistribute as your own API.

Caching: All JSON is statically exported and served from Cloudflare’s edge — effectively unlimited throughput for normal usage.

Not investment advice. Backtest yourself. See methodology.

Want the data on HoldLens.com too?

Every endpoint above powers a page on the site. Start with the Big Bets screen or the Sector Rotation heatmap.