Financial filings, NLP-ready.
Regulatory filings from 50+ markets, converted from raw PDF into clean, structured Markdown - the format NLP and LLM pipelines actually want. Same schema across every market, every figure traceable to its source, delivered by API, webhook or bulk.
- 29M
- Filings as Markdown
- 69K
- Listed companies
- 50+
- Markets, one schema
- ~70%
- Fewer tokens vs PDF
A 412-page PDF is not a context window.
Regulatory disclosures ship as PDFs built for print - multi-column layouts, scanned tables, footnotes detached from the numbers they annotate, a dozen languages. Feed that to a model and your NLP runs on whatever survived extraction. We do the extraction once, cleanly, so you don't have to.
| € m | 2025 | 2024 |
|---|---|---|
| Revenue | 23,683 | 22,506 |
| Cost of sales | (11,368) | (10,921) |
| Gross profit | 12,315 | 11,585 |
| Royalty income¹² | 642 | 617 |
flattened on extraction tables split
across pages footnote ¹² unresolved
# Adidas AG - Annual 2025 ## Consolidated income statement | Item | 2025 | 2024 | |-----------------|---------|---------| | Revenue | 23,683 | 22,506 | | Cost of sales | (11,368)| (10,921)| | **Gross profit**| 12,315 | 11,585 | [footnote 12: see note 4 on revenue recognition]
Illustrative example - figures are not actual company data.
Clean text is the hard part of financial NLP.
Most of the effort in a financial-NLP project never touches the model - it goes into wrangling documents. Annual reports run to hundreds of pages of multi-column, print-oriented PDF; interim and ad-hoc filings arrive in a dozen languages and a hundred house styles. Naive PDF extraction flattens two-column layouts into scrambled text, splits tables across page breaks, and detaches footnotes from the numbers they qualify. Whatever your model sees downstream is only as good as that first, brittle conversion step.
We do that step once, for every filing, and do it well. Each document is parsed into clean, GitHub-flavored Markdown that keeps headings, tables and footnotes intact and drops the running headers, page numbers and layout noise a model doesn't need. The result is compact - a 412-page report becomes roughly 3,200 tokens - and structurally faithful, so retrieval, chunking and citation all behave the way they should.
Because every market runs through the same pipeline into the same schema, a Frankfurt annual report and a Tokyo earnings release come out shaped identically. You write your extraction, sentiment or topic-modeling logic once and run it across 50+ markets instead of maintaining a bespoke parser per regulator - and because the original-language text and the source PDF travel alongside the Markdown, every result stays auditable back to the primary document.
Four things a legacy data feed can't give you.
Clean structured Markdown
Millions of unstructured PDFs converted to GitHub-flavored Markdown - headings, tables and footnotes preserved. The same text rendered on our public pages, one endpoint away.
Multi-lingual, one pipeline
50+ markets normalised into a single schema. Original-language text preserved, with an English rendering where available, so one NLP workflow runs unchanged across every jurisdiction.
As-filed & point-in-time
We deliver the source text as filed - not a pre-adjusted, non-auditable number. Every figure is traceable to its source page, so models train on evidence, not a black box.
API, webhook or bulk
Pull on demand via one API keyed by ISO country code, subscribe to new filings by webhook (~60s latency), or license the full corpus over S3, Snowflake and Databricks.
Purpose-built for text at scale.
Quant funds, analytics platforms and academic groups use the Markdown feed as the ingestion layer for their own models.
Three views of every filing.
- MarkdownThe NLP-ready body - clean, structured, LLM-friendly. One endpoint per filing.
- JSONStructured metadata - company, filing type, dates, language, identifiers - for filtering and joins.
- PDFThe original source document, preserved for citation and audit.
- BulkThe full corpus over S3, Snowflake and Databricks for training and backfills.
# Latest filings for a market, as Markdown
curl "https://api.financialreports.eu/api/filings/?countries=DE" \
-H "x-api-key: $FR_API_KEY"
# Fetch the NLP-ready body for one filing
curl "https://api.financialreports.eu/api/filings/{id}/markdown/" \
-H "x-api-key: $FR_API_KEY"
The web product - search, browse, single-filing read - is free. Programmatic access is a paid plan; the same key works across every market.
NLP-ready financial data, answered.
What is "NLP-ready" financial data?
Is this the same as your Markdown output?
Which markets and filing types are covered?
Can I use it for LLM / RAG pipelines?
How do I access it?
Stop parsing PDFs. Start on clean text.
Point your NLP and LLM pipelines at filings that are already clean, structured and normalised across every market.