Docs / API reference

GET /v1/holdings/{identifier}

A fund's latest 13F portfolio, parsed from the SEC information table, ranked by value, and diffed against the prior quarter so every position is labelled new / added / reduced / unchanged, with exits listed separately.

identifier is a FUND, not a company ticker. Pass a known name (berkshire, burry, pershing-square), a CIK, or a ticker whose company is itself the filer (BRK-B). A company ticker like AAPL has no 13F of its own — to see who holds a company, use /v1/activist.

Parameters

ParamInValues
identifierpathfund name, CIK, or filer ticker — not a company ticker
limitquery1–500 positions (default 50)
changesquerytrue (default) to diff against the prior quarter

Request

curl "https://api.edgrapi.com/v1/holdings/berkshire?limit=20" -H "X-API-Key: edgr_..."

Response

{
  "manager": "Berkshire Hathaway", "cik": "0001067983",
  "period": "2025-06-30", "total_value": 258712000000,
  "positions": [
    { "issuer": "APPLE INC", "cusip": "037833100", "ticker": "AAPL",
      "value": 66000000000, "shares": 300000000, "pct_portfolio": 25.5,
      "put_call": null, "change": { "status": "reduced" } }
  ],
  "exits": [ { "issuer": "HP INC", "cusip": "40434L105" } ],
  "changes": { "new": 2, "added": 5, "reduced": 3, "exited": 1 },
  "source": "SEC EDGAR Form 13F-HR (information table)"
}
The parsing traps we handle. Positions are aggregated by CUSIP (funds split one holding across sub-managers, so the raw table double-counts). A put_call of PUT is a bearish bet, not a long — reporting it as a holding is the classic 13F mistake. Pre-2023 filings report value in thousands, newer ones in whole dollars; we normalize to whole dollars.

Cost: 5 credits. 13F is a quarterly snapshot, filed up to 45 days after quarter-end.