Denmark CVR Company Scraper — Directors, Units & History avatar

Denmark CVR Company Scraper — Directors, Units & History

Pricing

$5.00 / 1,000 results

Go to Apify Store
Denmark CVR Company Scraper — Directors, Units & History

Denmark CVR Company Scraper — Directors, Units & History

Scrape any company in Denmark from the official CVR (Virk) by CVR number — name, legal form, status, address, management and board, auditor, production units, NACE industry, registration history and more. Structured JSON, no API key. You pay per completed lookup — matched or not.

Pricing

$5.00 / 1,000 results

Rating

0.0

(0)

Developer

NeuralVerge

NeuralVerge

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

5 days ago

Last modified

Share

Denmark CVR Company Scraper — Financials, Owners & Management ✅ No API Key

Scrape any Danish CVR (datacvr.virk.dk) company profile from its CVR number — legal name, address, company type, status, industry code, purpose, power to bind, directors & board (key individuals), auditor, ownership, annual financial statements, production units (P-enheder) and the full Danish registration history. Powered by the Neuralverge API. No API key or account required. You pay per completed lookup — matched or not; failed runs are never charged.

Ideal for KYC/KYB, due diligence, compliance, credit checks and feeding company data to AI agents.

✨ Why this Actor

  • 🇩🇰 Full CVR profile — identity, governance, ownership, financials, production units and registration history in one structured object.
  • 💸 One flat price per row — $0.005 per company, no run fee and no start fee. An unresolved CVR number comes back as one no result row, billed like any other row.
  • 🔑 No API key or account — extraction runs on the Neuralverge backend.
  • Real-time & structured — fresh data each run and one predictable JSON schema.

🔧 How it works

  1. Provide a Danish CVR number (e.g. 39697696) — or an advanced full datacvr.virk.dk profile URL.
  2. Run the Actor. Fetching and AI-structuring the profile happens on the Neuralverge backend.
  3. Get one flat dataset row per company — 25 columns, all at the top level (url, cvrNumber, companyName, address, startDate, companyType, …). Export to CSV, JSON or Excel, or pull it over the Apify API.

If the company can't be resolved, the run still returns a row — an explicit no result row that echoes your query, so nothing is silently dropped.

Input

One company per run.

FieldTypeNotes
companyNumberstringThe Danish CVR number (CVR-nummer), e.g. 39697696.
companyUrlstringAdvanced: a full datacvr.virk.dk profile URL to use instead of the CVR number.
{
"companyNumber": "39697696"
}

What you'll receive

One flat row per company. Every field sits at the top level of the row, so the Output tab shows a single table with all 25 columns — there are no views to switch between. Exports (CSV, JSON, XML, Excel) contain exactly the same fields.

Columns: url, cvrNumber, companyName, address, startDate, companyType, status, industryCode, secondaryIndustryCodes, companyPurpose, contactPhoneNumber, contactEmail, contactWebsite, governancePowerToBind, auditorName, auditorCvrNumber, auditorAddress, ownership, historicalBasicData, numberOfEmployees, orderOtherDocumentsDanish.

ListsgovernanceKeyIndividuals, financialStatements, productionUnits, registrationHistoryDanish — come back as arrays. The table renders each as an expandable "N items" cell; a CSV/JSON/Excel export carries them in full.

Nulls are normal. The column set is the same on every run, so a field the source does not expose for this company comes back null rather than disappearing — a spreadsheet or CRM mapping built on one run keeps working on the next.

When nothing is found

A lookup that runs but matches nothing still returns a row, so a batch never silently loses an input:

ColumnValue
companyNumber / urlechoed back exactly as submitted
foundfalse
messagewhy nothing was returned

Filter these out with found != false (or drop rows where message is set). This row is billed as one company — see Pricing.

Example output (real run)

A real dataset row, shown in full.

