Free SEC Fundamentals API
Company profiles, standardized financial statements – income statement, balance sheet and cash flow, annual, quarterly and trailing twelve months – and SEC filing lists for more than 21,000 companies, looked up by ticker or CIK. Built from SEC EDGAR filings every night. JSON over HTTPS, no API key, CORS enabled.
- No API key
- 21,000+ companies
- Annual, quarterly & TTM
- Split-adjusted EPS
Personal, non-commercial use only. Redistribution of the data is not allowed. See the Terms of Service.
Quick start
One request, no key. Get Apple's annual financial statements:
curl --compressed "https://api.quotelinks.com/v1/financials/AAPL"
{"cik":320193,"symbol":"AAPL","name":"Apple Inc.","currency":"USD","period":"annual","basis":"latest",
"fields":{"revenue":{"statement":"income","unit":"USD"}, … },
"periods":[{"fiscal_year":2026,"fiscal_period":"FY","start":"2025-09-28","end":"2026-09-26","form":"10-K",
"filed":"2026-11-03","accession":"0000320193-26-000026","revenue":478834000000,"gross_profit":233602000000,
"operating_income":158063000000,"net_income":132175000000,"eps_diluted":8.98, … ,"fcf":136056000000,
"sources":{"revenue":"us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax", … ,"fcf":"derived"},
"notes":{"fcf":["derived"]}}, … ]}Amounts are in the company's reporting currency, in full units (not thousands or millions). Periods are listed newest first.
Try it
Build a request, press Run, and see the live JSON from api.quotelinks.com.
https://api.quotelinks.com/v1/financials/AAPLEndpoints
Base URL: https://api.quotelinks.com/v1/. All endpoints are GET. {id} is a ticker symbol (case-insensitive; BRK.B and BRK-B both work) or an SEC CIK number (320193 or 0000320193). Former tickers of a company usually work too.
| Endpoint | Returns |
|---|---|
/financials/{id} | Standardized income statement, balance sheet and cash flow: annual, quarterly or TTM |
/company/{id} | Company profile: name, tickers, industry, fiscal year end, address, shares outstanding, latest reports |
/filings/{id} | SEC filings, newest first, with links to the documents on sec.gov; filter by form and date |
/industries | All SIC industry codes with their divisions and company counts |
/industries/{sic} | Companies in one SIC industry with their latest annual revenue, net income and total assets |
/tickers | Every ticker with its CIK, company name and exchange |
/status | When the data was last rebuilt, and how many companies it covers |
GET/v1/financials/{id}
Standardized financial statements, one entry per period, newest first. Each period carries the filing it comes from and, for every value, the XBRL tag it was taken from.
| Parameter | Description |
|---|---|
period | annual (default), quarterly (Q1–Q4) or ttm (trailing twelve months, one entry per quarter end). |
basis | latest (default): the most recently filed figure for each period, adjusted for stock splits. original: the figure as first reported, never adjusted. ttm is only available with latest. |
GET https://api.quotelinks.com/v1/financials/AAPL?period=quarterly
{"cik":320193,"symbol":"AAPL","name":"Apple Inc.","currency":"USD","period":"quarterly","basis":"latest",
"fields":{ … },
"periods":[{"fiscal_year":2026,"fiscal_period":"Q4","end":"2026-09-26","form":"10-K","revenue":114477000000, … ,
"notes":{"revenue":["derived"], … ,"eps_diluted":["derived","approximate"]}}, … ]}Each period object has fiscal_year, fiscal_period (FY, Q1–Q4), start, end, form, filed, accession, the 39 financial fields (null when the company did not report them), sources and, when needed, notes.
GET/v1/company/{id}
Profile data from the company's SEC registration and filings.
GET https://api.quotelinks.com/v1/company/AAPL
{"cik":320193,"symbol":"AAPL","tickers":[{"symbol":"AAPL","exchange":"Nasdaq"}],"name":"Apple Inc.",
"entity_type":"operating","category":"Large accelerated filer",
"industry":{"sic":3571,"title":"ELECTRONIC COMPUTERS","division":"D","division_title":"Manufacturing","major_group":"35"},
"fiscal_year_end":"09-26","state_of_incorporation":"CA","phone":"(408) 996-1010",
"address":{"street1":"ONE APPLE PARK WAY","city":"CUPERTINO","state_or_country":"CA","zip":"95014", … },
"former_names":[{"name":"APPLE INC","from":"2007-01-10","to":"2019-08-05"}, … ],
"shares_outstanding":{"value":14532182000,"date":"2026-10-23"},
"public_float":{"value":3647099000000,"date":"2026-03-27"},
"latest_annual_report":{"form":"10-K","filed":"2026-11-03","report_date":"2026-09-26", … },
"latest_quarterly_report":{"form":"10-Q","filed":"2026-07-31","report_date":"2026-06-27", … },
"filings_count":2275,
"financials":{"currency":"USD","fiscal_years":18,"quarters":70,
"splits":[{"ratio":4.0,"first_post_split_filing":"2020-10-30"},{"ratio":7.0,"first_post_split_filing":"2014-07-23"}]}}symbol is the company's main ticker; tickers lists all of them (for example both share classes of Alphabet). financials is null for filers without standardized statements.
GET/v1/filings/{id}
Without parameters: the 200 most recent filings. With any parameter, the list is filtered and paged.
| Parameter | Description |
|---|---|
form | Comma-separated form types, e.g. 10-K,10-Q,8-K. Exact match; amendments are separate types (10-K/A). |
from, to | Filing date range, YYYY-MM-DD, inclusive. |
limit | Filings per page, 1–1000. Default 100. |
offset | Skip this many filings. Use the next URL in the response to page. |
GET https://api.quotelinks.com/v1/filings/AAPL?form=10-K&limit=1
{"cik":320193,"symbol":"AAPL","name":"Apple Inc.","count":31,"offset":0,"limit":1,
"next":"https://api.quotelinks.com/v1/filings/AAPL?form=10-K&limit=1&offset=1",
"filings":[{"accession":"0000320193-26-000026","form":"10-K","filed":"2026-11-03","report_date":"2026-09-26",
"accepted":"2026-11-03T13:05:15.000Z","items":[],"primary_document":"aapl-20260926.htm","description":"10-K",
"size":10902198,"xbrl":true,"inline_xbrl":true,
"url":"https://www.sec.gov/Archives/edgar/data/320193/000032019326000026/aapl-20260926.htm",
"index_url":"https://www.sec.gov/Archives/edgar/data/320193/000032019326000026/0000320193-26-000026-index.htm"}]}items lists the 8-K item numbers (for example 2.02 for results of operations). count is the total number of matching filings.
GET/v1/industries/{sic}
All companies registered under one Standard Industrial Classification code, with figures from their latest annual report (latest basis).
GET https://api.quotelinks.com/v1/industries/7372
{"sic":7372,"title":"SERVICES-PREPACKAGED SOFTWARE","division":"I","division_title":"Services","major_group":"73",
"count":741,"companies":[{"cik":789019,"symbol":"MSFT","name":"MICROSOFT CORP","fiscal_year":2026,
"fiscal_year_end":"2026-06-30","current":true,"currency":"USD","revenue":331839000000,"net_income":133749000000,
"total_assets":758376000000}, … ]}Figures are in the company's reporting currency and are not converted. current is true when the latest annual report covers a fiscal year that ended within about the last 18 months. Order: current filers reporting in USD by revenue, then current filers in other currencies (grouped by currency), then companies with older reports, then companies without revenue.
/v1/industries lists all 445 codes with title, division, major_group, the number of companies and the url of each list.
GET/v1/tickers
{"count":10474,"tickers":[{"symbol":"A","cik":1090872,"name":"AGILENT TECHNOLOGIES, INC.","exchange":"NYSE","primary":true},
{"symbol":"AA","cik":1675149,"name":"Alcoa Corp","exchange":"NYSE","primary":true}, … ]}GET/v1/status
{"status":"ok","service":"Quotelinks SEC API","version":"v1",
"source":"U.S. Securities and Exchange Commission (EDGAR): companyfacts, submissions, company tickers",
"build":"20261107T032709","built":"2026-11-07T03:28:32+00:00",
"sec_files":{"companyfacts":"Fri, 06 Nov 2026 05:08:32 GMT","submissions":"Fri, 06 Nov 2026 05:16:25 GMT", … },
"counts":{"companies":21549,"tickers":10474,"companies_with_financials":17051,"industries":445}}Financial fields
Every period has the same 39 keys. Money is in the reporting currency (currency), per-share values in currency per share, share counts in shares.
Income statement
| Field | Unit | Meaning |
|---|---|---|
revenue | money | Total revenue / net sales |
cost_of_revenue | money | Cost of revenue / cost of goods and services sold |
gross_profit | money | Gross profit (revenue minus cost of revenue when not reported) |
rnd | money | Research and development expense |
sga | money | Selling, general and administrative expense |
operating_expenses | money | Total operating expenses, as reported |
operating_income | money | Operating income (loss) |
interest_expense | money | Interest expense |
pretax_income | money | Income before income taxes |
income_tax | money | Income tax expense (benefit) |
net_income | money | Net income attributable to the company |
net_income_common | money | Net income available to common stockholders |
eps_basic | per share | Basic earnings per share |
eps_diluted | per share | Diluted earnings per share |
shares_basic | shares | Weighted average shares, basic |
shares_diluted | shares | Weighted average shares, diluted |
dps | per share | Dividends declared per common share |
Balance sheet (at period end)
| Field | Unit | Meaning |
|---|---|---|
cash | money | Cash and cash equivalents |
st_investments | money | Short-term investments / current marketable securities |
receivables | money | Accounts receivable, net |
inventory | money | Inventory, net |
current_assets | money | Total current assets |
ppe_net | money | Property, plant and equipment, net |
goodwill | money | Goodwill |
intangibles | money | Intangible assets other than goodwill, net |
total_assets | money | Total assets |
accounts_payable | money | Accounts payable |
current_liabilities | money | Total current liabilities |
long_term_debt | money | Long-term debt, non-current portion |
total_liabilities | money | Total liabilities |
equity | money | Stockholders' equity attributable to the company |
shares_outstanding | shares | Common shares outstanding |
Cash flow
| Field | Unit | Meaning |
|---|---|---|
cfo | money | Net cash from operating activities |
capex | money | Capital expenditures (payments for property and equipment; positive = cash spent) |
fcf | money | Free cash flow = cfo − capex |
dividends_paid | money | Dividends paid |
buybacks | money | Repurchases of common stock |
sbc | money | Stock-based compensation |
dna | money | Depreciation, depletion and amortization |
How the figures are built
- From XBRL filings. Values come from the structured (XBRL) data companies file with their 10-K, 10-Q, 20-F and 40-F reports. For each field, a list of standard US GAAP and IFRS tags is tried in order;
sourcesshows which tag was used for each value. - Fiscal years as the company reports them.
fiscal_yearandfiscal_periodcome from the filing in which the period was the current period, so retailers and other companies with non-calendar years are labelled the way they label themselves. - Latest vs. original. Companies restate prior periods (accounting changes, discontinued operations, stock splits).
basis=latestuses the most recently filed figure;basis=originalkeeps the figure as first reported. - Stock splits. Splits are detected from restated share counts and EPS. With
basis=latest, per-share values and share counts filed before a split are adjusted to today's share basis (flaggedsplit_adjusted); the split ratios are listed in/company/{id}. - Derived values. 10-Ks don't report the fourth quarter separately, and 10-Qs report cash flow year-to-date, so Q4 is the full year minus the first nine months, and Q2/Q3 cash flows are calculated from year-to-date totals.
gross_profitandfcfare calculated when not reported. These values are flaggedderived. - Approximate values. Derived quarterly or TTM per-share figures (for example Q4 EPS = full-year EPS minus nine-month EPS) and TTM share counts (average of four quarters) are flagged
approximate. - Missing values are
null. Not every company reports every field – banks, for example, have no gross profit or inventory, and some companies use their own (non-standard) tags, which are not included. - Currency. Foreign companies that report under IFRS appear in their own reporting currency; check
currency.
Data & updates
- Source: SEC EDGAR bulk data – XBRL company facts, company submissions (filings) and the SEC's ticker files – downloaded directly from the U.S. Securities and Exchange Commission.
- Coverage: about 21,500 SEC registrants with a ticker or XBRL financial data, including OTC companies; standardized financial statements for about 17,000 of them, from 2009 (when XBRL filing began) onward.
- Schedule: rebuilt every night from the SEC's latest files;
/v1/statusshows the current build. A new 10-K or 10-Q appears the day after the SEC publishes its data. - Caching: responses are cached for up to 1 hour.
- Not included: stock prices, analyst estimates or anything not filed with the SEC.
Errors & limits
Errors return JSON with the HTTP status and a message:
{"status":404,"message":"unknown ticker or CIK: ZZZZZ"}| Status | When |
|---|---|
404 | Unknown ticker, CIK or SIC code; no standardized statements for that company; or an unknown path. |
422 | Invalid parameter: period, basis (e.g. ttm with original), limit, offset, from, to or form. |
405 | Method other than GET or HEAD. |
429 | Too many requests. Wait (see Retry-After) and retry. |
503 | Temporary server problem. Retry later. |
Fair use: up to 2 requests per second per IP address, or 10 per second with a free API key (add api_token=YOUR_KEY). The data changes once a day, so please cache responses.
Code examples
JavaScript (browser or Node 18+)
const r = await fetch("https://api.quotelinks.com/v1/financials/MSFT");
const { periods } = await r.json();
for (const p of periods.slice(0, 5))
console.log(p.fiscal_year, p.revenue, p.net_income, p.eps_diluted);Python
import json, urllib.request
url = "https://api.quotelinks.com/v1/financials/NVDA?period=ttm"
with urllib.request.urlopen(url) as r:
latest = json.load(r)["periods"][0]
print(latest["end"], latest["revenue"], latest["fcf"])PHP
$f = json_decode(file_get_contents(
"https://api.quotelinks.com/v1/filings/TSLA?form=8-K&limit=5"
), true);
foreach ($f["filings"] as $x) echo $x["filed"], " ", $x["url"], "\n";Source & terms
The figures come from filings submitted to the U.S. Securities and Exchange Commission through EDGAR. The field mapping, derived values and split adjustments are calculated by Quotelinks and may differ from figures in the filings or from other data providers. Quotelinks is not affiliated with or endorsed by the SEC.
The API is provided for personal, non-commercial use. Redistribution of the data is not allowed. For commercial use, contact support@quotelinks.com. See the Terms of Service and the disclaimer. The figures are for information only and are not investment advice; check the original filing before relying on a number.
Frequently asked questions
Is the SEC Fundamentals API free?
Yes. No sign-up, no API key needed and no cost, for personal, non-commercial use. Fair use is up to 2 requests per second per IP address, or 10 per second with a free API key; please cache responses.
Can I use the data commercially or redistribute it?
No. The API is for personal, non-commercial use, and redistribution of the data is not allowed. For commercial use, contact support@quotelinks.com. See the Terms of Service.
Where does the data come from?
From filings submitted to the U.S. Securities and Exchange Commission: the SEC's XBRL company facts, company submissions and ticker files from EDGAR. Quotelinks maps the XBRL tags to 39 standard fields and calculates derived values such as Q4 and free cash flow.
How often is the data updated?
Every night, from the SEC's latest bulk files. A new 10-K or 10-Q usually appears the day after the SEC publishes its data. The /v1/status endpoint shows the current build.
Are EPS and share counts adjusted for stock splits?
Yes, with basis=latest (the default): per-share values and share counts reported before a split are converted to today's share basis and flagged split_adjusted. basis=original returns the figures exactly as first reported.
Why do some numbers differ from other financial websites?
The API uses the figures companies report under US GAAP or IFRS in their filings, not adjusted (non-GAAP) numbers or analyst estimates. Restatements, the choice of XBRL tag and fiscal-year labels can also differ between providers. The sources field shows the tag behind every value.
Can I look up a company by CIK instead of ticker?
Yes. Every endpoint that takes a ticker also accepts the SEC CIK number, with or without leading zeros, for example /v1/company/320193 or /v1/company/0000320193.
Does the API include stock prices?
No. It contains only data filed with the SEC: company information, financial statements and filings.
Which companies are covered?
About 21,500 SEC registrants that have a ticker or file XBRL financial data, including OTC companies, with standardized financial statements for about 17,000 of them. Foreign companies that report under IFRS appear in their own currency. Companies that do not file with the SEC are not included.