# How to get 13F holdings as data

The SEC's 13F data sets are seven free tab-separated tables. What the join gets wrong — amendments, a value column that changed units in 2023, and option rows.

*https://stockmarketstack.com/how-to/get-13f-holdings-as-data · next to Insider, 13F & Congressional Trade Trackers*

**Answer:** The SEC publishes every 13F since mid-2013 as quarterly zip files of seven tab-separated tables, free and keyless: join INFOTABLE to SUBMISSION on the accession number and filter on the period of report. The traps are in the join, not the download. Files are grouped by filing date, amendments either restate or add rows, VALUE switched from thousands to dollars on 3 January 2023, and option rows carry the underlying stock's CUSIP.

## The tools that do this

*In the order this page recommends trying them. Paid placement does not affect this order.*

1. [SEC EDGAR](https://stockmarketstack.com/tools/sec-edgar.md) — Seven tab-separated tables per quarter since mid-2013, joined on accession number. Free and keyless, grouped by filing date, and nothing reconciled.
2. [13F.info](https://stockmarketstack.com/tools/13f-info.md) — The same XML parsed into PostgreSQL by an MIT-licensed Rails app you can run yourself. From 2014, no API, and the code last moved in August 2024.
3. [WhaleWisdom](https://stockmarketstack.com/tools/whalewisdom.md) — Parsed back to the quarter ending March 2001 behind a signed REST API. Free reaches two years; history starts at $300 a year, 50 funds per 90 days.
4. [Quiver Quantitative](https://stockmarketstack.com/tools/quiver-quantitative.md) — 13F as one REST dataset among a dozen disclosure feeds, from the $75-a-month Trader tier. Both published tiers forbid commercial use.
5. [Financial Modeling Prep](https://stockmarketstack.com/tools/financial-modeling-prep.md) — A 13F endpoint beside statements and prices, for when the holdings are one input among several. Only on Ultimate, $149 a month billed annually.

## The short way

Download one quarterly zip from the SEC's Form 13F data sets page — no key, no account — and join
two of the seven tables inside it:

```python
import zipfile
import pandas as pd

z = zipfile.ZipFile("01mar2026-31may2026_form13f.zip")

def table(name, cols=None):
    return pd.read_csv(z.open(f"{name}.tsv"), sep="\t", dtype=str, usecols=cols)

sub = table("SUBMISSION")
info = table("INFOTABLE", ["ACCESSION_NUMBER", "CUSIP", "NAMEOFISSUER",
                           "VALUE", "SSHPRNAMT", "SSHPRNAMTTYPE", "PUTCALL"])

# a file holds whatever was FILED in its three months, for any period
q1 = sub[(sub.PERIODOFREPORT == "31-MAR-2026") & (sub.SUBMISSIONTYPE == "13F-HR")]

rows = info.merge(q1, on="ACCESSION_NUMBER")
rows["CUSIP"] = rows.CUSIP.str.upper()
rows["VALUE"] = rows.VALUE.astype(float)  # dollars since 3 Jan 2023
rows["SSHPRNAMT"] = rows.SSHPRNAMT.astype(float)

# option rows carry the underlying's CUSIP, so drop them before summing
stock = rows[rows.PUTCALL.isna() & (rows.SSHPRNAMTTYPE == "SH")]
held = stock.groupby(["CIK", "CUSIP"])[["SSHPRNAMT", "VALUE"]].sum()
```

Run against the March–May 2026 file, that is 8,741 original holdings reports for the first
quarter of 2026 and 3.2 million information-table rows, which collapse to 2.3 million
manager-and-CUSIP pairs. The collapse is the first thing worth knowing: a manager lists the same
security on several lines when discretion or voting authority is split, so a row is not a position
until you have summed it.

The tables are `SUBMISSION` (one row per filing, with the period of report), `COVERPAGE` (manager
name, amendment flags, report type), `INFOTABLE` (the holdings) and four smaller ones for
signatures, the summary page and other managers. All of them are tab-separated UTF-8 and all of
them key on `ACCESSION_NUMBER`.

## What the options are

**The source, flattened.** [SEC EDGAR](https://stockmarketstack.com/tools/sec-edgar) publishes the data sets above, extracted
from the XML filings with nothing changed: the SEC's own description is information "as filed",
amendments included, which "may contain redundancies, inconsistencies, and discrepancies relative
to prior submissions". Coverage starts with XML submitted in May 2013. A new file lands after the
last business day of February, May, August and November, each one roughly 80 to 100 MB zipped.
This is the whole corpus for free, and every reconciliation on this page is yours to write.

**Somebody else's parser, on your own machine.** [13F.info](https://stockmarketstack.com/tools/13f-info) is a free browser
over the same filings, and the Rails application behind it — downloader, parser and front end — is
MIT-licensed. Its pipeline pulls 13F data from EDGAR into PostgreSQL, which is a better starting
point than the zip files if what you want is a database rather than a notebook. History starts in
2014, there is no documented API, and the code has not moved since August 2024.

**History before 2013.** Anything earlier was filed as free text, and only a vendor that parsed it
has it. [WhaleWisdom](https://stockmarketstack.com/tools/whalewisdom) has parsed it to the first quarter of 2001 and serves it over a
REST API with signed requests. A free registered key covers the trailing two years; the $300-a-year
Standard plan unlocks earlier quarters for 50 funds and 50 stocks every 90 days, Pro at $500 raises that to 200 and 200,
and only the contact-priced Enterprise tier is uncapped and adds nightly FTP files.

**13F next to other disclosures.** [Quiver Quantitative](https://stockmarketstack.com/tools/quiver-quantitative) sells 13F
holdings as one REST dataset beside Form 4, congressional trades and lobbying, starting on its
Trader tier at $75 a month. [Financial Modeling Prep](https://stockmarketstack.com/tools/financial-modeling-prep) carries a
13F endpoint beside statements and prices, on its Ultimate tier at $149 a month billed annually. Either makes sense
when holdings are one join in a larger model rather than the model. Read the licence before the
feature list: both of Quiver's published tiers are marked non-commercial. The rest of the shelf is
in [insider, 13F and congressional trade trackers](https://stockmarketstack.com/categories/insider-13f-trackers).

## Where this breaks

**A file is three months of filing, not one quarter of holdings.** The zip named for March to May
2026 carries 11,761 submissions, and 985 of them report a period other than 31 March 2026 — 349
for the fourth quarter of 2025, and 354 for periods before 2024, the oldest of them March 2008.
Late filings and amendments both. So a quarter is never finished in the file you first read it from. Assembling one
period of report properly means filtering on `PERIODOFREPORT` across every file published after
it, and re-running the job when a new one lands.

**It arrives later than the 45 days.** The filing deadline is 45 days after quarter end and most
managers use all of it — [13F](https://stockmarketstack.com/glossary/13f) sets out why. The data set then waits for the end of
its three-month window, so holdings as of 30 June reach the June-to-August file, which the SEC
posts after the last business day of August. Polling EDGAR's filing index gets you each filing
the day it is made; the flat file costs you another few weeks.

**Amendments come in two kinds, and they need opposite handling.** The SEC's instructions say a
restatement resubmits the entire filing as corrected, while a new-holdings amendment includes only
the securities being added. `COVERPAGE.AMENDMENTTYPE` says which: in the March–May 2026 file, 332
restatements and 109 new-holdings amendments. Union everything and every restated filing counts
twice. Keep only the latest filing per manager and period and every new-holdings amendment wipes
out the original it was meant to extend. The correct rule is latest restatement plus every
new-holdings amendment filed after it.

**`VALUE` changed units on 3 January 2023, and not every filer noticed.** Until then managers
rounded to the nearest thousand dollars and dropped the "000"; the SEC's June 2022 amendments
switched the form to the nearest dollar for every report filed from that day. The SEC's FAQ is
explicit that this follows the filing date, not the period: fourth-quarter 2022 reports are in
dollars, and so is an amendment for a 2022 quarter filed in 2023. Any series crossing that date
needs a thousandfold correction, keyed on `FILING_DATE` rather than `PERIODOFREPORT`. The rule did not end the
errors either. The adopting release records a commenter calling inconsistent rounding one of the
most common filing errors, and SEC staff observing data errors from it. In the first-quarter 2026
original filings, 6,005 reports hold Apple common stock; the median row implies about $254 a share, and 254
of those reports imply between 15 and 40 cents — still in thousands, three years on. Divide `VALUE`
by `SSHPRNAMT` and compare it with a price before trusting either.

**An option row carries the stock's CUSIP.** The SEC's FAQ says most columns of an option entry
refer to the underlying security, down to entering `COM` as the title of class and the underlying's
CUSIP. What marks the row as an option is `PUTCALL`, set on 140,165 rows in that one file. Group by
CUSIP without filtering it and calls and puts are added to the share count, which turns a hedge
into a larger long. `SSHPRNAMTTYPE` is the other filter: `PRN` rows are principal amounts of
debt, and adding them to a share count mixes dollars into shares.

**The key is a CUSIP, typed by the manager.** There is no ticker anywhere in the tables. The
2022 amendments let a filer add a share-class FIGI alongside the CUSIP, never instead of it, and
in the March–May 2026 file 12% of information-table rows carry one. Even the CUSIP needs cleaning:
6,750 rows in that file are in lower case, which a join against any security master treats as a
different identifier. Turning a CUSIP into a ticker is a separate dataset with its own licence,
set out in [CUSIP, ISIN and FIGI](https://stockmarketstack.com/guides/cusip-isin-figi-identifiers). And a ticker mapping
taken today maps the past wrongly: a CUSIP that changed hands through a merger or a rename needs
the [point-in-time](https://stockmarketstack.com/glossary/point-in-time) version.

**A missing manager is not a missing position.** A 13F Notice carries a cover page and no
holdings, because another manager reports those securities; a Combination Report lists some and
names who reports the rest. The March–May 2026 file holds 2,045 notices. A manager whose table
comes back empty may simply be reported inside somebody else's, and `OTHERMANAGER` is the table that
says whose. Confidential treatment can hold a position back for longer. When a request is denied or
expires, the SEC's FAQ gives the manager six business days to file an amendment, marked as adding
new holdings, for the period it was withheld from — which is one more reason a quarter is never
finished, and one more reason the new-holdings rule above matters. `COVERPAGE` flags those filings
in `CONFDENIEDEXPIRED`.

**It covers long positions in Section 13(f) securities and nothing else.** Shorts, cash, most non-US listings and anything
off the SEC's Official List are absent, and the Official List itself is published as PDF and, from
the fourth quarter of 2025, as text — not as a structured file you can join. Nothing a parser does
recovers what the form never asked for.

## If you outgrow this

**When the quarterly file is too slow**, stop reading the flat files and read the filings. EDGAR's
own submissions index carries each 13F-HR the day it is filed, and
[How to get SEC filings as data](https://stockmarketstack.com/how-to/get-sec-filings-as-data) covers that route and its rate
limit. [sec-api.io](https://stockmarketstack.com/tools/sec-api-io) sells the same filings already parsed, with a websocket that
pushes new ones, from $55 a month.

**When you need the years before 2013 in bulk**, that is [WhaleWisdom](https://stockmarketstack.com/tools/whalewisdom)'s
Enterprise tier, the only one with uncapped API access and nightly FTP files. It is
contact-priced, so budget for a conversation rather than a number.

**When the question is really about timing**, a 13F is the wrong form. A Form 4 is due two
business days after an insider's trade and a Schedule 13D five business days after the purchase
that triggers it; [when a trade shows up in the public record](https://stockmarketstack.com/guides/when-trades-become-public) sets every
deadline side by side.

**When a person is going to read it rather than a program**, the free browsers are the shorter
path: [Dataroma](https://stockmarketstack.com/tools/dataroma) for 83 hand-picked value managers back to 2006,
[HedgeFollow](https://stockmarketstack.com/tools/hedgefollow) for over 10,000 institutions with 13F, Form 4 and congressional
filings on one page.

## FAQ

### Where do I download 13F holdings in bulk for free?

From the SEC's Form 13F data sets page. Each quarterly zip holds seven tab-separated tables flattened from the XML filings, keyed on accession number, with no account and no API key. Coverage starts with XML filed in May 2013. The files are grouped by the months in which filings were made, not by the quarter the holdings describe, so a complete quarter has to be assembled across several of them.

### Is the 13F value column in dollars or thousands?

Both, depending on the filing date. Until the SEC's amendments took effect on 3 January 2023, managers rounded to the nearest thousand dollars and dropped the zeros; from then on, to the nearest dollar. Some filers still report in thousands — 254 of the 6,005 original first-quarter 2026 reports holding Apple imply between 15 and 40 cents a share — so check value divided by shares against a real price.

### How do I handle a 13F amendment?

Read the amendment type on the cover page first. A restatement resubmits the whole filing as corrected and replaces the earlier version. A new-holdings amendment lists only the securities being added, including positions released from confidential treatment, and is added to what was already filed. Treating both the same way either double-counts restatements or deletes the originals that a new-holdings amendment extends.

## Sources

1. [Form 13F Data Sets](https://www.sec.gov/data-research/sec-markets-data/form-13f-data-sets) — U.S. Securities and Exchange Commission, read 2026-09-27
2. [Form 13F Data Sets — readme](https://www.sec.gov/files/form_13f_readme.pdf) — U.S. Securities and Exchange Commission, read 2026-09-27
3. [Frequently Asked Questions About Form 13F](https://www.sec.gov/divisions/investment/13ffaq) — U.S. Securities and Exchange Commission, read 2026-09-27
4. [Electronic Submission of Applications for Orders under the Advisers Act and the Investment Company Act, Confidential Treatment Requests for Filings on Form 13F, and Form ADV-NR; Amendments to Form 13F (87 FR 38943)](https://www.federalregister.gov/documents/2022/06/30/2022-13936/electronic-submission-of-applications-for-orders-under-the-advisers-act-and-the-investment-company) — Securities and Exchange Commission, 2022-06-30. The nearest-dollar rule it adopted is the one the SEC's current 13F FAQ and the data-set readme both state.

*Last updated 2026-09-27. A reference page, corrected in place — not a dated post.*
