Extract data from annual reports

Drop a 10-K, annual report, or earnings release PDF and pull the metrics that matter: revenue, net income, EPS, segment breakdowns, balance-sheet figures — across years, in a clean table.

Drop a PDF or image here, or browse
PDF or image · up to 20 MB
Processed in-flight — never stored on our servers.

What should we pull from this annual report?

Or pick specific fields

Or describe it yourself

Why this matters

Financial documents are long, dense, and inconsistent in layout from filer to filer. Manual scraping with PDF tools breaks on every new report. ExtractFox understands financial statements semantically and returns numbers in a stable schema you can pipe into a model or dashboard. Equity analysts building comp tables manually open five 10-K PDFs and hunt for segment revenue on pages that differ every year — one filer puts it in Note 17, another embeds it in a chart with no extractable table. ESG funds screening for Scope 3 emissions find the number in a sustainability appendix with a different unit (thousands vs millions) than the income statement on page 42.

How it works

  1. Step 1
    Upload the report PDF

    10-K, 10-Q, annual report, integrated report — up to 20 MB.

  2. Step 2
    Choose what to extract

    Income statement, balance sheet, cash flow, segment breakdown, key metrics by year, or a custom set of fields you describe.

  3. Step 3
    Export to Excel or JSON

    Numeric fields come back as numbers (in the original currency, no symbols), so SUM and AVG work in Excel.

Common use cases

Income statement — revenue, costs, net income, EPS by year
Balance sheet — assets, liabilities, equity
Cash flow — operating, investing, financing flows
Segment breakdown — revenue and profit by business unit or geography
Risk factor extraction — list of material risks for due diligence
Executive compensation — named officers and total comp
ESG / sustainability metrics — emissions, diversity, governance
Comparable extraction across competitors — same fields, multiple filings
Peer benchmarking — same income-statement fields across 10 competitors into one comparison sheet
Credit analysis — debt schedules, covenant language, and maturity dates from footnotes

Sample output

Example: 3-year income statement extracted from a 10-K

companyAcme Corp.
fiscal_year_endDecember 31
currencyUSD
income_statement
yearrevenueoperating_incomenet_incomeeps_diluted
202412450000000221000000018200000004.82
202513980000000254000000021040000005.49
202615210000000287000000023870000006.12

Frequently asked questions

How do I extract data from an annual report or 10-K PDF?+

Drop the PDF here, choose income statement / balance sheet / segments — or describe the exact fields and years you want. ExtractFox returns numeric values you can sum and chart.

Can it extract financial tables that span multiple pages?+

Yes. Tables that wrap across pages are stitched into a single ordered list. Three-year and five-year comparative tables come through with one row per year.

Does it work on scanned annual reports?+

Yes. Both digital (text-based) and scanned (image-based) annual reports work. Older filings that were scanned to PDF extract just like modern native PDFs.

Can I extract the same fields across multiple companies for comparison?+

Yes. Run the same extraction (same description or schema) on each company's filing. The stable schema means competitive comparison is a join across the JSON outputs.

What about non-US filings — annual reports under IFRS or local GAAP?+

Works the same way. The model identifies the income statement, balance sheet, and cash flow regardless of accounting standard. Currency and units (millions vs thousands) are preserved.

Can it extract risk factors and forward-looking statements?+

Yes. Use the description box to ask for, e.g., 'every risk factor as a row with title and one-paragraph summary'. The model returns a list, not a wall of text.

Can it pull the same metric from multiple years when the table layout changes?+

Yes. Describe the metric by name — e.g., 'total revenue by fiscal year' — and ExtractFox finds it whether the table is horizontal, vertical, or buried in a footnote. Years come back as separate rows in a stable schema.

Does it extract footnoted adjustments to GAAP figures — e.g., non-GAAP reconciliations?+

Yes. Ask for 'non-GAAP reconciliation items' or 'adjusted EBITDA bridge' in the description box. Each adjustment line returns as a labeled row with the dollar amount.

What is annual report data extraction?+

Annual report data extraction pulls structured financial tables — income statement, balance sheet, cash flow, segments — from a 10-K or annual report PDF into rows you can chart or model. ExtractFox finds metrics by meaning, not fixed coordinates, so layout changes between filers don't break the output.

Can I use this for financial report extraction across multiple companies?+

Yes. Run the same extraction on each filing — revenue, net income, EPS by year — and join the JSON outputs. The stable schema makes peer comp tables a spreadsheet operation instead of manual copy-paste from five different PDF layouts.

Compare to alternatives

Related extractors

Used by

From the blog