The standardized, free alternative to sec-api.io
sec-api.io is a broad, mature SEC filings API, and it is good at what it does: it converts filings to JSON and hands them over. 3spread takes that data and makes it ready for your model to ingest.
They give you the filing as filed, raw and unprocessed. 3spread gives you institutional-grade fundamental data: standardized and comparable schemas across every filer, amendments linked, restatements preserved, every row scored. The gap between those two is about six months of your engineering time, and it is the difference between a backtest that holds up and one that does not.
Everything below about sec-api.io is taken from their public pricing page, checked on July 14, 2026. Prices change. If we have something wrong, tell us and we will fix it.
What we mean by standardized
This is the whole product. Anyone can hand you a filing as JSON. The work is making thousands of filers, filing the same form thousands of different ways, across years of changing SEC specifications, come out the other side as standardized schemas you can actually run a regression on.
Standardized, comparable schemas across every filer
Different filers label, nest and format the same fact differently. 3spread maps them into standardized, comparable schemas per dataset, so a cross-sectional comparison is a query rather than a cleanup project. The alternative is you writing that mapping, per filer, always.
Amendment-aware, and 3spread refuses to guess
An amendment that is not linked to the record it amends is a double count sitting in your backtest. We link them: following the SEC's prior-accession pointer where one exists, and clustering on a per-form key where it does not. When the match is ambiguous, 3spread leaves it unlinked rather than guess, because a wrong link is worse than a missing one. Links run both ways, so you can go from an amendment to its original, or from an original to everything that amended it.
Restatements do not overwrite history
When a company restates a period, the original figures still exist at 3spread, because a backtest has to see the data as it was known at the time. Overwrite the original with the restatement and you have quietly introduced look-ahead bias into every model built on it. Each filing's view of a period is kept as its own record.
Every number is scored, and the score ships with it
3spread checks statements against the filer's own arithmetic (do their subtotals actually foot, through their own calculation linkbase) and against real accounting identities: the balance sheet equation, the cash bridge, pretax minus tax, and others. The resulting quality score travels with the data instead of living in a slide deck. We do not hide the rows that score badly, we label them, so you can decide.
A bank is not a software company
Forcing every filer into one generic template is how you get comparisons that are technically valid and practically meaningless. 3spread keeps separate canonical grids per sector family, banks, insurers, REITs, energy, utilities, healthcare and more, so the line items you compare are the ones that actually correspond.
The edge cases are the job
A Form 144 with multiple lots. A Reg A offering with co-issuers. A Schedule 13 that was HTML before 2025 and XML after. CIKs that arrive zero-padded from one source and unpadded from another, so one filer looks like two. There are thousands of these, and 3spread handles them, because getting them wrong is how a dataset silently lies to you.
The SEC's specs move. 3spread absorbs it
Taxonomies change year to year, form specifications get rewritten, and formats change underneath you. Parse it yourself and your parser breaks when they do. We read concepts by identity rather than by taxonomy version, route each form family through the parser its era requires, and present one stable shape to you. Where a variant genuinely is not supported yet, it fails loudly and stays queued rather than being quietly mis-parsed into your data.
And 3spread does it free, at real volume
600 requests a minute on the free tier, every dataset, no credit card. That is enough to pull the full insider history or every standardized statement for a basket of companies, every day, which is what individual research actually looks like. Every dataset is on every plan, so the paid tiers buy throughput, agentic tooling and commercial rights rather than access, and they are priced competitively.
Why this decides whether your backtest is real
A filing is not a fact that stays still. Companies amend, and companies restate. If your data provider quietly overwrites the original figure with the corrected one, then every row in your history is the version that exists today, not the version that existed when the trade would have happened. Your model is reading numbers nobody could have known. That is look-ahead bias, and it does not announce itself: it shows up as a strategy that backtests beautifully and dies in production.
The same goes for amendments. An amendment that is not linked to the record it amends is not a correction, it is a duplicate. Count both and you have double counted a trade, a holding, or a stake, and your signal is measuring your own bookkeeping.
3spread keeps the original alongside the restatement, so you can ask what was known as of a date rather than what turned out to be true. Amendments are linked to their originals, and where the link is ambiguous 3spread leaves it out rather than guess, because a wrong link corrupts the series quietly while a missing one is at least visible. This is what makes the difference between a backtest you can trust and one you cannot, and it carries straight into forward testing: the moment you go live, the data you get is the data as it is known right now, which is exactly the shape the historical data was in.
What sec-api.io does well
- ·Coverage breadth: all 400+ form types, back to 1993
- ·Full-text search across filings and exhibits, which 3spread does not offer
Side by side
What we do not have
Better you know now than after you have integrated.
- ·Full-text search across filings and exhibits