SEC Form 13F Holdings Crawler - Institutional Portfolio Data
SEC Form 13F Holdings Crawler - Institutional Portfolio Data
Extract every position from SEC Form 13F-HR institutional holdings filings into structured, row-per-holding data. One row per security held, with CUSIP, issuer, shares, USD value, voting authority, and put/call flags.
Every U.S. institutional investment manager with discretion over $100M or more in 13(f) securities must file a Form 13F-HR with the SEC within 45 days of each quarter's end. This actor parses the filed Information Table XML into clean tabular data — no HTML scraping, no anti-bot hoops, no API keys.
Features
- Four query modes — track a hedge fund (
by_filer), see who owns a stock (by_ticker), search by explicit security ID (by_cusip), or sweep every 13F-HR for a quarter (by_period). - Row-per-holding output — each dataset record is one position. Pivot, aggregate, or join downstream.
- Ticker guessing — best-effort CUSIP-to-ticker resolution via SEC's public ticker map (
company_tickers.json). Blank when not resolvable. - Value normalization — SEC changed the "value" field from thousands-of-dollars to whole-dollars for period-of-report 2022-12-31 onward. This actor normalizes both eras to whole USD.
- Amendment aware — optionally include 13F-HR/A amendments (off by default, since amendments typically supersede originals for specific positions only).
- No proxy, no auth — uses documented SEC EDGAR endpoints with a compliant User-Agent. Rate-limited to stay well under SEC's 10-req/sec fair-access policy.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | by_filer |
Query strategy: by_filer, by_ticker, by_cusip, by_period |
filerCiks |
array of string | ["0001067983"] |
10-digit CIK(s) of fund managers to track. Used with by_filer. |
filerNames |
array of string | (empty) | Fund manager names to resolve via EDGAR full-text search (fallback when CIK unknown). |
tickers |
array of string | (empty) | Ticker symbols to search ownership for. Used with by_ticker (full-text search on the ticker). |
cusips |
array of string | (empty) | 9-character CUSIPs to search ownership for. Used with by_cusip. |
quarters |
array of string | (empty) | Quarters in YYYYQn format (e.g. 2025Q4). Required for by_period; optional filter for other modes. |
includeAmendments |
boolean | false |
Include 13F-HR/A amendment filings. |
maxItems |
integer | 50 |
Maximum number of holdings rows to return. |
proxyConfiguration |
object | { useApifyProxy: false } |
Optional proxy. Not needed — SEC endpoints work fine without one. |
Example Inputs
Track Berkshire Hathaway's most recent holdings:
{
"mode": "by_filer",
"filerCiks": ["0001067983"],
"maxItems": 200
}
Track multiple funds by name:
{
"mode": "by_filer",
"filerNames": ["Bridgewater Associates", "Renaissance Technologies"],
"quarters": ["2025Q4"],
"maxItems": 500
}
Find who owns Apple:
{
"mode": "by_cusip",
"cusips": ["037833100"],
"quarters": ["2025Q4"],
"maxItems": 500
}
Sweep all 13F-HR filings for a quarter:
{
"mode": "by_period",
"quarters": ["2025Q4"],
"maxItems": 2000
}
Output
Every record is a single 13F holding.
{
"accession_number": "0001193125-26-054580",
"filing_date": "2026-02-17",
"period_of_report": "2025-12-31",
"filer_name": "Berkshire Hathaway Inc",
"filer_cik": "0001067983",
"filer_type": "13F HOLDINGS REPORT",
"issuer_name": "APPLE INC",
"cusip": "037833100",
"ticker_guess": "AAPL",
"class_title": "COM",
"value_usd": 74990132000,
"shares_or_principal": 300000000,
"shares_or_principal_type": "SH",
"put_call": "",
"investment_discretion": "DFND",
"voting_authority_sole": 300000000,
"voting_authority_shared": 0,
"voting_authority_none": 0,
"quarter": "2025Q4"
}
Field Reference
| Field | Description |
|---|---|
accession_number |
SEC accession number (unique filing ID) |
filing_date |
Date the filing was submitted (YYYY-MM-DD) |
period_of_report |
Quarter-end date the filing covers (YYYY-MM-DD) |
filer_name |
Fund manager legal name |
filer_cik |
10-digit zero-padded CIK |
filer_type |
Filer type from 13F cover page (usually 13F HOLDINGS REPORT) |
issuer_name |
Issuer legal name as reported on the Information Table |
cusip |
9-character CUSIP identifier |
ticker_guess |
Best-effort ticker from SEC's public ticker map; blank if no confident match |
class_title |
Security class (COM, PREF, WRT, NOTE, etc.) |
value_usd |
Position value in USD, normalized across pre/post-2022 SEC reporting changes |
shares_or_principal |
Shares held (when shares_or_principal_type=SH) or principal amount (PRN) |
shares_or_principal_type |
SH (shares) or PRN (principal) |
put_call |
PUT, CALL, or empty for direct holdings |
investment_discretion |
SOLE, DFND, or OTR |
voting_authority_sole |
Shares with sole voting authority |
voting_authority_shared |
Shares with shared voting authority |
voting_authority_none |
Shares with no voting authority |
quarter |
Reporting quarter (YYYYQn) |
Use Cases
- 13F portfolio cloning — replicate hedge fund positions for your own portfolio
- Ownership analysis — identify which funds hold a given stock and how concentrations are changing
- Quarter-over-quarter diffs — detect new positions and exits across managers
- Fund research — see a manager's full portfolio at any quarter-end since 2013
- Compliance — audit institutional ownership for regulatory or fund-of-funds research
Data Sources
This actor combines three documented SEC endpoints:
- Company submissions API —
https://data.sec.gov/submissions/CIK{10-digit}.jsonfor per-CIK filing history. - Full-text filing search —
https://efts.sec.gov/LATEST/search-indexfor searching by ticker, CUSIP, entity name, or date range. - Filing archive —
https://www.sec.gov/Archives/edgar/data/{cik}/{acc}/for rawprimary_doc.xmland Information Table XML.
No authentication required. Respects SEC's fair-access policy (10 req/sec with a descriptive User-Agent).
Limitations
ticker_guessis best-effort — SEC does not publish a free CUSIP-to-ticker database, so ticker resolution is done by fuzzy name matching againstcompany_tickers.json. It is accurate for household-name issuers but blank for bonds, warrants, illiquid securities, and many foreign ADRs.- EFTS hard cap of 10,000 hits per query — for
by_periodsweeps covering an entire quarter of ~9,000 filers, split by date range or useby_filerbucketing. value_usdpre-2023 — filings withperiod_of_reportbefore 2022-12-31 report values in thousands; this actor multiplies those by 1,000 for consistency. Verify against the raw Information Table if auditing old filings.- 13F-HR/A amendments — optional (
includeAmendments: true). Amendments often restate only specific rows; combine with originals carefully when doing time-series analysis.
Need More Features?
If you'd like to add new data fields, CUSIP-to-ticker resolution via a paid feed, or custom output formats, please get in touch — we build custom versions on request.