Free SEC fundamentals API: what the free key includes
A free key reads SEC balance sheets as JSON with no card. This page lists what it includes and what it does not, from the same table the API enforces.
What the free key is
A key from the dashboard, with no card. It reads
SEC balance sheets for 6,251 SEC filers as JSON, each checked against
Assets = Liabilities + Equity before it is served where the filing reports the
lines needed, and it gives you
1,000 calls a month. Calls are counted per calendar
month and reset on the first, whatever day you signed up. A call that fails on
our side is not counted. Past the limit the API answers
429 with the reset date; nothing is billed, because there is no
card on file.
curl -H "X-API-Key: YOUR_KEY" \
https://balanceproof.dev/api/company/AAPL/history
Want to look first? https://balanceproof.dev/api/demo/AAPL
needs no key and is rate limited per address.
A real response from the free plan
This is GET /api/company/AAPL/history on the
Free plan, built by the same function the endpoint calls and read from the
database when this page was rendered. Each entry in the real response carries
every line item; three totals per period are shown here, and the first two
periods of 3.
{
"ticker": "AAPL",
"years_requested": 1,
"years_allowed": 1,
"plan": "free",
"periods": 3,
"available_from": "2023-09-30",
"balance_sheets": [
{
"period_end": "2026-06-27",
"filing_date": "2026-07-31",
"total_assets": 383266000000.0,
"total_liabilities": 275746000000.0,
"shareholders_equity": 107520000000.0
},
{
"period_end": "2026-03-31",
"filing_date": "2026-05-01",
"total_assets": 371082000000.0,
"total_liabilities": 264591000000.0,
"shareholders_equity": 106491000000.0
}
]
}
What Free includes
GET /api/company/{ticker}— the latest balance sheet, every line item, with the filing it came from.GET /api/company/{ticker}/history— 1 year back. Ask for more and you are answered with what the plan allows, and the response says so inyears_allowed.GET /api/company/{ticker}/statements— income statement and cash flow, each checked, to the same depth.GET /api/user/statusandGET /api/plans— your remaining calls and this table as data. Checking your status never costs a call.
What is not in Free
Read from the same table the API enforces, so this cannot drift from what a call is actually allowed to do:
| Feature | Free | Needs |
|---|---|---|
| Balance sheet history | 1 year back | — |
| What changed since the last filing | Not included | Starter and above |
| Watchlist and email alerts | Not included | Starter and above |
| Bulk verification | Not included | Pro and above |
| Filing links on every figure | Not included | Business and above |
| Webhooks | Not included | Business and above |
| Point-in-time as_of queries | Not included | Pro and above |
| The exceptions and restatements feed | Not included | Pro and above |
Calls per month by plan:
| Plan | Calls a month |
|---|---|
| Free | 1,000 |
| Starter | 5,000 |
| Pro | 10,000 |
| Business | 50,000 |
What each paid plan costs is on the pricing page, which is the only copy that is kept current.
What free does not mean here
- Not a trial. The key does not expire. A paid plan that lapses falls back to the free allowance and the key does not change.
- Not market data. This is filing data: balance sheets, income statements and cash flows as reported to the SEC. No prices, no estimates.
- Filed, not live. A figure appears after the company files and the filing is loaded.