All US Quarterly Financials — IS / BS / CFS (2016–2025, ~10y)
Ten years of quarterly Income Statement, Balance Sheet, and Cash Flow data for every USD-reporting US-listed company FMP indexes (~17,000 issuers including dual-class shares). 1,196,539 statement-period rows packaged as 3 gzipped CSV files, one CSV per statement type (income, balance, cashflow). Columns are the union of all FMP-reported fields per statement type — ~39 IS, ~61 BS, ~47 CFS. Read with pandas.read_csv(path, compression='gzip', parse_dates=['reportPeriod', 'filingDate']) or duckdb.read_csv('income_statement_*.csv.gz'). Coverage spans 2016 through 2025 quarterly. Useful for: fundamental factor research (gross margin, cash conversion, leverage), earnings drift studies, building screeners, fine-tuning LLMs on structured financial reporting, macro/sector-level financial-health rollups.
Use Cases
- Fundamental factor research: gross margin, FCF/sales, leverage, working-capital trends
- Earnings-momentum / earnings-drift backtests with filing-date-aware data
- Building custom screeners by sector / size / quality factors
- Anomaly detection on accounting series (e.g., accruals)
- Fine-tuning LLMs on structured corporate-disclosure data
- Macro / sector-level financial-health rollups
Methodology
Universe: every issuer in FMP's financial-statement-symbol-list reporting in USD with a US-style ticker (no foreign exchange suffix). For each, fetched up to 40 quarters from income-statement, balance-sheet-statement, and cash-flow-statement via FMP's REST API. Filtered to reportPeriod >= 2016-01-01. Packaged as one gzipped CSV per statement type (per-year split fallback if any single statement file exceeded the 50 MB platform per-file cap).
Update Schedule
Static snapshot. Reflects what FMP had indexed as of the build date.
Attribution
Source: SEC EDGAR financial statements via Financial Modeling Prep.
Schema
| name | type |
|---|---|
| symbol | string |
| fiscalYear | string |
| filingDate | string |
| acceptedDate | string |
| bottomLineNetIncome | string |
| cik | string |
| costAndExpenses | string |
| costOfRevenue | string |
| date | string |
| depreciationAndAmortization | string |
| ebit | string |
| ebitda | string |
| eps | string |
| epsDiluted | string |
| generalAndAdministrativeExpenses | string |
| grossProfit | string |
| incomeBeforeTax | string |
| incomeTaxExpense | string |
| interestExpense | string |
| interestIncome | string |
Sample Data
| cik | eps | date | ebit | ebitda | period | symbol | revenue | netIncome | epsDiluted | filingDate | fiscalYear | grossProfit | acceptedDate | costOfRevenue | otherExpenses | interestIncome | costAndExpenses | incomeBeforeTax | interestExpense | operatingIncome | incomeTaxExpense | reportedCurrency | netInterestIncome | operatingExpenses | bottomLineNetIncome | netIncomeDeductions | weightedAverageShsOut | weightedAverageShsOutDil | depreciationAndAmortization | otherAdjustmentsToNetIncome | sellingAndMarketingExpenses | totalOtherIncomeExpensesNet | researchAndDevelopmentExpenses | generalAndAdministrativeExpenses | netIncomeFromContinuingOperations | netIncomeFromDiscontinuedOperations | nonOperatingIncomeExcludingInterest | sellingGeneralAndAdministrativeExpenses |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0001546381 | -0.13 | 2018-06-30 | 63000 | 1239000 | Q2 | RLJE | 21474000 | -2014000 | -0.13 | 2018-06-30 | 2018 | 11234000 | 2018-06-30 00:00:00 | 10240000 | 705000 | 0 | 20814000 | -2299000 | 2362000 | 660000 | -285000 | USD | -2362000 | 10574000 | -2207000 | 0 | 15031000 | 15031000 | 579000 | 0 | 4776000 | -2959000 | 0 | 5093000 | -2014000 | 0 | 597000 | 9869000 |
| 0001546381 | -0.45 | 2018-03-31 | -1661000 | -776000 | Q1 | RLJE | 18582000 | -6525000 | -0.45 | 2018-03-31 | 2018 | 8800000 | 2018-03-31 00:00:00 | 9782000 | 885000 | 0 | 20243000 | -6312000 | 2291000 | 1306000 | 213000 | USD | -2291000 | 10461000 | -6718000 | 0 | 14467000 | 14467000 | 885000 | 0 | 4265000 | -4651000 | 0 | 5311000 | -6525000 | 0 | 0 | 9576000 |
| 0001546381 | 0.33 | 2017-12-31 | 4174000 | 5615000 | Q4 | RLJE | 32684000 | 3817000 | 0.33 | 2017-12-31 | 2017 | 14432000 | 2017-12-31 00:00:00 | 18252000 | 954000 | 0 | 28510000 | 4203000 | 2296000 | 4174000 | 386000 | USD | -2296000 | 10258000 | 3621000 | 0 | 11602000 | 11602000 | 1441000 | 0 | 3765000 | 29000 | 0 | 5539000 | 3817000 | 0 | 0 | 9304000 |
Get this via API
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'All US Quarterly Financials — IS / BS / CFS (2016–2025, ~10y)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urls
# 1. Add dAgentBase once, in any MCP client. No install, no vendor keys.
# Claude.ai / Claude Desktop: Settings -> Connectors -> Add custom connector
# Cursor / Claude Code / others: mcp.json
{
"mcpServers": {
"dagentbase": {
"url": "https://dagentbase.com/api/mcp",
"headers": { "Authorization": "Bearer dm_live_YOUR_KEY" }
}
}
}
# 2. Then ask your agent, in plain language:
# "Preview 'All US Quarterly Financials — IS / BS / CFS (2016–2025, ~10y)' and, if it fits, claim it and download the files."
# Tools it will use: search_listings -> preview_listing -> purchase_listing -> get_download_urlsone time · open license
Details
Available formats