The Best SEC Filings API for Quants: How to Actually Choose One
I am not going to rank other people's products. I am going to give you the four tests I wish somebody had given me, so you can rank them yourself, including against this one.
At a glance
Prices and features on the right-hand column change, and this page does not — check their site before you decide anything on it. The rows about method are the ones that stay true.
| To Scale | the alternatives | |
|---|---|---|
| Resolves duplicate XBRL tags | Yes — A = L + E | Ask. Most do not document it |
| As-reported, not restated | Yes, with filing dates | Ask — many silently serve restated |
| Point-in-time queries | Yes — as-of respects filing dates | Ask |
| Publishes an accuracy figure | No — the method is published instead | Rare |
| Free tier without a call | Yes | Varies |
| Coverage | 6,201 SEC filers, 1.8 million facts | Ask — and ask whether it is SEC-only |
| Latency | ~300 ms typical (measured 292–364 ms, Sep 2026) | Ask, and measure it yourself |
| Price | Free · $49/mo · $490/yr · $79.99 one-off | Often quote-based |
| Bulk download | $79.99, one CSV | Varies |
Why this is harder than it looks
Fundamental data feels like a solved problem. The filings are public, the format is machine-readable, and there are a dozen APIs. So the natural assumption is that they all return the same numbers and you are choosing on price and ergonomics.
They do not return the same numbers. I checked.
The reason is the duplicate-tag problem. XBRL lets a filer attach dimensions
to a fact: this figure, but for this segment, this subsidiary, this geography.
JPMorgan tags Assets twenty-three separate times in a single
filing. Every instance is valid. The consolidated one, the number on the face
of the balance sheet, is marked only by having no dimensions on it, which means
the correct answer is identified by an absence, the easiest thing in the world
for a parser to miss.
Taking the first match agrees with the consolidated figure about most of the time. One filing in five is wrong, silently, by whatever the largest segment happens to be.
The three questions that actually separate providers
How do you pick which tag is the right one? If the answer is vague, that is your answer. This is the entire difficulty of the category and a provider who has solved it will tell you how. To Scale uses the accounting identity: keep the combination of assets, liabilities and equity that balances, because the consolidated figures balance against each other and a segment's do not.
As-reported or restated? These are different products and the difference decides whether you can backtest. As-reported is what the company said at the time. Restated is what they said later. If a provider serves restated figures with no filing date, every backtest you run on it has lookahead bias baked in and no way to detect it.
What happens when the data is missing or wrong? A filer that does not break out receivables has not reported zero receivables. If your provider returns 0, your ratios are wrong and nothing tells you. And when a filing genuinely does not balance (it happens), you want to be told, not handed a silently adjusted number.
What To Scale is, plainly
One reconciled dataset: 6,201 SEC filers, 1.8 million as-reported facts, every one checked against A = L + E before it is stored. Every valid filing reconciles against that test, and the exceptions are flagged rather than hidden. Free tier with no card, $49 a month for 10,000 calls, or $79.99 once for the whole thing as a CSV.
I built it because I wanted this data for something else and could not find a source I trusted enough to build on. I am 17. That is a real thing to weigh: there is no SLA and no support desk, and if that matters to you, buy from somebody who can sign a contract. What there is instead is a method written down in public and a free tier so you can check it yourself against a filing you already know.