Reference

Schema

Three tables, joined on accession_number — the SEC's unique identifier for a single filing. This page is the same documentation that ships with the data, published in full so you can evaluate it before paying for anything.

filings (1 row per SEC form)
   │
   ├── accession_number ──▶ owners  (1+ rows: who filed it)
   │
   └── accession_number ──▶ trans   (0+ rows: what they transacted)

One filing can name several owners — co-filers and affiliated funds — and report several transactions together. That one-to-many shape is the source of the most common analytical mistake, covered at the bottom of this page.

filings

One row per form submitted to EDGAR. 1,533,585 rows.

ColumnTypeDescription
accession_numbertextSEC unique filing ID. Primary key, and the join key for the other two tables.
filing_datedateDate the form was received by the SEC. This is when the information became public.
period_of_reportdateThe transaction period the form covers.
document_typetext3, 4, 5, or the amendments 3/A, 4/A, 5/A.
issuer_ciktextSEC Central Index Key for the company. Stable across name changes — identify companies with this, not the name.
issuer_nametextCompany name as filed.
tickertextTrading symbol. Nullable — some issuers have none, and it reflects the symbol at filing time.
quartertextSource EDGAR quarterly index, e.g. 2026Q2.

owners

One row per person or entity named on a filing. 1,669,356 rows, 132,229 distinct insiders. Several rows per filing is normal, not a duplication bug.

ColumnTypeDescription
accession_numbertextJoins to filings.
owner_ciktextSEC Central Index Key for the person or entity. Stable — use this to follow one insider across companies and years.
owner_nametextName as filed. Format varies: SMITH JOHN A, John A. Smith, Acme Capital LP.
relationshiptextRaw relationship string from the filing.
is_officerint1 if an officer of the company.
is_directorint1 if a member of the board.
is_ten_pctint1 if a beneficial owner of more than 10% of a class of securities.
titletextJob title where given, e.g. Chief Financial Officer.

trans

One row per transaction line, and the largest table. 2,317,601 rows.

ColumnTypeDescription
accession_numbertextJoins to filings.
trans_skintSequence number within the filing.
security_titletexte.g. Common Stock, Employee Stock Option (Right to Buy).
trans_datedateDate the transaction occurred — usually earlier than filing_date.
trans_codetextWhat kind of transaction. See the code table below.
acquired_disposedtextA = acquired, D = disposed.
sharesrealNumber of shares in the transaction.
price_per_sharerealExecution price. 0 or null for grants and gifts.
valuerealshares × price_per_share, as reported.
shares_owned_afterrealHoldings following the transaction.
direct_indirecttextD = held directly, I = indirectly, through a trust, LLC or family member.
timelinesstextFlag indicating a late filing.

Form types

TypeFiled whenRows
3A person first becomes an officer, director or 10% owner. An arrival signal, not a trading signal.119,977
4Within two business days of a transaction. The main event stream.1,368,412
5Annually, for transactions exempt from Form 4 — small acquisitions, gifts, some option activity.15,731
3/A · 4/A · 5/AAmendments correcting an earlier filing.29,465

Transaction codes

The distribution here is the single most important thing to understand before your first query.

CodeMeaningRows
POpen-market purchase — the insider bought with their own money. The only code that unambiguously represents a decision.218,895
SOpen-market sale.672,405
AGrant, award or other acquisition from the company. Compensation, not a market view.490,499
FShares withheld by the issuer to cover tax on vesting. Routine, not discretionary.378,512
MExercise or conversion of a derivative security.335,758
JOther acquisition or disposition.67,256
GGift.56,486

The two mistakes

Group filings inflate dollar totals

When a private-equity or venture firm transacts, the fund, its general partner, its management company and named partners may each file the same transaction. Summing value across owners rows multiplies one purchase several times over. Deduplicate on (issuer_cik, trans_date, value) before aggregating.

This matters more than it sounds: the inflation is concentrated in exactly the companies where institutional holders are active, so it distorts comparisons between companies rather than adding uniform noise you could ignore.

Automatic transactions outnumber decisions five to one

Codes A, F and M together outnumber P by roughly five to one, and they are almost entirely mechanical — vesting schedules, tax withholding, option mechanics. Filtering to trans_code = 'P' is what isolates the transactions an insider actually chose to make.

Three more things worth knowing

Download a free quarter See plans