European Company Financials - ESEF XBRL Annual Reports avatar

European Company Financials - ESEF XBRL Annual Reports

Pricing

from $17.00 / 1,000 financial statements

Go to Apify Store
European Company Financials - ESEF XBRL Annual Reports

European Company Financials - ESEF XBRL Annual Reports

Export audited financial statements of European listed companies from ESEF and UKSEF filings: revenue, profit, assets, equity and cash flow, with the prior year alongside. Filter by country, period or LEI. Figures come from IFRS-tagged XBRL, not from parsing PDFs.

Pricing

from $17.00 / 1,000 financial statements

Rating

0.0

(0)

Developer

PublicData

PublicData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Audited financial statements of European listed companies as a spreadsheet: revenue, profit, assets, equity and cash flow, with the prior year in the next column. Read from IFRS-tagged XBRL, not from parsing PDFs.

Every listed company in the EU has been required to file its annual report in Inline XBRL since 2021. The numbers are therefore already machine-readable and already standardised — the problem has only ever been getting at them. This Actor does that, over the repository XBRL International maintains at filings.xbrl.org.

Every XBRL Actor on Apify today reads the US SEC. This one reads Europe.

What you get

One row per filed statement, with 69 columns:

  • Identity — LEI, company name, country, reporting period, currency, filing regime (ESEF, UKSEF, UAIFRS). The LEI joins straight onto GLEIF and onto anything else keyed by LEI.
  • Income statement — revenue, operating profit, profit before tax, income tax, profit for the year, profit attributable to owners, comprehensive income, basic EPS, finance income and costs
  • Balance sheet — total assets, current and non-current assets, property plant and equipment, total liabilities, current and non-current liabilities, equity, issued capital, cash
  • Cash flow — operating, investing and financing
  • Every one of those with the prior year beside it, so growth is a subtraction rather than a second run
  • What the company says about itself, where it tagged it: registered office, domicile, country of incorporation, legal form, principal activities
  • Quality flags — the filing's own XBRL validation error and warning counts, and a link to the report in a viewer with every tagged figure highlighted

Measured across 36 filings from 12 countries on 2026-08-28:

ColumnPopulatedWith prior year
Profit / loss100%100%
Equity100%97%
Cash and cash equivalents100%100%
Cash flow (all three)100%100%
Total assets97%94%
Revenue94%94%
Operating profit91%91%

The thing that makes the difference

The repository assigns each filing a reporting date, and that date is wrong for about 30% of filings. It is inferred from dates tagged anywhere in the report, so a debt maturity or a subsequent-event date can win.

Measured on 2026-08-28: Carrefour is indexed as 2026-12-31 against figures ending 2025-12-31. Castellum as 2029-05-01 against figures ending 2022-12-31. Recordati as 2032-12-31.

Read that date and take the figures matching it, and roughly a third of your rows come back completely empty while looking perfectly well-formed. This Actor ignores it and derives the reporting period from the facts themselves — the date carrying the most consolidated figures. That is the single change that took revenue coverage from 63% to 94%, and equity from 69% to 100%.

Both dates are exported: periodEnd is the one the figures support, indexedPeriodEnd is the repository's, and periodEndDisagrees flags the rows where they differ.

Which figures are the real ones

An annual report tags the same line many times — once as a consolidated total, then again per segment, per geography, per product. This Actor reads only the consolidated totals, never a breakdown.

It also reconciles the ways filers name the same line. ifrs-full:Revenue covers 70% of filings; adding RevenueFromContractsWithCustomers and RevenueAndOperatingIncome takes it to about 94%. The revenueConcept column names which one answered, so a fallback is never mistaken for a direct tag.

Example output

One real record, exported on 2026-08-28. Null columns removed for readability; note that the balance sheet reconciles — assets 1,939,000 = liabilities 1,697,000 + equity 242,000:

