Denmark Company Registry (CVR) API and MCP — Company, Owners & Directors by CVR Number
Send a CVR number, or the link to the company on the Danish register, and this source returns the record as structured data: name, status, legal form, address, activity and industry codes, registered capital, directors, auditors, owners and production units.
- You send
- A Danish CVR number or a link to the company on the register
- You get back
- Name, status, legal form, address, activity, directors, owners, auditors, production units, employment figures and history
- Coverage
- Denmark — entities on CVR.
- Price
- 5 pts — $5 per 1,000
- Charged only when the record resolves. A lookup that finds nothing is not billed.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| CVR directly | Open CVR and read the record | Usually free, sometimes per-document | A different interface, language and data shape for every country you add |
| Collecting it yourself | Build and host a crawler per register, then keep each one alive | Infrastructure and maintenance | Registers change their pages without warning, and nobody is on the hook when yours breaks |
| NeuralVerge | One request, the same shape as every other source in the catalog | $5 per 1,000, misses not billed | Covers Denmark — other countries are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
registration_number | string | CVR number. |
name | string | Registered company name. |
status | string | Company status as the register words it, for example Normal. |
address | string | Registered address on one line. |
url | string | Link to the company on the register. |
company_type | string | Legal form in Danish, for example Aktieselskab. |
company_type_code | string | Numeric code of the legal form. |
incorporation_date | string | Registration date, YYYY-MM-DD. |
end_date | null | End date. Null in the sample because the company is active. |
phone | string | Registered phone number. |
email | null | Registered email. Null in the sample. |
fax | null | Fax number. Null in the sample. |
secondary_phone | null | Second phone number. Null in the sample. |
postal_address | null | Separate postal address. Null in the sample. |
municipality | string | Municipality of the registered address. |
address_country | string | Country of the address, in Danish. |
foreign_address | null | Foreign address, when the company has one. Null in the sample. |
activity | string | Main activity in Danish. |
industry_code | string | Main industry code. |
secondary_activities | array | Secondary industry codes, each with its Danish description. |
previous_names | array | Earlier company names, as plain strings. |
purpose | string | Company purpose text. The sample ends mid-sentence, so long texts appear cut. |
financial_year_period | string | Financial year, day.month to day.month. |
registered_capital | string | Registered capital with currency, formatted as the register shows it. |
capital_classes | boolean | Whether the company has share classes. |
directors | array | Management and board entries with name, group, role and election_form. |
signing_rule | string | How the company is bound by signature. Text is cut when long. |
auditors | array | Auditors with name, registration_number, role and address. |
listed | boolean | Whether the company is listed. |
latest_articles_date | string | Date of the latest articles of association. |
advertising_protection | boolean | Whether the company has advertising protection on the register. |
state_owned | boolean | State-owned flag. |
social_economic | boolean | Social economic enterprise flag. |
aml_covered | boolean | Whether the company is covered by anti-money-laundering rules, as flagged on the register. |
production_units | array | Production units (P-numbers) with name, address, start and end dates, active flag, industry and contact fields. The sample shows two. |
production_units_total | number | Total number of production units found. |
production_units_truncated | boolean | Whether the production unit list was cut. |
owners | array | Current owners with name, entity_type, address, ownership_share, voting_share, capital_class, changed_date, details and influence_roles. |
owners_ceased | array | Former owners. Empty in the sample. |
beneficial_owners | array | Beneficial owners. Empty in the sample. |
beneficial_owners_ceased | array | Former beneficial owners. Empty in the sample. |
board_deemed_beneficial_owners | boolean | Whether the board is treated as beneficial owners. |
first_financial_period_start | null | Start of the first financial period. Null in the sample. |
first_financial_period_end | null | End of the first financial period. Null in the sample. |
filings_total | number | Number of filings on the register for the company. |
announcements_total | number | Number of announcements. |
registrations_total | number | Number of registrations. |
employees | number | Latest employee count. |
employees_period | string | Month the employee count refers to. |
employment_monthly | array | Monthly employees and full-time equivalents. |
employment_quarterly | array | Older quarterly figures, some given as an interval instead of a number. |
history | object | Past values with from and to dates: names, addresses, legal_forms, statuses, industry_codes, secondary_industry_codes, purposes, registered_capital, articles_dates, signing_rules. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "dk_company",
"company": "24256790",
"company_id": "24256790",
"human": "# Denmark — CVR — company\n\n- **Number:** 24256790\n- **Pages opened:** 4\n- **Proxy traffic:** 1.58 MB\n- **Name:** NOVO NORDISK A/S\n- **Status:** Normal\n- **Type:** Aktieselskab\n- **Registered:** 1931-11-28\n- **Address:** Novo Alle 1, 2880 Bagsværd",
"machine": {
"company": {
"registration_number": "24256790",
"name": "NOVO NORDISK A/S",
"status": "Normal",
"address": "Novo Alle 1, 2880 Bagsværd",
"url": "https://datacvr.virk.dk/enhed/virksomhed/24256790",
"company_type": "Aktieselskab",
"incorporation_date": "1931-11-28",
"end_date": null,
"phone": "44448888",
"email": null,
"municipality": "Gladsaxe",
"activity": "Fremstilling af farmaceutiske præparater",
"industry_code": "212000",
"secondary_activities": [
"201400 Fremstilling af andre organiske basiskemikalier",
"211000 Fremstilling af farmaceutiske råvarer"
],
"previous_names": [
"NORDISK GENTOFTE A/S",
"NORDISK INSULINLABORATORIUM A/S"
],
"purpose": "Selskabets formål er at forske i, udvikle, producere og markedsføre farmaceutiske, medicinske og tekniske produkter og ydelser samt anden dertil knyttet virksomhed efter bestyrelsens nærmere bestemmel",
"financial_year_period": "01.01 - 31.12",
"registered_capital": "446.500.000,00 DKK",
"directors": [
{
"name": "Maziar Doustdar",
"group": "Direktion",
"role": "Adm. dir.",
"election_form": null
},
{
"name": "Karsten Munk Knudsen",
"group": "Direktion",
"role": "Direktør",
"election_form": null
}
],
"signing_rule": "Selskabet forpligtes ved underskrift (i) af to direktører i forening, (ii) af en direktør eller et bestyrelsesmedlem i forening med bestyrelsens formand eller næstformand eller (iii) af den samlede be",
"auditors": [
{
"name": "DELOITTE STATSAUTORISERET REVISIONSPARTNERSELSKAB",
"registration_number": "5651072",
"role": "Revisor",
"address": "Weidekampsgade 6, 2300 København S"
},
{
"name": "DELOITTE STATSAUTORISERET REVISIONSPARTNERSELSKAB",
"registration_number": "5651072",
"role": "Bæredygtighedsrevisor",
"address": "Weidekampsgade 6, 2300 København S"
}
],
"listed": true,
"latest_articles_date": "2026-03-26",
"capital_classes": true,
"advertising_protection": false,
"production_units": [
{
"p_number": "1029829825",
"name": "DKLY NV32",
"address": "Nørgaardsvej 32, 2800 Kongens Lyngby",
"start_date": "2023-06-01",
"end_date": null,
"active": true,
"industry_code": "212000",
"industry": "Fremstilling af farmaceutiske præparater",
"phone": null,
"email": null,
"advertising_protected": true
},
{
"p_number": "1017660779",
"name": "NOVO NORDISK A/S - 1R 1S 1T 1V 1Y",
"address": "Brudelysvej 22, 2880 Bagsværd",
"start_date": "2012-05-09",
"end_date": null,
"active": true,
"industry_code": "212000",
"industry": "Fremstilling af farmaceutiske præparater",
"phone": null,
"email": null,
"advertising_protected": true
}
],
"production_units_total": 220,
"production_units_truncated": false,
"company_type_code": "60",
"address_country": "Danmark",
"foreign_address": null,
"state_owned": false,
"social_economic": false,
"aml_covered": false,
"fax": null,
"secondary_phone": null,
"postal_address": null,
"first_financial_period_start": null,
"first_financial_period_end": null,
"owners": [
{
"name": "Novo Holdings A/S",
"entity_type": "company",
"address": "Tuborg Havnevej 19, 2900 Hellerup",
"ownership_share": "25-33,32% (13.11.2000 - )",
"voting_share": "66,67-89,99% (13.11.2000 - )",
"capital_class": "A, B (13.11.2000 - )",
"changed_date": "2000-11-13",
"details": "Ejerandel: 25-33,32% (13.11.2000 - ); Stemmerettigheder: 66,67-89,99% (13.11.2000 - ); Kapitalklasse: A, B (13.11.2000 - ); Ændringsdato: 13.11.2000",
"influence_roles": []
}
],
"owners_ceased": [],
"beneficial_owners": [],
"beneficial_owners_ceased": [],
"board_deemed_beneficial_owners": false,
"filings_total": 137,
"announcements_total": 11,
"registrations_total": 118,
"employees": 27279,
"employees_period": "Juli 2026",
"employment_monthly": [
{
"period": "Juli 2026",
"year": 2026,
"month": 7,
"quarter": null,
"employees": 27279,
"employees_interval": null,
"full_time_equivalents": 26308,
"full_time_equivalents_interval": null
},
{
"period": "Juni 2026",
"year": 2026,
"month": 6,
"quarter": null,
"employees": 27895,
"employees_interval": null,
"full_time_equivalents": 26934,
"full_time_equivalents_interval": null
}
],
"employment_quarterly": [
{
"period": "3. kvt 2019",
"year": 2019,
"month": null,
"quarter": 3,
"employees": null,
"employees_interval": "ANTAL_1000_999999",
"full_time_equivalents": null,
"full_time_equivalents_interval": "ANTAL_1000_999999"
},
{
"period": "2. kvt 2019",
"year": 2019,
"month": null,
"quarter": 2,
"employees": null,
"employees_interval": "ANTAL_1000_999999",
"full_time_equivalents": null,
"full_time_equivalents_interval": "ANTAL_1000_999999"
}
],
"history": {
"names": [
{
"value": "NOVO-NORDISK A/S",
"from": "1989-05-04",
"to": "1990-05-08"
},
{
"value": "NOVO INDUSTRI A/S",
"from": "1931-11-28",
"to": "1989-05-03"
}
],
"addresses": [
{
"value": "Novo Alle, 2880 Bagsværd",
"from": "1931-11-28",
"to": "2002-10-04"
}
],
"legal_forms": [],
"statuses": [],
"industry_codes": [
{
"value": "212000 Fremstilling af farmaceutiske præparater",
"from": "2008-01-01",
"to": "2024-12-31"
},
{
"value": "244200 Medicinalvarefabrikker",
"from": "1999-10-18",
"to": "2007-12-31"
}
],
"secondary_industry_codes": [
{
"value": "325000 Fremstilling af medicinske og dentale instrumenter samt udstyr hertil",
"from": "2008-01-01",
"to": "2024-12-31"
},
{
"value": "211000 Fremstilling af farmaceutiske råvarer",
"from": "2008-01-01",
"to": "2024-12-31"
}
],
"purposes": [],
"registered_capital": [
{
"value": "451.000.000,00",
"from": "2023-04-26",
"to": "2024-04-23"
},
{
"value": "456.000.000,00",
"from": "2022-04-27",
"to": "2023-04-25"
}
],
"articles_dates": [
{
"value": "2025-03-27",
"from": "2025-03-27",
"to": "2026-03-25"
},
{
"value": "2024-04-24",
"from": "2024-04-24",
"to": "2025-03-26"
}
],
"signing_rules": []
}
},
"blocked": false,
"pages_opened": 4,
"proxy_traffic_bytes": 1661294
},
"total_points": 5
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
One company per request. Pass the registration number or the link to the record on the register.
curl -X POST https://api.neuralverge.ai/functions/v1/run-dk-companies \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"company":"24256790"}'What teams use it for
Where this field shows up in an actual workflow.
Pull owners with ownership and voting shares and the date each stake changed, instead of reading the ownership page by hand.
Confirm status, legal form, registered capital, directors and auditors before signing a contract.
Add industry codes, municipality, employee counts and production units to company records in your CRM.
The history block shows earlier names, addresses and capital, which helps when a company shows up under an old name.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Denmark — entities on CVR.
Read at request time, so the answer reflects the register as it stands when you ask.
CVR is a public register. Every response carries the source URL it was read from and a session id you can trace.
- —Production units can run long; the response reports the total and says whether the list was cut.
- —Beneficial owners come back empty when the register shows none. The sample company has an empty list.
- —Text fields such as purpose and signing_rule can arrive cut short, as in the sample.
Questions, answered
The company's CVR number, or the link to the company on the Danish register. The request body takes a single company field.
Related sources
Try cvr company on your own data
One request format across every source in the catalog.