Skip to main content
04 / API · Enterprise

The global filings API.

46,243 companies, 21.5 million filings, 105 markets — through one typed REST and GraphQL endpoint. Markdown by default. Webhooks fire under 90 seconds.

Four primitives. Every filing in the index, callable in production, in the format your stack actually wants.

1.1 / Markdown

Markdown by default.

A 412-page PDF becomes ~3,200 tokens of Markdown. Tables intact, footnotes attached, ~70 % token reduction.

1.2 / Endpoints

REST and GraphQL.

Typed schema. Same index, two query styles. JSON, Markdown, or original PDF on every endpoint.

1.3 / Webhooks

Push, don't poll.

A new filing fires a webhook in under 90 seconds. Pipelines run on the event, not on the cron.

1.4 / MCP

Free for LLM clients.

An MCP server every LLM client can speak. Filings inside Claude, ChatGPT, or any compliant agent — for free.

From regulator publication to production-ready record. Four steps, end-to-end, in seconds.

Step 1 · Source

Watch the regulators.

Continuous polling of every regulator and exchange in our coverage. New filings detected within seconds of publication.

Step 2 · Collect

Pull, dedupe, store.

Fetch the original document, deduplicate against the index, store the canonical PDF in our object store with audit trail.

Step 3 · Transform

Normalise to Markdown.

Tables, footnotes, headings, and identifiers extracted into a single canonical record. JSON, Markdown, and original PDF served from one record.

Step 4 · Deliver

Push to your stack.

REST + GraphQL pull. Webhook push. S3 mirror, Snowflake, or Databricks shares for bulk consumers.

Pull the latest filing for any ticker. Same endpoint serves Markdown, JSON, or the original PDF.

cURL REST · Markdown
# 1. List filings for adidas (by ISIN)
$ curl "https://api.financialreports.eu/api/filings/?company_isin=DE000A1EWWW0" \
    -H "x-api-key: $FR_API_KEY"

# 2. Fetch the processed Markdown for one filing
$ curl https://api.financialreports.eu/api/filings/674321/markdown/ \
    -H "x-api-key: $FR_API_KEY"
Python SDK · returns Markdown string
from financialreports import Client

client = Client(api_key=os.environ["FR_API_KEY"])
filing = client.filings.latest("ADS", format="markdown")
print(filing.content)  # Markdown text, ready for LLM context

Answers to the questions sales gets every week. If yours isn't here, the form on the next page goes straight to a data engineer.

New filings are indexed in under 60 seconds from publication. Webhooks fire under 90 seconds. The pipeline polls every regulator continuously rather than on a fixed cron.
21,514,988 historical filings across 46,243 companies and 105 markets. Coverage depth varies by market — typically several years back. Bulk historical exports available on enterprise contracts.
Direct connections to official regulators and exchanges (no scrapers of scrapers). Automated validation and cross-referencing. A full audit trail per filing — every record links back to its source document.
REST and GraphQL pull · webhooks push · S3 mirror · Snowflake share · Databricks share · email digest. Custom delivery formats available for enterprise contracts.
Three inputs: data volume, refresh frequency, and feature/delivery requirements. We quote on a 15-minute call.
Yes. The MCP server runs against the same free web index — every public filing, callable from any compliant LLM client. Setup guides for Claude, Claude Code, and ChatGPT.
Get started

Markdown filings, in your stack.

Talk to a data engineer about volume, regions, and integration. We reply within 24 hours.

Base URL api.financialreports.eu
Auth x-api-key header
Rate limit 600 req / min standard
p50 latency · EU edge ~41 ms