歐洲 ESEF 年報與同公司 SEC 申報交叉核對,12 項數據的數值和單位均吻合
Europe's tagged annual reports against the same companies' SEC filings: 12 of 12
Arhan Canli 將 european_filings 加入 canli-mcp,並以 SEC companyfacts API 的 20-F 資料核對 TotalEnergies、Novo Nordisk 和 Shell 的 ESEF 年報,三家公司 2024、2025 年的收入及年度利潤共 12 項數據均與單位吻合。
Companies listed on EU and EEA regulated markets file their annual reports in ESEF, the European Single Electronic Format, and UK-listed companies follow the UK's version of the same rule: an XHTML report with the figures tagged in XBRL. XBRL International collects the filings at filings.xbrl.org and serves each one as xBRL-JSON. That makes about 7,400 European filers' tagged figures free to read, with no API key.
I added a tool for them to canli-mcp (european_filings) and wanted an independent check that it reads the right facts. Some European companies also file an annual report with the SEC on Form 20-F, tagged in the same IFRS taxonomy. That is a second filing, to a different regulator, of the same figures, so the two should agree.
The check
Three companies, two years, two measures each. The ESEF side comes from european_filings; the SEC side comes straight from SEC's companyfacts API (the ifrs-full facts on 20-F filings), which the tool never reads.
| Company | Year | Revenue (ESEF = 20-F) | Profit for the year (ESEF = 20-F) |
|---|---|---|---|
| TotalEnergies | 2024 | USD 214,550,000,000 | USD 16,031,000,000 |
| TotalEnergies | 2025 | USD 201,196,000,000 | USD 13,357,000,000 |
| Novo Nordisk | 2024 | DKK 290,403,000,000 | DKK 100,988,000,000 |
| Novo Nordisk | 2025 | DKK 309,064,000,000 | DKK 102,434,000,000 |
| Shell | 2024 | USD 284,312,000,000 | USD 16,521,000,000 |
| Shell | 2025 | USD 266,886,000,000 | USD 18,119,000,000 |
All 12 matched to the unit. "Profit for the year" is IFRS ProfitLoss, which includes non-controlling interests, so it is not the same line as "income attributable to shareholders".
Three traps on the way
1. Periods end at midnight of the next day. In xBRL-JSON a duration is written like 2025-01-01T00:00:00/2026-01-01T00:00:00. That is calendar 2025, not a period that reaches into 2026. A balance-sheet instant written 2026-01-01T00:00:00 is the position at the end of 31 December 2025. Read the dates naively and every year-end balance lands in the wrong year.
2. "Revenue" has more than one tag. Novo Nordisk and Shell tag revenue as ifrs-full:Revenue. TotalEnergies uses ifrs-full:RevenueFromContractsWithCustomers, and so does ASML. A tool that reads one concept quietly reports "no revenue" for half the companies. It needs a list per measure, and it should say which concept each figure came from.
3. Names match more than one filer. "Novo Nordisk" also matches Novo Nordisk Fonden, the foundation that controls the company and files its own report. Legal forms ("A/S", "N.V.", "SE", "plc") have to be ignored, and the company has to rank above near-namesakes, or the first answer is the wrong entity. The tool lists the other matches, so a mismatch is visible.
What this does and doesn't show
It shows that the tool reads the totals the companies tagged, on the right periods and in their own currencies. It does not show that ESEF data is clean in general: these are three large, careful filers, and only two measures in two years. Smaller filers are another matter, and segment figures aren't read from these reports at all.
Try it
canli-mcp is a free MCP server (MIT, no API key):
npx -y canli-mcp
Then ask for a European company's annual report, or call run_tool with:
{ "name": "european_filings", "arguments": { "company": "Novo Nordisk", "year": 2025 } }
It returns the report's period, links to the report and its viewer, and the tagged totals with their concept, period, value, unit and precision. words finds any other tagged figure, such as "words": "net system sales" for ASML.
The cross-check script is mcp-markets/bench/global/crosscheck.mjs, with its results in results-2026-10-15.json next to it:
- arhancanli/canlicapital: every MCP server, the check and its results.
- arhancanli/alphac: the strategy research engine.
If this was useful to you, a star on the canlicapital repo helps a small project get found.
Have you used ESEF data? I'd like to hear where it disagreed with the PDF report.
Written with AI assistance. The figures are from the check's saved results of 15 October 2026.
來源:DEV Community · dev.to