{
"url": "https://datacvr.virk.dk/enhed/virksomhed/39697696",
"cvrNumber": "39697696",
"companyName": "Lunar Bank A/S",
"address": "Hack Kampmanns Plads 10\n8000 Aarhus C",
"startDate": "2018-07-02",
"companyType": "Aktieselskab",
"status": "Normal",
"industryCode": "641900 Andre pengeinstitutters aktiviteter",
"secondaryIndustryCodes": null,
"companyPurpose": "Selskabets formål er at drive bankvirksomhed samt anden accessorisk virksomhed tilladt i henhold til lovgivningen.",
"contactPhoneNumber": null,
"contactEmail": null,
"contactWebsite": null,
"governancePowerToBind": "Selskabet tegnes af en direktør i forening med et bestyrelsesmedlem, af to medlemmer af bestyrelsen eller af den samlede bestyrelse.",
"governanceKeyIndividuals": [
{
"name": "Søren Kyhl",
"role": "(Adm. dir)",
"joinedOn": null
},
{
"name": "Gitte Margrethe Roskær",
"role": "(Direktør)",
"joinedOn": null
},
{
"name": "Joakim Skaarup Hansen",
"role": "(Direktør)",
"joinedOn": null
},
{
"name": "Robert Nils Stambro",
"role": "(Direktør)",
"joinedOn": null
},
{
"name": "Jens Peter Leschly Neergaard",
"role": "(Formand)",
"joinedOn": null
},
{
"name": "Claus Okholm",
"role": null,
"joinedOn": null
},
{
"name": "Ken Villum Guldbrandt Klausen",
"role": null,
"joinedOn": null
},
{
"name": "Jens Mikael Kristoffer Ismunden",
"role": null,
"joinedOn": null
},
{
"name": "Ola Reinhold Nordbye",
"role": null,
"joinedOn": null
},
{
"name": "Matthew Crispin Hurst Westerman",
"role": null,
"joinedOn": null
},
{
"name": "Annica Maria Witschard",
"role": null,
"joinedOn": null
}
],
"auditorName": "PRICEWATERHOUSECOOPERS STATSAUTORISERET REVISIONSPARTNERSELSKAB",
"auditorCvrNumber": null,
"auditorAddress": "Strandvejen 44\n2900 Hellerup",
"ownership": null,
"financialStatements": [
{
"year": 2025,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2024,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2023,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2022,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2021,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2020,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2019,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
},
{
"year": 2018,
"grossProfit": null,
"profitLossBeforeTax": null,
"profitLoss": null,
"equity": null,
"totalAssets": null,
"currency": "DKK"
}
],
"productionUnits": [
{
"pNumber": "1025681610",
"name": "Lunar Bank A/S",
"address": "Bredgade 43\n1260 København K",
"startDate": "2020-01-01",
"industryCode": "641900 Andre pengeinstitutters aktiviteter"
},
{
"pNumber": "1023764349",
"name": "Lunar Bank A/S",
"address": "Hack Kampmanns Plads 10\n8000 Aarhus C",
"startDate": "2018-07-02",
"industryCode": "641900 Andre pengeinstitutters aktiviteter"
}
],
"registrationHistoryDanish": [
{
"date": "2026-06-19T00:00:00Z",
"eventDescriptionDanish": "Ændring i personkreds\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\n# Bestyrelse: ## Tiltrådte: [Ken Villum Guldbrandt Klausen](https://datacvr.virk.dk/enhed/person/4004083032/deltager) , den 02.06.2026. # Direktion: ## Fratrådte: Ken Villum Guldbrandt Klausen, (adm. dir), den 01.06.2026. ## Tiltrådte: [Søren Kyhl](https://datacvr.virk.dk/enhed/person/4006430035/deltager) , (adm. dir), den 01.06.2026."
},
{
"date": "2026-06-01T00:00:00Z",
"eventDescriptionDanish": "Ændring i personkreds\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\n# Bestyrelse: ## Fratrådte: Lars Andersen, den 29.04.2026, Klaus Østergaard, den 29.04.2026. ## Tiltrådte: [Annica Maria Witschard](https://datacvr.virk.dk/enhed/person/4010786807/deltager) , den 29.04.2026."
},
{
"date": "2026-05-19T00:00:00Z",
"eventDescriptionDanish": "Ændring i personkreds\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\n# Direktion: ## Fratrådte: Ken Villum Guldbrandt Klausen, den 01.05.2026. ## Tiltrådte: [Ken Villum Guldbrandt Klausen](https://datacvr.virk.dk/enhed/person/4004083032/deltager) , (adm. dir), den 01.05.2026."
},
{
"date": "2026-03-20T00:00:00Z",
"eventDescriptionDanish": "Ændring i personkreds\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\n# Direktion: ## Fratrådte: Jonas Kjær Leed, den 01.03.2026. ## Tiltrådte: [Joakim Skaarup Hansen](https://datacvr.virk.dk/enhed/person/4010736765/deltager) , den 01.03.2026, [Gitte Margrethe Roskær](https://datacvr.virk.dk/enhed/person/4004179563/deltager) , den 01.03.2026."
},
{
"date": "2026-01-27T00:00:00Z",
"eventDescriptionDanish": "Ændring i personkreds\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\n# Bestyrelse: ## Fratrådte: Jens Peter Leschly Neergaard, den 12.01.2026, Timothy Tracy Brooke Thom, (formand), den 12.01.2026. ## Tiltrådte: [Jens Peter Leschly Neergaard](https://datacvr.virk.dk/enhed/person/4007809328/deltager) , (formand), den 12.01.2026, [Matthew Crispin Hurst Westerman](https://datacvr.virk.dk/enhed/person/4010645786/deltager) , den 30.12.2025."
},
{
"date": "2026-01-08T00:00:00Z",
"eventDescriptionDanish": "Gennemførelse af fusion eller spaltning\n\nCVR-nummer: 39697696\n\nNavn og adresse: Lunar Bank A/S Hack Kampmanns Plads 10, 8000 Aarhus C\n\nErhvervsstyrelsen har modtaget oplysning om, at der er truffet beslutning om nedenstående fusion. Virksomheden er fusioneret med CVR-nummer: 36683279 Lunar Payments ApS, der samtidigt er opløst. Vedtægter ændret: 30.12.2025 \n\nNye binavne: Lunar Payments A/S, Paylike A/S \n\nKapitalforhøjelsen er besluttet den 30.12.2025. \n\nkr. 1,00, indbetalt ved fusion, kurs 16.686.538,93. \n\nKapitalen udgør herefter kr. 42.077.081,00."
}
],
"historicalBasicData": null,
"numberOfEmployees": null,
"orderOtherDocumentsDanish": null
}

