13F API (Institutional Holdings)
See what the smart money owns. The 13F API delivers institutional holdings — positions, share counts, and market values — for every 13F filer, with quarter-over-quarter changes.
What is Form 13F?
Form 13F is the quarterly holdings report filed by institutional investment managers with over $100 million in qualifying U.S. equity assets under management.
It reveals what hedge funds, asset managers, and pension funds hold: each position’s security, CUSIP, share count, and market value as of quarter end.
The Finsider 13F API normalizes those holdings and computes position changes, so you can track whale activity, build clone portfolios, and analyze institutional flows.
Fetch Form 13F filings
List recent Form 13F filings, filterable by company, ticker, and date.
curl -s "https://api.secapi.dev/v1/filings?formTypes=13F-HR&limit=20" \
-H "x-api-key: $SECAPI_KEY"import requests
resp = requests.get(
"https://api.secapi.dev/v1/filings?formTypes=13F-HR&limit=20",
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)const res = await fetch("https://api.secapi.dev/v1/filings?formTypes=13F-HR&limit=20", {
method: "GET",
headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/filings?formTypes=13F-HR&limit=20", nil)
req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Get a fund’s latest holdings
Fetch the full 13F portfolio for a manager by CIK (example: Berkshire Hathaway).
curl -s "https://api.secapi.dev/v1/institutions/1067983/holdings" \
-H "x-api-key: $SECAPI_KEY"import requests
resp = requests.get(
"https://api.secapi.dev/v1/institutions/1067983/holdings",
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)const res = await fetch("https://api.secapi.dev/v1/institutions/1067983/holdings", {
method: "GET",
headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/institutions/1067983/holdings", nil)
req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Track quarter-over-quarter changes
Pull position history to see what a manager bought and sold.
curl -s "https://api.secapi.dev/v1/institutions/1067983/holdings/history" \
-H "x-api-key: $SECAPI_KEY"import requests
resp = requests.get(
"https://api.secapi.dev/v1/institutions/1067983/holdings/history",
headers={"x-api-key": "YOUR_API_KEY"},
timeout=30,
)
resp.raise_for_status()
data = resp.json()
print(data)const res = await fetch("https://api.secapi.dev/v1/institutions/1067983/holdings/history", {
method: "GET",
headers: { "x-api-key": process.env.SECAPI_KEY },
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const data = await res.json();
console.log(data);package main
import (
"fmt"
"io"
"log"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.secapi.dev/v1/institutions/1067983/holdings/history", nil)
req.Header.Set("x-api-key", os.Getenv("SECAPI_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}Who files Form 13F?
| Filer | Requirement |
|---|---|
| Institutional managers | $100M+ in qualifying 13(f) securities |
| Hedge funds | Report long U.S. equity positions |
| Asset managers | Mutual funds, ETFs, pensions, advisers |
| Deadline | Within 45 days of quarter end |
Deadlines & coverage
| Aspect | Detail |
|---|---|
| Frequency | Quarterly (13F-HR) |
| Deadline | 45 days after quarter end |
| Lag | Holdings are as of quarter end, reported with a delay |
| Amendments | 13F-HR/A restates a prior filing |
Key data fields
A sample of the structured fields returned for Form 13F data.
| Field | Description |
|---|---|
securityName / ticker / cusip | Identifies each holding |
shares | Number of shares held |
value | Market value at quarter end (USD) |
periodOfReport | Quarter-end date the holdings reflect |
putCall | Option type, if the position is an option |
changeInShares | Quarter-over-quarter position change |
Related API endpoints
Deep-link into the interactive reference to try these live.
Frequently asked questions
What is the 13F API?
How do I get a hedge fund’s holdings?
/v1/institutions, then call /v1/institutions/{cik}/holdings to retrieve their latest 13F portfolio.Can I see what funds bought and sold?
Why is 13F data delayed?
Build with the 13F API
Create a free account, grab an API key, and make your first request in under a minute.