To Scale vs sec-api.io: Which SEC XBRL API Should You Use?
These two are not really competitors. One gives you filings. The other gives you numbers you can put in a model. Plenty of teams should use both.
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 | sec-api.io | |
|---|---|---|
| Primary object | A reconciled balance sheet | A filing, and everything in it |
| Full-text filing search | No — this is not a filings API | Yes, and it is good at it |
| Form coverage | Balance sheet data from periodic filings | Every form type: 8-K, S-1, 13F, Form 4, more |
| Selection method | A = L + E, published and testable | Returns the tags as filed |
| Duplicate-tag handling | Resolved to the consolidated figure | Yours to resolve |
| Tells you when it is unsure | Yes — every exception is flagged with its reason, and the counts are public at /methodology | No — a figure is returned either way |
| Accuracy method | Every valid filing checked against A = L + E; exceptions flagged | Not applicable — it is not selecting for you |
| Coverage | 6,201 SEC filers, 1.8 million facts | Every EDGAR filing, all form types |
| Latency | ~300 ms typical (measured 292–364 ms, Sep 2026) | Real-time filing stream — faster to the document |
| Price | Free tier · $49/mo · $490/yr · $79.99 one-off | Tiered by call volume — check their site |
| Bulk download | $79.99, one CSV | Available — check their site |
The difference is which tag gets picked
Every provider in this category reads the same source. SEC EDGAR publishes XBRL for every filer, free, and nobody has better raw material than anybody else. What separates one API from the next is not access. It is the selection step, and that step is almost never documented.
Here is the problem it has to solve. Open JPMorgan's 10-Q and search for
Assets and you get twenty-three facts. Not twenty-three values —
twenty-three tagged instances, one for the consolidated bank and one for each
segment and subsidiary that has to be broken out separately. Every one is
valid XBRL. Exactly one is the number on the face of the balance sheet, and
the only thing marking it is an absence: it is the fact with no
dimensions attached.
An extractor that takes the first match, or the largest, or the most recently filed, will be right most of the time and wrong in a way that leaves no trace. No exception, no null, no warning. Just a number that is a segment instead of a company. Measured across the filings loaded here, that naive approach disagrees with the consolidated figure often enough to matter — roughly one filing in five.
To Scale resolves it with arithmetic rather than a heuristic: pull every candidate for assets, liabilities and equity, and keep the combination that satisfies Assets = Liabilities + Equity. The consolidated figures balance against each other. A segment's assets do not balance against the whole company's liabilities. The identity is a test, not a guideline, and it is the reason a figure here is checked rather than guessed at.
When nothing balances, the answer is that nothing balances. The filing is served as-reported with a warning on it rather than adjusted until the columns agree, because a filing that does not add up is a fact about the company, and you should get it as one.
Why transparency matters more than a number
Every provider in this category reads the same filings. The difference is what happens when a filing is hard to read. The usual answer is that you get a number anyway, with nothing attached to say how confident it is — and a figure that is quietly a segment instead of a company looks exactly like one that is right.
To Scale checks every balance sheet against Assets = Liabilities + Equity before publishing it. A filing that reconciles is published with its figures. A filing that does not is published with the reason: a noncontrolling interest reported as a separate line, mezzanine equity outside permanent equity, rounding inside one percent, a component we could not read, or a filing whose own totals disagree with each other. The exceptions are counted in public and named individually on how we verify.
That is the whole claim. Not that nothing is ever wrong — that when something is, you are told which number and why, instead of finding out from your own reconciliation three weeks later.
What I am not going to pretend
I am not going to put sec-api.io's prices in a table on my own website. They change, this page would not, and you would be reading a number I had no way to verify at the moment you read it. Go and look at their pricing page. It is the only copy that is current.
I am also not going to tell you their data is bad. I have not audited it and I am not in a position to. What I can tell you is what this service does and how to check it, which is the part I am actually responsible for.
The check that settles it costs you nothing either way: take a company where you already know the answer, call both, and compare each against the filing on EDGAR. Not against each other — against the filing. That is the only comparison that means anything, and it is why the free tier here needs no card.