Pricing

Pay per event — $0.005 per company ($5 per 1,000) written to the dataset. There is no run fee and no start fee.

EventPriceCharged
Actor startfreenever
Failed run — invalid input, API error, timeoutfreenever
Row written to the dataset$0.005 ($5 / 1,000)every row, including the "no result" row

A completed lookup is billed as one company, matched or not. When the source returns nothing, the Actor writes one explicit no-result row — the query you submitted plus found: false and a message explaining it — and that row is charged at the normal per-company price. A run that fails (missing input, bad key, upstream error) writes no row and costs $0.00.

Pricing is on top of your Apify platform usage.

Rate limit

There is a ceiling on how fast one Apify account can pull from the Neuralverge backend: 10 requests per second for this Actor, counted separately from the other Neuralverge Actors. One run is normally one request, so this is about how many runs you start at once, not about the size of a single run — at typical run times that is dozens of runs in flight at once, which is well above ordinary use.

Updated August 2026: this ceiling was doubled from 5 to 10 requests per second. Bulk jobs that used to hit 429s now go through.

Above the ceiling the backend answers HTTP 429. The Actor waits out the Retry-After it asks for and retries a few times before giving up; a run that does give up writes no row and is not charged.

If you need a higher rate for a bulk job, get in touch.

Free plan limits

Users on any paid Apify plan are not affected by anything in this section.

On the Apify Free plan this Actor may be started 5 time(s) per calendar month per user. A run that finds nothing still counts, because the lookup is performed either way. Every Neuralverge Actor carries its own allowance — running one never uses up another's. When a limit is reached the Actor stops gracefully with a status message naming it; everything resets on the 1st of every month, and any paid Apify plan removes all of it.

Integrations & API

Results are stored in a standard Apify dataset — export as CSV, JSON, XML or Excel, or fetch on demand through the Apify API. The Actor also plugs into Apify's integrations (Make, Zapier, n8n, webhooks) and can be called from any MCP client.

FAQ

Do I need an account or API key? No. Extraction runs on the Neuralverge backend.

What identifier do I use? The Danish CVR number (CVR-nummer) — an 8-digit number like 39697696. You can also pass a full datacvr.virk.dk profile URL.

Am I charged if a company isn't found? Yes — a lookup that ran is billed as one company even when it matched nothing, and you get a no result row that says so. A run that fails (missing input, bad key, upstream error) is not charged.


Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Danish Business Authority (Erhvervsstyrelsen) or CVR. Data originates from the public datacvr.virk.dk register.