Choose a Reliable Free Income Statement API
Compare periods, field definitions, filing dates, restatements, request limits, and usage rights before building financial analysis.
Free income statement API: the short answer
A reliable income statement API should explain how revenue becomes net income over a defined reporting period. It must keep standalone quarters separate from year-to-date durations, distinguish reported line items from provider calculations, and preserve unusual or non-recurring items instead of forcing every issuer into an oversimplified template. For trend analysis, the period and accounting meaning of a value matter as much as the value itself.
A free tier commonly limits requests, companies, history, bulk downloads, or commercial use. Treat it as an evaluation allowance.
Confirm revenue, cost of revenue, gross profit, operating expenses, operating income, taxes, earnings per share, and net income are consistently defined.
Providers may mix filing dates with fiscal periods or overwrite prior values after a restatement without preserving versions.
Query one company across annual and quarterly periods, reconcile with the filing, then test pagination, missing values, and revisions.
Which free income statement API should you start with?
The best starting point depends on whether you value filing fidelity, ready-to-use normalized fields, or a broader developer API. “Free” does not make the options interchangeable: they expose different accounting detail, geographic coverage, history, request capacity, and redistribution rights. The comparison below is a practical shortlist, not a permanent pricing promise; verify the current plan and license before shipping a product.
| Starting point | Best fit | What you receive | What you must handle |
|---|---|---|---|
| SEC EDGAR XBRL APIs | US filing research, source verification, and audit-friendly pipelines. | No API key, company facts and individual concepts in JSON, filing context, and nightly bulk archives. | CIK lookup, XBRL concept mapping, duplicate contexts, custom tags, fiscal-period logic, and server-side requests because data.sec.gov does not support CORS. |
| Alpha Vantage | A small prototype that needs annual and quarterly statements in a compact normalized response. | A documented income-statement endpoint with GAAP and IFRS taxonomy mapping and a simple symbol-based request. | The current free service is limited to 25 requests per day, so it is unsuitable for a broad screener without caching, batching, or a paid plan. Preserve filing evidence separately. |
| Financial Modeling Prep | Developers comparing standardized statements with as-reported records, TTM values, growth endpoints, or broader company data. | Separate normalized and as-reported income-statement endpoints, plus related TTM, growth, filing-date, and bulk capabilities documented in one API family. | An API key is required, and free-plan endpoint access, coverage, history, and quotas must be tested against the current account before architecture decisions are made. |
Practical recommendation: use SEC EDGAR when source fidelity and US filing evidence come first; use a normalized provider when development speed matters; keep both layers when an application must produce convenient metrics and still explain where every number came from.
What an income statement API should return
Each record should identify the company, fiscal period start and end, period type, currency, filing and acceptance dates, source document, and whether values are original, standardized, derived, or restated. Numeric fields need units, signs, and clear null behavior. If the API offers trailing-twelve-month data, it should identify the four source quarters or the method used to construct the period.
Keep fiscal year, quarter, start date, end date, filing date, acceptance time, and annual, quarterly, or year-to-date type separate. Calendar-year assumptions fail for off-calendar issuers. A nine-month cumulative value must not be presented as third-quarter performance.
Look for revenue, cost of revenue, gross profit, and material revenue categories. Confirm whether revenue is reported net or gross, whether discontinued operations are separated, and how segment totals reconcile to the consolidated amount.
Preserve research and development, sales and marketing, general and administrative expense, depreciation, restructuring, impairment, and stock-based compensation when disclosed. A single operating-expense total is insufficient for margin-quality analysis.
Separate interest income and expense, investment gains, foreign-exchange effects, equity-method results, unusual items, tax expense, non-controlling interests, and discontinued operations before arriving at net income attributable to common shareholders.
Basic and diluted weighted-average shares and EPS should use compatible periods. Retain the filing URL or accession identifier, reported currency, normalization method, and restatement status so historical earnings do not change without explanation.
Recalculate gross, operating, pretax, and net margins from the same period and unit before comparing companies. Verify subtotal arithmetic and investigate differences caused by non-GAAP adjustments, reclassifications, discontinued operations, or provider sign conventions. Keep reported values separate from ratios and growth rates derived by your application.
A useful research record explains how revenue became attributable net income. Store the material line items, filing evidence, normalization decisions, and period-over-period drivers behind each conclusion. This lets an analyst or agent distinguish durable operating improvement from tax effects, one-time gains, currency movements, or a shrinking share count.
Worked example: derive a standalone quarter from compatible YTD facts
Suppose a company's nine-month filing reports year-to-date revenue of $900 million and net income of $90 million, while the prior six-month filing reports $560 million of revenue and $52 million of net income. If both filings use the same consolidated scope, currency, unit, accounting policy, and continuing-operations basis, the derived third quarter is $340 million of revenue and $38 million of net income. The derived net margin is 38 ÷ 340 = 11.18%, not 90 ÷ 900 = 10.00%, which describes the nine-month period.
Do not subtract when the later filing restates the six-month comparative, changes currency or consolidation scope, reclassifies discontinued operations, or uses a different taxonomy mapping. In those cases, locate a compatible prior cumulative fact or leave the standalone quarter unavailable. Store both source facts, accession or filing IDs, calculation formula, and a derived flag so the quarter can be reproduced.
Match income statement access to your use case
| Use case | Data needed | Recommended access | Key limitation |
|---|---|---|---|
| Prototype | Recent annual and quarterly statements in simple JSON. | Documented free tier with a stable key. | Company and request quotas may be low. |
| Stock screener | Normalized fields, many companies, consistent periods. | Batch endpoints and predictable pagination. | Normalization can hide accounting differences. |
| Historical research | Long history, filing dates, revisions, source links. | Versioned data or bulk downloads. | Free access often omits old filings. |
| Earnings-quality review | Expense detail, unusual items, tax bridge, shares, and links to cash flow. | Filing-linked detail with preserved reported fields and explicit adjustments. | Headline-only revenue, EPS, and net income cannot explain earnings quality. |
| AI earnings brief | Current and comparison periods, source citations, material changes, and null reasons. | Evidence-linked records that attach every generated claim to a period and source fact. | Mixed periods can produce fluent but materially incorrect summaries. |
| Commercial product | Reliable refreshes, broad coverage, support, usage rights. | Paid plan with an SLA and commercial license. | A free tier may prohibit redistribution. |
Build a reliable income statement API workflow
A usable pipeline should preserve the statement as reported before it calculates growth, margins, or earnings quality. Start from an immutable source response, create one explicit record for each company and duration, and derive comparison metrics only after the period, currency, units, accounting basis, and filing version agree.
Retain request parameters, raw payload, provider, retrieval time, filing URL or accession, acceptance time, form type, taxonomy, amendment status, reported labels, values, units, and contexts. Keep normalized fields linked to the source fact rather than replacing it.
Classify annual, standalone-quarter, and year-to-date durations explicitly. Derive a quarter from cumulative facts only when both periods share accounting scope, currency, units, and filing basis. Store the two inputs and mark the result as calculated.
Recalculate gross profit, operating income, pretax income, tax, consolidated net income, non-controlling interest, and net income attributable to common shareholders. Verify basic and diluted EPS against compatible weighted-average shares, and keep unexplained differences visible.
Create a new statement version for amendments, corrected mappings, and changed normalization rules. Monitor missing required fields, subtotal failures, sudden sign or unit changes, stale filings, period remapping, and unexplained margin jumps. Every downstream screen or generated brief should retain its source version.
Run one acceptance test before you trust the API
Do not approve an income statement API after one successful request. Build a small fixture that includes a normal quarter, an annual filing, an amended filing, an off-calendar issuer, a loss-making company, and a company with material non-controlling interest or discontinued operations. The same fixture should run whenever a provider, schema, or normalization rule changes.
Confirm that fiscal year, fiscal quarter, start date, end date, filed date, form type, and duration agree. For a 10-Q containing six- or nine-month cumulative facts, verify that the API either returns the cumulative duration honestly or derives the standalone quarter from compatible facts and labels it as calculated.
Check revenue minus cost of revenue against gross profit; reconcile operating expenses to operating income; then bridge pretax income, tax, consolidated income, non-controlling interest, and attributable net income. Define an explicit tolerance for rounding instead of silently accepting every difference.
Fetch a filing that was amended or restated. Confirm that the new value does not erase the prior version, and that both records retain accession or filing URL, acceptance timestamp, reported label, unit, and transformation history. A generated brief should be reproducible from the version it originally used.
Measure response time, pagination, rate-limit headers, retry behavior, daily quota reset, and batch efficiency. Read the license for storage, derived analytics, client display, and redistribution. A technically accessible endpoint is not automatically licensed for a public financial product.
Pass condition: approve the API only when the fixture produces period-correct, arithmetically explainable, source-linked results under the expected request load. Record known exceptions and assign an owner; do not hide them in application code.
QVeris
QVeris helps developers and agents discover income-statement and filing capabilities before integration, compare callable contracts, and inspect period parameters and outputs. This can reduce provider-specific discovery work. The application still needs to validate quarter-versus-year-to-date semantics, preserve source line items, manage revisions, and require evidence for any generated earnings explanation.
- Search for income-statement or financial-fundamentals capabilities by intent.
- Inspect symbols, period parameters, schemas, and output examples before writing an adapter.
- Keep licensing, revision handling, coverage, and quota checks in your production acceptance process.
FAQ
Yes. Several services expose limited company fundamentals or regulatory filings without charge. Limits commonly apply to requests, history, coverage, bulk access, or commercial use.
Use reported values when fidelity to the filing matters. Normalized fields make cross-company analysis easier, but you should retain source labels and provenance so differences remain auditable.
Subtract the prior cumulative duration only when both facts use compatible accounting scope, currency, and filing versions. Mark the result as derived and preserve the two source records.
Providers may choose different reported concepts, treat discontinued operations differently, normalize gross versus net presentation, or select different filing versions. Compare the original concept and context before judging the number.
No universal field identifies every non-recurring item. Review restructuring, impairment, litigation, disposal, acquisition, and other unusual disclosures, and document any adjustment rather than deleting them automatically.
Keep reported basic and diluted EPS with their share counts and periods. Use null plus a reason for unavailable data; do not replace missing values with zero or recalculate without documenting the method.
