13F Holdings API avatar

13F Holdings API

Pricing

from $1.05 / 1,000 holding records

Go to Apify Store
13F Holdings API

13F Holdings API

Get 13F holdings from SEC EDGAR for any institutional manager. One row per security: issuer, CUSIP, shares, value, put or call, portfolio share, plus quarter-over-quarter change. Read from the official filing. Independent tool, not affiliated with the SEC.

Pricing

from $1.05 / 1,000 holding records

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Use this 13F holdings API to get the holdings of any institutional investment manager from the SEC Form 13F-HR filing, with the change against the previous quarter, for $1.50 per 1,000 holdings.

Enter an SEC CIK number such as 1067983, or a stock ticker such as BRK-B. Pick the latest quarter or a quarter such as 2026Q2. Each result is one security that the manager held on the last day of the quarter: issuer, CUSIP, shares, value in US dollars, put or call, and the share of the whole portfolio. Switch on Compare to the prior filing to add the shares of the quarter before, the change in shares, and a change type: new, increased, decreased, unchanged or sold out. The Actor reads the filing straight from SEC EDGAR, so there is no third-party site in between. You need no login, no API key and no proxy.

This is an unofficial tool built by an independent developer. It is not affiliated with, endorsed by or operated by the U.S. Securities and Exchange Commission or any investment manager.

Sample output

One row per security. This is a real row from a run on 7 October 2026, the first of 29 rows for Berkshire Hathaway Inc, 13F-HR for the quarter ended 30 June 2026:

{
"managerCik": "0001067983",
"managerName": "BERKSHIRE HATHAWAY INC",
"filingAccession": "0001193125-26-352200",
"filingForm": "13F-HR",
"reportPeriod": "2026-06-30",
"filedDate": "2026-08-14",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/0001193125-26-352200-index.htm",
"amendmentsForPeriod": 0,
"cusip": "037833100",
"issuerName": "APPLE INC",
"titleOfClass": "COM",
"putCall": null,
"shares": 227917808,
"sharesType": "SH",
"valueUsd": 65950296923,
"portfolioPercent": 22.0383,
"votingSole": 227917808,
"votingShared": 0,
"votingNone": 0,
"investmentDiscretion": "DFND",
"lineCount": 12,
"priorReportPeriod": null,
"priorShares": null,
"priorValueUsd": null,
"sharesChange": null,
"sharesChangePercent": null,
"changeType": null,
"valueUnitAsFiled": "USD",
"filingTotalValueUsd": 299253556246,
"retrievedAt": "2026-10-07T12:37:09.579Z",
"source": "SEC EDGAR (sec.gov)",
"licence": "US government public filing data, free to reuse (SEC webmaster FAQ)",
"resultStatus": "ok",
"message": null
}

The filing has 89 lines. The Actor added up the lines of the same security, which gave 29 positions. The values of all positions add up to $299,253,556,246. This equals the table value total on the cover page of the filing.

How to get 13F holdings with this Actor

  1. Click Try for free. No API key is needed.
  2. In Managers, enter one SEC CIK number or stock ticker per line.
  3. Leave Quarter on latest, or enter a quarter such as 2026Q2 or a date such as 2026-06-30.
  4. Switch on Compare to the prior filing if you want the change against the previous 13F-HR. Switch on Include sold-out positions to add the positions that the manager closed.
  5. Set Max results. The default is 100.
  6. Click Start, open the Holdings view, and export as JSON, CSV or Excel.

Typical uses:

  • Track what a fund bought, added to, cut or sold in the last quarter.
  • Build a watchlist of the biggest positions of a set of managers.
  • Fill a database with 13F history, one quarter at a time, back to the quarter ended 30 June 2013.
  • Check how much of a portfolio sits in one security with the portfolioPercent field.
  • Feed an AI agent or a spreadsheet with clean rows instead of raw XML.

What you get

