Skip to main content
For hedge funds · Filings API

Filings as a structured signal.

46,243 companies, 21.5 million filings, 48 markets — indexed in < 60 s, webhook fires in < 90 s. Stop maintaining scrapers. Start trading the wire.

Most funds we talk to are paying analysts to babysit scrapers. The work that doesn't show up in a backtest.

1.1 / Scraper debt

Seven scrapers, one outage.

Every regulator changes its site. Every change breaks a scraper. Quants end up running a data engineering team they didn't hire for.

1.2 / Latency drift

Hours late on small caps.

Vendors index the index members fast. The long tail — where dispersion is — lags. By the time you see the filing, the move is priced.

1.3 / Format friction

PDFs are not a feature.

A 412-page PDF is ~120k tokens of noise. Tables shred, footnotes detach, identifiers vanish. NLP runs on whatever survives.

Four primitives. Every filing in the index, callable in production, in the format your model actually consumes.

2.1 / Webhooks

Push, don't poll.

A new filing fires a webhook in < 90 s. Your strategy runs on the event, not on the cron.

2.2 / Markdown

Clean text in, alpha out.

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

2.3 / Long tail

Beyond the index.

46,243 companies — small and mid-caps included. Where dispersion lives and consensus hasn't formed yet.

2.4 / KPIs

Structured fundamentals.

Extracted KPIs pulled directly from the filing. Skip the parser, feed the model.

Four steps, end-to-end. Continuous polling on the regulators, push to your stack on each new event.

Step 1 · Source

Watch the regulators.

Continuous polling of every regulator and exchange in 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 with audit trail.

Step 3 · Transform

Normalise to Markdown.

Tables, footnotes, headings, identifiers extracted into one canonical record. JSON, Markdown, original PDF served from the same record.

Step 4 · Deliver

Push to your stack.

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

A webhook handler that receives the filing event and pulls the Markdown for the model. Sample payload on the right.

Python webhook handler
from financialreports import Client
from flask import Flask, request

app = Flask(__name__)
client = Client(api_key=os.environ["FR_API_KEY"])

# Fired in < 90 s of publication
@app.route("/fr-webhook", methods=["POST"])
def on_filing(event):
    f = client.filings.get(event["id"], format="markdown")
    score = nlp_signal(f.content, kpis=f.kpis)
    if score > THRESHOLD:
        order_router.send(f.company.ticker, score)
    return "ok", 200
Webhook payload JSON · sample
{
  "event": "filing.published",
  "id": 674321,
  "release_datetime": "2026-05-02T07:00:12Z",
  "company": { "name": "adidas AG", "ticker": "ADS", "isin": "DE000A1EWWW0" },
  "filing_type": "Annual Report",
  "period": "FY24",
  "language": "en",
  "kpis": { "net_sales": 21429000000, "ebit": 437000000 },
  "links": {
    "self": "https://api.financialreports.eu/api/filings/674321/",
    "markdown": "https://api.financialreports.eu/api/filings/674321/markdown/"
  }
}
Reference · equity hedge fund
"We were maintaining seven scrapers across regulators. We now maintain zero. Filings hit our model the same minute they're published."
— Head of data · equity hedge fund
Scrapers maintained
0
Down from 7 in-house parsers.
Time to signal
< 90 s
Publication → model input.
Coverage added
46,243
Companies, including small caps.
Token cost / filing
~70%
Reduction vs PDF text extraction.

A pre-screened set of under-covered small caps with their next filing dates. Use it while you evaluate the API.

Alpha List bundle preview
What's inside

A curated CSV of small and mid-cap names not on the typical sell-side rotation, with each company's next expected filing date and ISIN.

Why analysts use it

Skip the discovery phase — go straight to deep-dive on names where consensus is thin and dispersion is real.

What it isn't

Not a recommendation. Not investment advice. A starting universe, sourced from the same index that powers the API.

Form · instant access

Download the bundle.

Five fields. The CSV arrives on the next page.

If yours isn't here, the form above goes straight to a data engineer.

Publication to indexed: < 60 s. Publication to webhook fired: < 90 s. API p50 latency on EU edge: ~41 ms. Continuous polling against every regulator in coverage — not a fixed cron.
21,502,218 filings, 46,243 companies, 48 markets, 21 languages — including the long tail of small and mid-caps where most index-driven vendors fall off.
A 412-page PDF becomes ~3,200 tokens of Markdown — a ~70 % token reduction vs raw PDF text extraction. Tables stay aligned, footnotes stay attached, identifiers stay resolvable. NLP and LLM pipelines run on something they can actually parse.
Yes. Bulk historical exports are available on enterprise contracts — full filings with original release timestamps, so point-in-time reconstruction holds. S3 mirror, Snowflake share, and Databricks share are all delivery options.
Internal redistribution across the fund is included on the standard API contract. External redistribution (to LPs, partners, or downstream products) is a separate license — quoted on the same call.
Three inputs: data volume, refresh frequency, and feature/delivery requirements. Quote on a 15-minute call.
Get started

Filings on the wire, 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
Webhook latency < 90 s
p50 latency · EU edge ~41 ms