ParseParse
Use CasesDocsAPI Reference
Log InGet Started Free
Menu
  • How it works
  • Use Cases
  • Docs
  • API Reference
  • Contact
REST API · Statements to JSON · 100 free pages/mo

Financial Statement Extraction API

Pull balance sheets, income statements, and cash flow statements out of annual and quarterly reports as structured JSON. Every line item keeps its section and both period columns stay separate, so a spreading model can consume the output directly.

Get an API Key FreeRead the Docs

Every Line Item, Mapped to Its Period

Send the statement page and a schema. Each line comes back with its section label and its figures already split by period, so nothing downstream depends on reading a column header by eye.

request.sh
curl -X POST \
  https://api-parse.conversiontools.io/v1/extract \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@annual-report.pdf" \
  -F 'schema={
    "company": "string",
    "statement_type": "string",
    "fiscal_period": "string",
    "period_end": "date",
    "currency": "string",
    "units": "string",
    "line_items": [{
      "label": "string",
      "section": "string",
      "current_period": "number",
      "prior_period": "number"
    }],
    "total_assets": "number",
    "total_liabilities": "number",
    "total_equity": "number",
    "revenue": "number",
    "net_income": "number"
  }'
response.json
{
  "status": "completed",
  "pages": 2,
  "data": {
    "company": "Halbrook Materials Inc.",
    "statement_type": "balance_sheet",
    "fiscal_period": "FY2025",
    "period_end": "2025-12-31",
    "currency": "USD",
    "units": "thousands",
    "line_items": [
      {
        "label": "Cash and cash equivalents",
        "section": "current_assets",
        "current_period": 184320,
        "prior_period": 151806
      },
      {
        "label": "Accounts receivable, net",
        "section": "current_assets",
        "current_period": 96455,
        "prior_period": 88012
      },
      {
        "label": "Property, plant and equipment, net",
        "section": "non_current_assets",
        "current_period": 411208,
        "prior_period": 398765
      },
      {
        "label": "Accounts payable",
        "section": "current_liabilities",
        "current_period": 64907,
        "prior_period": 59320
      }
    ],
    "total_assets": 764123,
    "total_liabilities": 302588,
    "total_equity": 461535,
    "revenue": null,
    "net_income": null
  }
}

Built for Analysts & Credit Teams

On a statement the period lives in the column header, and everything downstream depends on getting that mapping right.

Period columns kept apart

Current and prior period are separate fields on every line item, so a figure never drifts into the wrong year when a filer swaps the column order or slips in a restated column.

Section context survives the export

Cash belongs under current assets, a lease obligation under non-current liabilities. Each line carries its section label, so a subtotal can be checked against the lines that actually make it up.

One shape across every filer

No two companies word their statements the same way. The schema decides the output shape, so a model built on one issuer does not fall over on the next one you load.

Frequently Asked Questions

Does it work on 10-K and 10-Q filings?

Yes, and on annual accounts filed under other regimes too. Extraction is schema-driven rather than form-specific, so an IFRS annual report and a quarterly interim statement are handled the same way, with the same request.

How does it know which column belongs to which period?

The period sits in the column header, and your schema is where you say what you want back. Ask for current_period and prior_period on each line item and the columns are separated for you. If a statement prints three or five years, add one field per column and name them however your model expects.

What about figures in thousands, or negatives in parentheses?

The units line is captured as its own field and figures come back as printed rather than silently rescaled, so the multiplier stays under your control. Accounting negatives written in parentheses are returned as negative numbers.

Can it handle a whole annual report, not just one page?

Yes. Submit the full document and poll for the result, or register a webhook and get called when it finishes. Long filings do not have to be split by hand, and a statement that runs across a page break stays one set of line items.

How is financial data handled?

Uploaded documents are deleted automatically within 24 hours. Extracted data is encrypted in transit and at rest and is never used to train models.

More document extraction use cases

The same schema-driven API works across every document type. Define a schema once, extract from thousands of files.

Data Extraction API

Extract structured JSON from any document with custom schemas.

PDF Parsing API

Parse any PDF into structured JSON, scanned or digital.

Invoice extraction

Vendor, line items, totals, tax, and dates from invoices.

Receipt parsing

Store, items, totals, and payment method from receipts.

Purchase order extraction

PO number, vendor, buyer, and SKU-level line items.

Bank statement to JSON

Transactions, running balances, and dates for reconciliation.

Tax form extraction

Box-level data from W-2, 1099, and other tax forms.

Contract data extraction

Parties, dates, governing law, and key clauses.

Bill of lading extraction

Carrier, parties, ports, containers, and cargo.

Credit note extraction

Credit amounts matched back to the original invoice.

Remittance advice extraction

Payments split across invoices for cash application.

Utility bill extraction

Meter readings, charges, and totals from any provider.

Quotation extraction

Vendor quotes in one shape so you can compare them.

Payslip extraction

Earnings, deductions, taxes, and year-to-date totals.

Resume parsing

Experience, education, and skills from any CV layout.

ID document extraction

Fields and MRZ from passports and ID cards.

Lease agreement extraction

Rent, term, deposits, and renewal deadlines.

Insurance claim extraction

Claim and policy numbers, dates, and claimed amounts.

Packing list extraction

Packages and SKU-level lines for receiving.

Delivery note extraction

Ordered versus delivered quantities and sign-off.

Stop Spreading Statements by Hand

Free tier covers your first 100 pages a month. No credit card to start.

Get Started FreeAPI Reference
Parse

AI-powered document data extraction

Conversion ToolsPowered by Conversion Tools

Use cases

  • Data Extraction API
  • PDF Parsing API
  • Invoice extraction
  • Receipt parsing
  • Purchase order extraction
  • Bank statement to JSON
  • Tax form extraction
  • Contract data extraction
  • Bill of lading extraction

Developers

  • How it works
  • Quickstart
  • Documentation
  • API Reference
  • n8n integration
  • Blog

Account

  • Log in
  • Contact
  • Security
  • Privacy Policy
  • Terms of Service
  • Refund Policy
© 2026 Conversion Tools