FieldMeaning
managerCik, managerNameSEC Central Index Key of the manager and its name in the SEC company record
filingAccession, filingForm, reportPeriod, filedDate, filingUrlWhich filing the row comes from: accession number, form, quarter end, date filed and a link to the filing on sec.gov
amendmentsForPeriodHow many 13F-HR/A amendments SEC lists for the same quarter. The Actor does not merge them into the rows
cusip, issuerName, titleOfClassThe security as filed
putCallPut or Call for an option position, otherwise null
shares, sharesTypeNumber of shares, or principal amount for bonds (SH or PRN)
valueUsdValue in whole US dollars. Old filings are in thousands of dollars, and the Actor multiplies them by 1,000
portfolioPercentValue as a percent of the total value of the filing
votingSole, votingShared, votingNoneVoting authority as filed
investmentDiscretion, lineCountInvestment discretion as filed, and how many filing lines were added up in this row
priorReportPeriod, priorShares, priorValueUsdThe previous filing used for the comparison. Only with Compare to the prior filing
sharesChange, sharesChangePercent, changeTypeShares now minus shares before, as a percent, and new, increased, decreased, unchanged or sold_out
valueUnitAsFiled, filingTotalValueUsdUSD or thousands of USD as filed, and the total value of the whole filing in dollars
retrievedAt, source, licenceWhen the Actor read the filing and where the data comes from
resultStatus, messageok for a holding. A status row for a manager with no holdings explains why in message

The Actor adds no data from other sources. Every value comes from the SEC filing. It does not add ticker symbols, because 13F filings carry only CUSIP codes.

Pricing

Pay per event: $1.50 per 1,000 holding rows on the Free plan, with lower prices on Bronze, Silver and Gold plans. The start of a run costs $0.00005. Rows that carry a change type cost the same as other rows. A manager that gives no holdings returns one status row and counts as one result, because the lookup was done. A run that cannot read SEC is not charged.

Worked example: the latest Berkshire Hathaway filing has 29 positions and costs 29 x $0.0015 = $0.0435 on the Free plan. The same run with Compare to the prior filing and Include sold-out positions returned 30 rows on 7 October 2026 and costs 30 x $0.0015 = $0.045. The latest Morgan Stanley filing has 45,905 lines that add up to 8,402 positions, and one run costs 8,402 x $0.0015 = $12.603. Use Max results to set a ceiling.

Input examples

Latest holdings of one manager:

{
"managers": ["1067983"],
"maxResults": 25
}

What a manager bought and sold in the second quarter of 2026, including closed positions:

{
"managers": ["1067983"],
"quarter": "2026Q2",
"compareToPrior": true,
"includeSoldOut": true
}

The comparison input above returned 30 rows on 7 October 2026: 15 unchanged, 7 increased, 6 decreased, 1 new and 1 sold out.

Positions of at least one billion dollars at two managers, with your own User-Agent:

{
"managers": ["1067983", "1336528"],
"minValueUsd": 1000000000,
"userAgent": "Acme Research data-team@example.com"
}

Output example with a comparison

A real row from the comparison run. Berkshire Hathaway cut its Kroger position from 50,000,000 to 39,000,000 shares between the quarters ended 31 March 2026 and 30 June 2026:

{
"managerCik": "0001067983",
"managerName": "BERKSHIRE HATHAWAY INC",
"filingAccession": "0001193125-26-352200",
"filingForm": "13F-HR",
"reportPeriod": "2026-06-30",
"filedDate": "2026-08-14",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/0001193125-26-352200-index.htm",
"amendmentsForPeriod": 0,
"cusip": "501044101",
"issuerName": "KROGER CO",
"titleOfClass": "COM",
"putCall": null,
"shares": 39000000,
"sharesType": "SH",
"valueUsd": 2165670000,
"portfolioPercent": 0.7237,
"votingSole": 39000000,
"votingShared": 0,
"votingNone": 0,
"investmentDiscretion": "DFND",
"lineCount": 4,
"priorReportPeriod": "2026-03-31",
"priorShares": 50000000,
"priorValueUsd": 3618000000,
"sharesChange": -11000000,
"sharesChangePercent": -22,
"changeType": "decreased",
"valueUnitAsFiled": "USD",
"filingTotalValueUsd": 299253556246,
"retrievedAt": "2026-10-07T12:37:12.334Z",
"source": "SEC EDGAR (sec.gov)",
"licence": "US government public filing data, free to reuse (SEC webmaster FAQ)",
"resultStatus": "ok",
"message": null
}

