SEC 13F Institutional Holdings Scraper
Pricing
from $10.20 / 1,000 results
SEC 13F Institutional Holdings Scraper
Scrape SEC Form 13F institutional holdings for any hedge fund or asset manager. For a manager name or CIK, get their latest quarterly filing with each equity position: issuer, CUSIP, market value in USD, shares, put/call, investment discretion and voting authority. Export to JSON, CSV or Excel.
Pricing
from $10.20 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
SEC 13F Institutional Holdings Scraper
Here is one real result, with every field the actor returns:
{"managerName": "BERKSHIRE HATHAWAY INC","managerCik": "1067983","form": "13F-HR","filingDate": "2026-05-15","reportPeriod": "2026-03-31","accessionNumber": "0001193125-26-226661","nameOfIssuer": "ALLY FINL INC","titleOfClass": "COM","cusip": "02005N100","figi": null,"valueRaw": 498992850,"valueUsd": 498992850,"valueUnit": "usd","impliedPricePerShare": 39.23,"positionValueUsd": 1137670000,"portfolioValueUsd": 263095703570,"portfolioPercent": 0.43,"portfolioRank": 18,"holdingsInFiling": 90,"sharesOrPrincipalAmount": 12719675,"sharesType": "SH","putCall": null,"investmentDiscretion": "DFND","otherManager": "4","votingSole": 12719675,"votingShared": 0,"votingNone": 0,"changeType": "UNCHANGED","priorShares": 29000000,"sharesChange": 0,"sharesChangePercent": 0,"priorReportPeriod": "2025-12-31","filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526226661/","source": "SEC EDGAR 13F","observedAt": "2026-08-10T14:30:18.856Z"}
The most complete SEC 13F holdings scraper available. It returns every position an institutional manager discloses in its latest 13F filing, plus derived analytics 13F itself omits: portfolio weight, rank, implied price per share, and a quarter-over-quarter change signal (NEW, ADDED, REDUCED, UNCHANGED) against the prior filing.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
Give the actor an institutional manager (a hedge fund or asset manager) by name or SEC CIK. It resolves the manager on SEC EDGAR, finds their latest quarterly 13F-HR filing, parses the information table, and writes one record per disclosed equity position to the run's dataset. Each record carries the raw 13F fields (issuer, CUSIP, market value, shares, voting authority, discretion) and a set of derived analytics computed across the whole filing: total portfolio value, each position's weight and rank, and an implied price per share.
When the prior 13F filing can be read, each position also gets a quarter-over-quarter change signal: changeType (NEW, ADDED, REDUCED, UNCHANGED), priorShares, sharesChange, and sharesChangePercent. Market values before the 2023-01-01 period end are reported in thousands of USD, which the actor normalizes and labels in valueUnit.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 10 largest holdings from Berkshire Hathaway's latest 13F.
{"manager": "Berkshire Hathaway","maxHoldings": 10}
Pass a manager name (for example Bridgewater Associates, Scion Asset Management) or a SEC CIK number (for example 0001067983). Increase maxHoldings to pull the full portfolio.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
manager | string | yes | Berkshire Hathaway | The hedge fund or asset manager to look up, by company name or by SEC CIK number (for example 0001067983). |
maxHoldings | integer | no | 10 | Maximum number of holdings to return from the latest 13F filing. |
Output reference
One dataset item per position. Types: string, number, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
managerName | string | Name of the filing institutional manager. |
managerCik | string | SEC CIK of the manager (no leading zeros). |
form | string | Filing form type, 13F-HR or 13F-HR/A. |
filingDate | string | Date the filing was submitted (YYYY-MM-DD). |
reportPeriod | string | Period end the filing reports on (YYYY-MM-DD). |
accessionNumber | string | SEC accession number of the filing. |
nameOfIssuer | string | Issuer name of the held security. |
titleOfClass | string | Share class title, for example COM. |
cusip | string | CUSIP identifier of the security. |
figi | string | FIGI identifier, or null when not disclosed. |
valueRaw | number | Market value exactly as filed (see valueUnit). |
valueUsd | number | Market value normalized to whole USD. |
valueUnit | string | Unit of valueRaw: usd or thousands_usd. |
impliedPricePerShare | number | Market value divided by shares. null for principal-amount (bond) lines. |
positionValueUsd | number | Total USD value of the position, summed across split lines. |
portfolioValueUsd | number | Total USD value of all positions in the filing. |
portfolioPercent | number | This position's weight in the portfolio, as a percentage. |
portfolioRank | number | Rank of this position by value within the filing (1 = largest). |
holdingsInFiling | number | Number of information-table lines in the filing. |
sharesOrPrincipalAmount | number | Shares held, or principal amount for debt. |
sharesType | string | SH for shares or PRN for principal amount. |
putCall | string | Put, Call, or null for a direct holding. |
investmentDiscretion | string | Discretion code, for example DFND, SOLE. |
otherManager | string | Reference to co-managers on the position, or null. |
votingSole | number | Shares with sole voting authority. |
votingShared | number | Shares with shared voting authority. |
votingNone | number | Shares with no voting authority. |
changeType | string | NEW, ADDED, REDUCED, UNCHANGED, or null when the prior filing is unavailable. |
priorShares | number | Shares held in the prior 13F, or null. |
sharesChange | number | Change in shares vs the prior filing, or null. |
sharesChangePercent | number | Percent change in shares vs the prior filing, or null. |
priorReportPeriod | string | Period end of the prior 13F used for comparison, or null. |
filingUrl | string | Direct SEC EDGAR link to the filing folder. |
source | string | Always SEC EDGAR 13F. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
On a failed run, a single item with a populated error field is written instead, and it is not charged.
Derived field notes
changeTypeand theprior*/sharesChange*fields are best-effort. If the prior 13F cannot be read, they staynulland the run still succeeds.portfolioPercentandpositionValueUsdaggregate lines that split a single CUSIP across co-managers or voting buckets, so a position's totals reflect the full holding, not one row.
Example output record
Real record from a live run (input {"manager": "Berkshire Hathaway", "maxHoldings": 10}):
{"managerName": "BERKSHIRE HATHAWAY INC","managerCik": "1067983","form": "13F-HR","filingDate": "2026-05-15","reportPeriod": "2026-03-31","accessionNumber": "0001193125-26-226661","nameOfIssuer": "ALLY FINL INC","titleOfClass": "COM","cusip": "02005N100","valueUsd": 498992850,"valueUnit": "usd","impliedPricePerShare": 39.23,"positionValueUsd": 1137670000,"portfolioValueUsd": 263095703570,"portfolioPercent": 0.43,"portfolioRank": 18,"holdingsInFiling": 90,"sharesOrPrincipalAmount": 12719675,"sharesType": "SH","investmentDiscretion": "DFND","otherManager": "4","votingSole": 12719675,"changeType": "UNCHANGED","priorShares": 29000000,"sharesChange": 0,"priorReportPeriod": "2025-12-31","filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526226661/","source": "SEC EDGAR 13F","observedAt": "2026-08-10T14:30:18.856Z"}
This example is trimmed to the key fields for readability. The full record (shown at the top of this page) includes every field listed above.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sec-13f-holdings-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"manager":"Scion Asset Management","maxHoldings":50}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~sec-13f-holdings-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"manager":"0001067983","maxHoldings":100}'
Apify CLI:
apify call scrapers_lat/sec-13f-holdings-scraper \--input '{"manager":"Berkshire Hathaway","maxHoldings":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per holding returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxHoldings.
FAQ and troubleshooting
I got a "No 13F-HR filing found" error. Why? The entity you named is not an institutional 13F filer (only managers with over $100M in qualifying assets file 13F). Check the name or pass the exact SEC CIK.
How do I get the full portfolio, not just the top positions?
Raise maxHoldings to a number at or above the manager's holding count (holdingsInFiling tells you the total).
Why are the change fields null?
The actor compares against the prior 13F when it can read it. If the prior filing's information table is unavailable, changeType and the prior* fields stay null and the run still succeeds.
What does valueUnit mean?
13F values for period ends before 2023-01-01 are filed in thousands of USD. valueUsd is always normalized to whole USD; valueUnit tells you the unit of the raw valueRaw field.
Is this an official SEC tool? No. This actor is independent and has no affiliation with the SEC. It reads only data that is publicly available on SEC EDGAR.
Related scrapers
- SEC EDGAR Financials Scraper: company revenue, assets, and XBRL financials.
- SEC Form 4 Insider Trades Scraper: insider buys and sells.
- SEC Form D Private Placements Scraper: private securities offerings.
- SEC EDGAR Full-Text Search Scraper: full-text search across SEC filings.
- FINRA BrokerCheck Scraper: brokers and investment advisers.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the SEC or EDGAR. Accesses only publicly available SEC 13F disclosure data.
