INSTITUTIONAL · FORM 13F
The 13F holdings API, position by position.
Every institutional manager over $100M files a Form 13F listing their U.S.-equity positions. Filingrail’s 13F endpoint turns those filings into one clean JSON row per position — issuer, CUSIP, market value, shares, and voting authority — with a link to the source filing on every response.
Free tier: 50 requests/day, no credit card. Endpoint: GET /v1/institutions/{cik}/13f-holdings
The fields
What every record carries.
Filingrail parses the underlying SEC filing into a flat, typed JSON object. These are the fields you get on each record:
| Field | What it is |
|---|---|
| institution_name | The reporting manager (e.g. BERKSHIRE HATHAWAY INC). |
| institution_cik | SEC CIK of the filing institution. |
| issuer_name | Name of the held security’s issuer. |
| issuer_cusip | CUSIP of the held security — the primary join key for 13F data. |
| title_of_class | Class of security held (e.g. COM). |
| value_usd | Market value of the position in whole USD (SEC moved off thousands-reporting in 2022). |
| shares | Share or principal amount held. |
| investment_discretion | SOLE, SHARED, or DEFINED investment discretion, per the filing. |
| voting_authority_sole | Shares over which the manager has sole voting authority. |
| voting_authority_shared | Shares with shared voting authority. |
SAMPLE
A real-shaped response.
One GET returns the data array plus a meta
block. The values below are an illustrative example of the response shape.
The field that matters most for trust is the link to the source filing on
sec.gov — filing_url on each
record where the rows come from many filings, and
meta.source_filing_url where one filing backs the whole
response. Either way, any value you surface traces back to its source.
{
"data": [
{
"institution_name": "BERKSHIRE HATHAWAY INC",
"institution_cik": 1067983,
"issuer_name": "APPLE INC",
"issuer_cusip": "037833100",
"title_of_class": "COM",
"value_usd": 69900000000,
"shares": 300000000,
"investment_discretion": "DFND",
"accession_number": "0001193125-26-226661",
"filing_url": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526226661/0001193125-26-226661-index.htm"
}
],
"meta": {
"cik": "0001067983",
"as_of": "2026-08-13T08:00:00Z"
}
}Illustrative example. Every record links to its source filing.
HOW-TO
How to pull an institution's 13F holdings with Filingrail
Subscribe on RapidAPI, find the institution CIK, call the 13F endpoint, and read every position with its market value and voting authority.
- 1
Subscribe on RapidAPI
Subscribe to the free Basic tier (50 requests/day) on the Filingrail RapidAPI listing and copy your X-RapidAPI-Key.
- 2
Find the institution CIK
Use /v1/search/companies to resolve a manager name to its SEC CIK (e.g. Berkshire Hathaway → 1067983).
- 3
Call the 13F endpoint
Request GET /v1/institutions/{cik}/13f-holdings for the newest quarter of positions.
- 4
Trace any position to its filing
Open the filing_url on any holding to verify it against the original 13F on sec.gov.
curl --request GET \
--url 'https://filingrail.p.rapidapi.com/v1/institutions/1067983/13f-holdings' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: filingrail.p.rapidapi.com'import os, requests
API = "https://filingrail.p.rapidapi.com"
HEADERS = {
"X-RapidAPI-Key": os.environ["RAPIDAPI_KEY"],
"X-RapidAPI-Host": "filingrail.p.rapidapi.com",
}
# Berkshire Hathaway's CIK is 1067983
r = requests.get(f"{API}/v1/institutions/1067983/13f-holdings",
headers=HEADERS, timeout=10)
r.raise_for_status()
payload = r.json()
top = sorted(payload["data"], key=lambda h: h["value_usd"], reverse=True)[:10]
for h in top:
print(f'{h["issuer_name"]:<28} ${h["value_usd"]:>15,} '
f'{h["shares"]:>13,} sh')
print("source:", top[0]["filing_url"])FAQ
Common questions
Still wondering something? Email support@hudsonenterprisesllc.com — same business day response.
What is a 13F holdings API?
What is the endpoint and what does it return?
How do I find an institution’s CIK?
How current are the holdings?
Is there a free tier?
Why does every record include a source filing URL?
Start on the free tier.
50 requests/day, no credit card. Query the endpoint and read the source filing behind every record.