A position that is in the prior filing and not in the current one comes back with shares 0 and the change type sold_out. This is a real row:

{
"managerCik": "0001067983",
"managerName": "BERKSHIRE HATHAWAY INC",
"filingAccession": "0001193125-26-352200",
"filingForm": "13F-HR",
"reportPeriod": "2026-06-30",
"filedDate": "2026-08-14",
"filingUrl": "https://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/0001193125-26-352200-index.htm",
"amendmentsForPeriod": 0,
"cusip": "21036P108",
"issuerName": "CONSTELLATION BRANDS INC",
"titleOfClass": "CL A",
"putCall": null,
"shares": 0,
"sharesType": "SH",
"valueUsd": 0,
"portfolioPercent": 0,
"votingSole": 0,
"votingShared": 0,
"votingNone": 0,
"investmentDiscretion": "DFND",
"lineCount": 0,
"priorReportPeriod": "2026-03-31",
"priorShares": 632890,
"priorValueUsd": 94933500,
"sharesChange": -632890,
"sharesChangePercent": -100,
"changeType": "sold_out",
"valueUnitAsFiled": "USD",
"filingTotalValueUsd": 299253556246,
"retrievedAt": "2026-10-07T12:37:12.334Z",
"source": "SEC EDGAR (sec.gov)",
"licence": "US government public filing data, free to reuse (SEC webmaster FAQ)",
"resultStatus": "ok",
"message": null
}

A manager with no matching filing returns a status row. This is a real row for CIK 320193, which has no 13F-HR filing:

{
"managerCik": "0000320193",
"managerName": "Apple Inc.",
"filingAccession": null,
"filingForm": null,
"reportPeriod": null,
"filedDate": null,
"filingUrl": null,
"amendmentsForPeriod": null,
"cusip": null,
"issuerName": null,
"titleOfClass": null,
"putCall": null,
"shares": null,
"sharesType": null,
"valueUsd": null,
"portfolioPercent": null,
"votingSole": null,
"votingShared": null,
"votingNone": null,
"investmentDiscretion": null,
"lineCount": null,
"priorReportPeriod": null,
"priorShares": null,
"priorValueUsd": null,
"sharesChange": null,
"sharesChangePercent": null,
"changeType": null,
"valueUnitAsFiled": null,
"filingTotalValueUsd": null,
"retrievedAt": "2026-10-07T12:37:18.814Z",
"source": "SEC EDGAR (sec.gov)",
"licence": "US government public filing data, free to reuse (SEC webmaster FAQ)",
"resultStatus": "no_filing_found",
"message": "Apple Inc. has no 13F-HR filing with holdings on file (searched filings back to 1994-01-26). A manager that only files 13F-NT reports its holdings under another manager."
}

Run it every quarter

Managers file Form 13F within 45 days after the end of each quarter. The deadlines fall on about 14 February, 15 May, 14 August and 14 November, and many managers file on the last day. A schedule that starts on the 18th of those months runs after the deadline. In the Apify Console, open Schedules, create a schedule with the cron expression 0 6 18 2,5,8,11 *, and add this Actor with your input. Use a dataset export, a webhook, or an integration with Make, Zapier or n8n to send the rows on. You can also call the Actor from your own code with the Apify API.

FAQ

Where does the data come from? From the filings that managers submit to the SEC. The Actor reads the list of filings of each manager from the SEC submissions service on data.sec.gov. Then it downloads the XML information table of the filing from sec.gov. It never uses a third-party site.

Is it legal to use? The SEC webmaster FAQ states: "All Government-created content on sec.gov and EDGAR public filing content are free to access and reuse." The SEC privacy page adds: "Information presented on sec.gov is considered public information and may be copied or further distributed by users of the web site without the SEC's permission. Please consider appropriate citation to the SEC as the source." This README gives that credit: data from SEC EDGAR. The SEC also sets a fair access rule of no more than 10 requests per second and asks automated tools to declare a User-Agent. The Actor follows both. The SEC marks its own 13F data sets as data that it cannot guarantee to be accurate, and says that they are not a substitute for the filings.

