If you've ever tried to pull financial data directly from SEC EDGAR, you already know the problem. The XBRL filings are technically structured, but in practice they're a mess: inconsistent concept names across filers, dimensional context you have to decode, unit scaling that varies filing-to-filing, and amendments that quietly supersede earlier numbers. You can spend a weekend on a parser and still not be confident the figures line up.

This post walks through what clean, normalized SEC data looks like — using a free 100-row sample you can download right now without signing up for anything.

What the raw XBRL problem actually looks like

The SEC's XBRL taxonomy has thousands of concepts, and filers can extend it with custom tags. One company reports gross profit as us-gaap:GrossProfit. Another computes it inline and never emits that tag. A third uses a custom extension. Normalizing across ~480 large-caps means either writing a pile of tag-fallback rules or accepting holes.

Then there's dimensional context. A segment income statement is a different XBRL context from the consolidated figure — same tag, same period, different context id. Filter context wrong and you double-count revenue or keep a segment while dropping the consolidated row.