SEC 13F Institutional Holdings Scraper avatar

SEC 13F Institutional Holdings Scraper

Pricing

from $10.20 / 1,000 results

Go to Apify Store
SEC 13F Institutional Holdings Scraper

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Share

SEC 13F Institutional Holdings Scraper

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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
managerstringyesBerkshire HathawayThe hedge fund or asset manager to look up, by company name or by SEC CIK number (for example 0001067983).
maxHoldingsintegerno10Maximum 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.

FieldTypeDescription
managerNamestringName of the filing institutional manager.
managerCikstringSEC CIK of the manager (no leading zeros).
formstringFiling form type, 13F-HR or 13F-HR/A.
filingDatestringDate the filing was submitted (YYYY-MM-DD).
reportPeriodstringPeriod end the filing reports on (YYYY-MM-DD).
accessionNumberstringSEC accession number of the filing.
nameOfIssuerstringIssuer name of the held security.
titleOfClassstringShare class title, for example COM.
cusipstringCUSIP identifier of the security.
figistringFIGI identifier, or null when not disclosed.
valueRawnumberMarket value exactly as filed (see valueUnit).
valueUsdnumberMarket value normalized to whole USD.
valueUnitstringUnit of valueRaw: usd or thousands_usd.
impliedPricePerSharenumberMarket value divided by shares. null for principal-amount (bond) lines.
positionValueUsdnumberTotal USD value of the position, summed across split lines.
portfolioValueUsdnumberTotal USD value of all positions in the filing.
portfolioPercentnumberThis position's weight in the portfolio, as a percentage.
portfolioRanknumberRank of this position by value within the filing (1 = largest).
holdingsInFilingnumberNumber of information-table lines in the filing.
sharesOrPrincipalAmountnumberShares held, or principal amount for debt.
sharesTypestringSH for shares or PRN for principal amount.
putCallstringPut, Call, or null for a direct holding.
investmentDiscretionstringDiscretion code, for example DFND, SOLE.
otherManagerstringReference to co-managers on the position, or null.
votingSolenumberShares with sole voting authority.
votingSharednumberShares with shared voting authority.
votingNonenumberShares with no voting authority.
changeTypestringNEW, ADDED, REDUCED, UNCHANGED, or null when the prior filing is unavailable.
priorSharesnumberShares held in the prior 13F, or null.
sharesChangenumberChange in shares vs the prior filing, or null.
sharesChangePercentnumberPercent change in shares vs the prior filing, or null.
priorReportPeriodstringPeriod end of the prior 13F used for comparison, or null.
filingUrlstringDirect SEC EDGAR link to the filing folder.
sourcestringAlways SEC EDGAR 13F.
observedAtstringISO 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

  • changeType and the prior* / sharesChange* fields are best-effort. If the prior 13F cannot be read, they stay null and the run still succeeds.
  • portfolioPercent and positionValueUsd aggregate 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "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 (result event). 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 error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.