{
"lei": "81560069517A53E0F607",
"entityName": "EEMS ITALIA SPA",
"country": "IT",
"periodEnd": "2024-12-31",
"indexedPeriodEnd": "2024-12-31",
"periodEndDisagrees": false,
"filingSystem": "ESEF",
"currency": "EUR",
"validationErrors": 0,
"validationWarnings": 1,
"addedToIndex": "2025-11-18",
"revenue": 649000.0,
"revenueConcept": "Revenue",
"revenuePriorYear": 1234000.0,
"operatingProfit": -3513000.0,
"operatingProfitPriorYear": -3003000.0,
"profitBeforeTax": -3558000.0,
"profitBeforeTaxPriorYear": -3018000.0,
"incomeTaxExpense": 0.0,
"profitLoss": -3558000.0,
"profitLossPriorYear": -3018000.0,
"profitAttributableToOwners": -3558000.0,
"profitAttributableToOwnersPriorYear": -3018000.0,
"comprehensiveIncome": -3579000.0,
"comprehensiveIncomePriorYear": -3051000.0,
"financeIncome": 0.0,
"financeIncomePriorYear": 38000.0,
"financeCosts": 44000.0,
"financeCostsPriorYear": 53000.0,
"assets": 1939000.0,
"assetsPriorYear": 3950000.0,
"currentAssets": 1162000.0,
"currentAssetsPriorYear": 2833000.0,
"noncurrentAssets": 777000.0,
"noncurrentAssetsPriorYear": 1117000.0,
"propertyPlantAndEquipment": 7000.0,
"propertyPlantAndEquipmentPriorYear": 105000.0,
"liabilities": 1697000.0,
"liabilitiesPriorYear": 1524000.0,
"currentLiabilities": 1539000.0,
"currentLiabilitiesPriorYear": 1391000.0,
"noncurrentLiabilities": 158000.0,
"noncurrentLiabilitiesPriorYear": 133000.0,
"equity": 242000.0,
"equityPriorYear": 2426000.0,
"cashAndCashEquivalents": 271000.0,
"cashAndCashEquivalentsPriorYear": 1493000.0,
"cashFlowOperating": -3144000.0,
"cashFlowOperatingPriorYear": -2297000.0,
"cashFlowInvesting": 4000.0,
"cashFlowInvestingPriorYear": -304000.0,
"cashFlowFinancing": 1918000.0,
"cashFlowFinancingPriorYear": 2500000.0,
"reportedEntityName": "EEMS Italia S.p.A.",
"registeredOffice": "Via Antonio da Recanate, 2, Milano",
"domicile": "Italia",
"countryOfIncorporation": "Italia",
"legalForm": "Società per Azioni",
"principalActivities": "Grossista Gas ed energia elettrica",
"factCount": 284,
"reportUrl": "https://filings.xbrl.org/81560069517A53E0F607/2024-12-31/ESEF/IT/0/81560069517A53E0F607-2024-12-31-0-it/reports/81560069517A53E0F607-2024-12-31-0-it.xhtml",
"viewerUrl": "https://filings.xbrl.org/81560069517A53E0F607/2024-12-31/ESEF/IT/0/81560069517A53E0F607-2024-12-31-0-it/reports/ixbrlviewer.html",
"sourceApi": "filings.xbrl.org/api",
"source": "filings.xbrl.org (XBRL International) — ESEF / UKSEF / Ukraine filings"
}

Input

FieldWhat it does
countriesTwo-letter codes of the filing authority: IT, FR, NL, ES, FI, DK, SE, PL, BE, NO, GB, AT, UA and more. Empty means every country.
periodEndFrom / periodEndToReporting-period window, YYYY-MM-DD.
leiA single Legal Entity Identifier, to pull every year one company has filed.
skipFilingsWithErrorsDrop filings whose own XBRL fails validation. Off by default — the validationErrors column lets you decide per row.
maxItemsStop after this many statements. Each one is a separate download, so large runs take time.
includeRawAttach the complete xBRL-JSON: every note and breakdown, hundreds of facts per company.

Coverage, stated plainly

The repository holds 25,675 filings. Sampled counts on 2026-08-28: GB 2,897, FR 1,178, FI 1,168, IT 872, and smaller volumes for DK, PL, NL, ES, BE, NO, SE, AT, HU, IS, HR and UA. Periods run from 2020 to 2026.

Germany and Ireland are not in the index. XBRL International states their filings cannot be reliably discovered or downloaded. No tool built on this source can return them, and this Actor says so in the run log rather than returning an empty result.

The date filters run on the repository's own date, so a filing whose date is wrong can fall outside a window you would expect it in. periodEndDisagrees is there to make that visible.

Pricing

Pay per result: charged once per statement actually exported. A filing whose data cannot be read is never exported and never charged — the repository deliberately keeps filings whose conversion failed, and those carry no figures.

Where the data comes from

filings.xbrl.org is operated by XBRL International and collects filings from each country's Officially Appointed Mechanism. Its terms, quoted from the repository's own about page on 2026-08-28: "At present, there are no restrictions on the ways that the data can be used." The API is free, and XBRL International reserves the right to rate-limit or withdraw it; this Actor paces its requests accordingly.

The filings themselves are public regulatory documents. No personal data is involved.

Frequently asked questions

How is this different from the SEC XBRL Actors? Those read US EDGAR filings. This reads European ESEF and UKSEF filings, plus Ukraine. Different companies, different regulator, same idea.

Why is a column empty for some companies? Because that company did not tag that line as a consolidated total. IFRS lets filers choose their level of detail, and smaller filers tag less. The coverage table above is measured, not promised.

Can I get every year for one company? Yes — put its LEI in the lei field and leave the dates empty.

Are these consolidated or parent-only figures? Whatever the company filed as its primary statements. Groups file consolidated accounts, so for most filers these are group figures.

Do I get the notes to the accounts? Not as columns. Turn on includeRaw and every tagged fact in the report comes with the row, notes included.

Does it work as an MCP tool? Yes. Like every Apify Actor it exposes an MCP endpoint, so an AI agent can ask the European Company Financials Actor for a company's numbers directly.

  • GLEIF LEI Scraper — resolve any LEI in these rows to its full legal entity record
  • Finland Company Register and Norway Company Register Search — national registers for the companies behind the filings
  • France Company Register Scraper — France, with named directors