All capabilities → Earnings releases
Earnings releases

Quarterly press releases — with drivers, guidance and outlook

The numbers say what happened. The press release says why — and what the company expects next. Both now come from the same API, structured and with evidence.

curl "$API/earnings-releases/PEP/latest/analysis"
{
  "status": "ready",
  "source": "cache",
  "release": { "ticker": "PEP", "title": "PepsiCo Reports Third-Quarter 2026 Results",
               "acceptedUtc": "2026-10-07T21:57:44+00:00", "probeStatus": "belegt" },
  "analysis": {
    "drivers": [{
      "topic": "Core operating profit", "period": "Q3 2026", "direction": "mixed",
      "effect": "+3%",
      "cause": "productivity savings, effective net pricing, tariff refunds; offset by operating cost increases and higher advertising",
      "evidence": "The core operating profit performance reflects productivity savings, effective net pricing and a 4-percentage-point favorable impact of tariff refunds. ..."
    }],
    "guidance": [{
      "metric": "Core EPS", "period": "FY 2026", "low": 2.5, "high": 3.5, "unit": "%",
      "previous": "Low-end of +5% to +7%", "status": "lowered", "statusSource": "computed"
    }],
    "outlook": [{
      "theme": "Structural cost reduction", "horizon": "coming months",
      "statement": "Additional structural cost reduction actions will be implemented to help fund investments and mitigate rising input cost inflation."
    }]
  }
}

What you can do with it

Why we built it this way

The quarterly report has the numbers, not their context. Why the margin fell — higher input costs, tariff refunds, currency — and how guidance changed is only in the press release. For an article that is the core.

A language model extracts the analysis from the text, but it may not add anything: every item carries a verbatim passage from the release, and every number must appear in it. Whatever cannot be backed up is discarded before it is stored. A missing value is better than a wrong one. Whether guidance was raised or lowered we recompute from the old and new value instead of trusting the model.

New releases are analysed as soon as they arrive, older ones only when someone asks — the first time in 15 to 60 seconds, afterwards instantly from storage. If the release for the earnings date is not out yet, the endpoint says exactly that, with the date and the expected time.

For foreign issuers Form 6-K is a catch-all: bonds, trial data, general meetings and results under the same form type. We only look at 6-Ks around the earnings date and recognise the earnings release by title, opening text and tables. Checked on 50 companies: 37 correct, 2 missed, none wrongly flagged.

Improvements

Endpoints

GET/earnings-releases/recentNewly received releases, paged
GET/earnings-releases/changesStored since the last call (cursor)
GET/earnings-termine/{ticker}Status per earnings date: periodic report and press release
GET/earnings-releases/{symbol}Releases of one company
GET/earnings-releases/{symbol}/{accession}One release: sections, tables, text
GET/earnings-releases/{symbol}/{accession}/analysisDrivers, guidance, outlook
GET/earnings-releases/{symbol}/{accession}/kennzahlenKey figures from the tables, no LLM

Give feedback or ask a question

Something missing, something off, or an answer you don't understand? Write it here — it reaches us directly.

We store only what you type here. No IP address in clear text, no trackers.