Free 13F Fund Holdings API
Quarterly portfolios of 30 famous funds, parsed from SEC 13F-HR filings. Berkshire Hathaway, Bridgewater, Citadel, Pershing Square, Scion, and more, with position values, share counts, portfolio weights, and quarter-over-quarter changes.
Endpoints
/api/markets/funds/{slug}e.g. berkshire-hathawayLatest reported quarter for one fund: top 200 holdings by value. An unknown slug returns the full list of valid fund slugs.
/api/markets/funds/csvHoldings across all funds and recent quarters as CSV, newest first (50k row cap).
Example
import requests
r = requests.get("https://xoomar.com/api/markets/funds/berkshire-hathaway")
data = r.json()
print(data["fund"]["name"], data["quarter"])
for h in data["holdings"][:5]:
print(h["issuerName"], h["valueUsd"], h["pctOfPortfolio"])Response Shape
Every endpoint returns the same JSON envelope: { data, updatedAt, source, docs }. The data field is an array of records with these fields:
| Field | Type | Description |
|---|---|---|
| fund | object | slug, name, manager, and SEC CIK of the fund |
| quarter | string (date) | null | Reporting quarter end, e.g. 2026-03-31 |
| holdings[].issuerName | string | Issuer name as filed |
| holdings[].valueUsd | number | Position value in US dollars |
| holdings[].shares | number | null | Shares or principal amount held |
| holdings[].pctOfPortfolio | string | null | Position weight within the reported portfolio |
| holdings[].changeShares | number | null | Share change vs the prior quarter; null for new positions |
13F filings are due 45 days after quarter end, so the latest quarter reflects positions up to that lag. Only long US-listed positions are reportable on 13F.
Numeric values arrive as strings where precision matters (prices, rates); parse with your language's decimal type for accounting-grade math. Rate limiting is fair-use per IP; a 429 response includes a Retry-After header. No authentication or API key needed. Attribution is appreciated: xoomar.com/markets.
Need more headroom? A free account raises your limit to 120 requests a minute with an X-API-Key header.
Frequently Asked Questions
Which funds are covered?
How much history is available?
Why is the data delayed?
What are the rate limits?
Data on this page is provided for informational purposes only and is not financial advice. See our editorial policy.