Denmark Annual Reports by CVR: Financials (Årsrapport)
Pricing
$10.00 / 1,000 annual report with figures
Denmark Annual Reports by CVR: Financials (Årsrapport)
Danish company financial statements from annual reports filed with Erhvervsstyrelsen (CVR): revenue, gross profit, profit, equity, total assets, cash and employees. Search by CVR number or filing date. One JSON row per annual report (regnskab), no API key needed.
Pricing
$10.00 / 1,000 annual report with figures
Rating
0.0
(0)
Developer
Mikkel Jeppesen Juhl
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Get Danish company financials from annual reports (årsrapport, regnskab) as clean JSON. One row per annual report, straight from the official filings of Erhvervsstyrelsen (the Danish Business Authority), found by CVR number or publication date. No API key needed.
Give it CVR numbers, a publication date window, or both. The actor finds the annual reports, reads the XBRL documents and returns revenue, gross profit, operating profit, profit before tax, profit for the year, staff costs, average employees, equity, total assets and cash, with the period, currency and reporting class.
Use cases
- Look up revenue, profit, equity and total assets for a list of Danish companies by CVR number.
- Screen Danish companies by financial figures for credit checks, due diligence or lead lists.
- Pull every annual report published in a date window into a database.
- Feed parsed Danish financial statements to analysis tools or AI agents.
For the filing history and PDF links of a single company, use the CVR number as input and read xhtmlUrl and pdfUrl.
What you get
| Field | Meaning |
|---|---|
cvr | Danish company number, 8 digits |
companyName | Name in the report |
periodStart, periodEnd | Financial year |
publishedAt | When Erhvervsstyrelsen published the filing |
reportType | "Årsrapport" or "Annual report" |
reportingClass | Regnskabsklasse: B, B micro, C medium, C large, D |
currency | ISO code from the XBRL unit (DKK, EUR, USD and so on) |
revenue | Nettoomsætning / Revenue |
grossProfit | Bruttofortjeneste / Gross profit |
operatingProfit | Resultat af primær drift / Operating profit |
profitBeforeTax | Resultat før skat |
profitLoss | Årets resultat / Profit for the year |
staffCosts | Personaleomkostninger |
averageEmployees | Gennemsnitligt antal ansatte |
equity | Egenkapital, end of year |
totalAssets | Aktiver i alt / Balance, end of year |
cash | Likvide beholdninger, end of year |
isCorrection | True when the filing corrects an earlier one (omgørelse) |
filingId | Erhvervsstyrelsen id of the filing |
parseError | Why a row has no figures, else null |
xbrlUrl, xhtmlUrl, pdfUrl | Source documents (when includeDocumentUrls is on) |
Figures are in whole currency units, not thousands. A figure is null when the report does not contain it. Small companies (class B) may report gross profit and leave out revenue, and most do.
The actor reads only current year figures: duration facts must match the report period, balance sheet facts must sit on the last day of the period, and facts with dimensions (for example equity per reserve) are skipped. Prior year comparatives are never mixed in.
Listed and large companies (class C large and D) file their figures in a separate IFRS (ESEF) document. The actor reads it automatically when the Danish GAAP document has no figures.
The output has no person names. The actor skips the chair of the general meeting, auditors, board members and the management.
Input
{"cvrNumbers": ["10224640"],"publishedFrom": "2026-10-01","publishedTo": "2026-10-21","maxResults": 100,"includeDocumentUrls": true,"skipFilingsWithoutXbrl": true,"requestIntervalSeconds": 0.5}
Leave cvrNumbers empty to get every annual report in the date window. Newest filings come first. Half-year reports and other filing types are skipped.
Coverage
Measured on 2026-10-21 on the 200 newest annual reports (199 with XBRL) and on 20 reports from 10 large companies. Details: raw/2026-10-21-dk-annual-accounts-test-run.md in the company repository.
| Field | 199 recent reports | 20 large company reports |
|---|---|---|
| companyName, period, publishedAt, currency | 100% | 100% |
| reportingClass | 100% | 95% |
| revenue | 7% | 95% |
| grossProfit | 96% | 60% |
| operatingProfit | 85% | 80% |
| profitBeforeTax | 98% | 100% |
| profitLoss | 100% | 100% |
| staffCosts | 47% | 30% |
| averageEmployees | 95% | 5% |
| equity | 100% | 100% |
| totalAssets | 100% | 100% |
| cash | 93% | 100% |
Spot checks against the human readable reports matched every figure in 8 of 8 reports checked.
Run it locally
No Apify account is needed. You need uv.
cd apps/apify-dk-annual-accountsuv sync./run_local.sh input.example.jsonls storage/datasets/default/uv run python test/coverage.py storage/datasets/defaultuv run python test/spotcheck.py storage/datasets/default 5
run_local.sh copies the input to storage/key_value_stores/default/INPUT.json and runs python -m src. The Apify SDK sees no token and uses local storage. Run stats land in storage/key_value_stores/default/RUN_STATS.
Docker: docker build -f .actor/Dockerfile -t dk-annual-accounts . and mount a storage folder at /usr/src/app/storage with -e CRAWLEE_STORAGE_DIR=/usr/src/app/storage.
Source and terms
Data comes from the free system-to-system access to annual report data from Erhvervsstyrelsen (distribution.virk.dk/offentliggoerelser) and the documents on regnskaber.virk.dk. Erhvervsstyrelsen's "Vilkår for brug af danske offentlige data" allow commercial and non-commercial use. Contains data used under the terms for use of Danish public data ("Indeholder data, som benyttes i henhold til vilkår for brug af danske offentlige data"). Erhvervsstyrelsen does not endorse this actor. The legally valid report is the one filed with Erhvervsstyrelsen. Check xhtmlUrl before you rely on a figure.
Pricing
Pay per event: 0.01 USD per annual report row with figures. Rows with a parseError are free. No start fee.