Does the data hold personal data? The rows hold institution names, security names, CUSIP codes, share counts and values. The Actor does not read or return the signature block of a filing, which holds the name, title and phone number of the signer. It does not return business addresses or the names of other included managers. A few filers are named after a person, and the manager name is returned as the SEC shows it. Do not use the data to profile private persons.

What User-Agent does the Actor send? The SEC asks every automated tool to declare itself. The default is Sec13fHoldingsActor-bot/1.0 (Apify Actor; unofficial SEC 13F holdings reader; no contact given). It names the tool and holds no email address and no other personal data. The SEC sample asks for a company name and a contact email. If SEC answers HTTP 403, put your own company or tool name and a contact email into the User-Agent field, and run again. The Actor stops at the first 403 and does not try other managers.

How fast does it read? One request at a time, with a pause of at least 150 ms. That is fewer than 7 requests per second. The SEC limit counts all requests from one user, so do not start many runs at the same moment.

What does a 13F filing cover? Managers with at least $100 million in 13(f) securities must file. The filing lists long positions in those securities on the last day of the quarter: mainly U.S. listed shares, ETFs, some options and convertible bonds. It does not show short positions or cash, and it can omit positions for which the manager has requested confidential treatment. The data is 45 days old or more when it appears.

Why do I get fewer rows than the filing has lines? The same security often fills many lines, because a filing splits a position by other manager and by discretion. By default the Actor adds up the lines of the same CUSIP, put or call and share type. The Berkshire Hathaway filing has 89 lines and 29 positions. Switch off Combine lines of one security to get every line as filed. The comparison always combines lines.

How does the comparison work? The Actor reads the previous 13F-HR of the same manager, which is the original filing with the next older quarter end. If a manager skipped a quarter, it compares with the filing before the gap and shows the date in priorReportPeriod. Positions match on CUSIP, put or call and share type. sharesChange is a plain difference in shares. It does not adjust for stock splits, so check a large change on a split date. A manager with no earlier filing gets the change type no_prior_filing.

Why is the latest filing of a manager older than the latest quarter? Some managers file a 13F-NT notice instead of holdings, because another manager reports their holdings. The Actor skips notices and uses the latest 13F-HR. Check reportPeriod in the row.

Why is valueUsd so much larger than the number I see in an old filing? Filings made before 3 January 2023 state the value in thousands of dollars. The Actor multiplies them by 1,000, and valueUnitAsFiled shows what the filer used.

Are amendments included? The Actor reads the original 13F-HR of the quarter. If the manager filed a 13F-HR/A for the same quarter, amendmentsForPeriod shows the count, and you can open filingUrl to see the filings. Amendments are not merged into the rows.

Why is there no ticker? The filing carries CUSIP codes and issuer names, not tickers. Match CUSIP codes to tickers with your own security master.

How do I find the CIK of a manager? Use the free company search on sec.gov, or enter a stock ticker if the manager is a listed company. CIK numbers read in the checks of 7 October 2026: Berkshire Hathaway Inc 1067983, Morgan Stanley 895421, Pershing Square Capital Management, L.P. 1336528, Bridgewater Associates, LP 1350694, Scion Asset Management, LLC 1649339.

What are the limits? Up to 50 managers and 100,000 results per run. Max results counts all rows, including status rows. Quarters start with the one ended 30 June 2013, the first quarter with an XML table on the filing checked. Within a manager, rows are sorted by value, largest first. Sold-out rows come last.

What if the run fails? If SEC does not answer, refuses the request, or the table format changes, the run stops with a clear message and charges nothing for that manager. If other managers worked, you keep their rows. Run it again later.

For SEC filings by company, such as 8-K and 10-K lists, the same author has SEC EDGAR API for Company Filings by Ticker or CIK. For annual and quarterly XBRL numbers such as revenue and EPS, see SEC Company Financials API. Other public-data Actors by the same author are listed on the author's Store profile.

I built this Actor myself as an independent developer. Data: SEC EDGAR.