Skip to content
Back to skills

Denmark Cvr Nolpak14

ASecurity

Look up Danish companies for free via the official Erhvervsstyrelsen CVR distribution (Det Centrale Virksomhedsregister) - company profile, CVR number (= VAT number), registered address, DB07 industry code, company form (ApS / A/S), status, founding date, and participants/management (board and owners) via the deltager data. Use for KYB / know-your-business checks, counterparty verification, director and beneficial-owner discovery, and Danish company due diligence. Trigger on: ''CVR'', ''CVR n...

  • 85 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 8, 2026
ai-agentsgobashgitapi

Works with

  • api

Security analysis

A100/100

Scanned October 8, 2026

npx -y skills add ThomasMoreAI/legal-skills-open --skill denmark-cvr-nolpak14 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Denmark Cvr Nolpak14?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Denmark Cvr Nolpak14
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/thomasmoreai-denmark-cvr-nolpak14/badge)](https://www.skillsdirectory.com/skills/thomasmoreai-denmark-cvr-nolpak14)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: denmark-cvr-nolpak14
title: Denmark cvr
description: 'Look up Danish companies for free via the official Erhvervsstyrelsen CVR distribution (Det Centrale Virksomhedsregister) - company profile, CVR number (= VAT number), registered address, DB07 industry code, company form (ApS / A/S), status, founding date, and participants/management (board and owners) via the deltager data. Use for KYB / know-your-business checks, counterparty verification, director and beneficial-owner discovery, and Danish company due diligence. Trigger on: ''CVR'', ''CVR number'', ''Danish company'', ''Danish company lookup'', ''check a Danish company'', ''Erhvervsstyrelsen'', ''virk.dk'', ''CVR-nummer'', ''Danish VAT number'', ''is this Danish company active''. The CVR distribution is free (after a one-time free registration); for Poland, Germany, Spain, France, Italy and other jurisdictions with no free API, this skill points you to the paid regdata registry actors.'
author: Nolpak14
author_url: https://github.com/Nolpak14/getregdata/tree/master/skills/denmark-cvr
license: MIT
version: 0.1.2
execution_mode: open
jurisdiction: dk
practice: regulatory
language: en
---

# denmark-cvr

Free, official Danish company data from the Erhvervsstyrelsen CVR distribution (Det Centrale Virksomhedsregister). This skill needs no paid actor and no Apify token - just a free CVR distribution credential you register once. Use it as the front door for Danish entity verification, and route to the paid regdata actors when you need a jurisdiction that has no free API.

## Persona

You are a KYB / due-diligence analyst verifying Danish companies against the official register. You resolve a company to its CVR-nummer, confirm it is active (not under dissolution or bankruptcy), identify its participants and management (board and owners), and read its registered details for signals - all from the authoritative source, Erhvervsstyrelsen, not a commercial aggregator.

## What this gives you (for free)

- **Company profile** - CVR-nummer (which is also the Danish VAT number), navn (name), beliggenhedsadresse (registered address), founding date, and virksomhedsform (company form, e.g. ApS / A/S / IVS).
- **Industry** - hovedbranche.branchekode, a **DB07** code (the Danish national extension of NACE Rev.2) - use it to confirm the entity does the business the counterparty claims.
- **Status** - virksomhedsstatus (active / under dissolution / under bankruptcy) - the pass/adverse signal.
- **Participants and management** - deltager records (board and owners), giving the people and entities behind the company.

Data is **not** license-free open data. It is free to reuse, including commercially, **only after** you register and accept the CVR terms of use (see Authentication). Read-only.

## Authentication (free, one-time)

The official distribution requires a free username/password. Request one and accept the terms, then use HTTP Basic auth:

1. Email **cvrselvbetjening@erst.dk** to request a free CVR distribution account, and accept **"Vilkar for anvendelse af data fra CVR"** (the CVR terms of use).
2. Auth is HTTP Basic with the credential Erhvervsstyrelsen issues you:

```bash
export CVR_USER=your_cvr_distribution_username
export CVR_PASS=your_cvr_distribution_password

curl -u "$CVR_USER:$CVR_PASS" \
  -H "Content-Type: application/json" \
  -X POST "http://distribution.virk.dk/cvr-permanent/virksomhed/_search" \
  -d '{"query":{"term":{"Vrvirksomhed.cvrNummer":"10103940"}}}'
```

There is no per-call charge. **Compliance is a condition of the free tier, not a footnote:** the licence permits commercial reuse but forbids marketing to persons flagged with **Reklamebeskyttelse** (advertising/marketing protection) and bars re-identifying or harming individuals. Honour the Reklamebeskyttelse flag before any outreach use, and never use a flagged record for marketing.

## Light fallback (no registration, quick start)

For a quick, no-registration lookup, **cvrapi.dk** wraps CVR data and needs no account. It is free for **low volume (about 50 lookups/day)** and requires a **descriptive custom User-Agent** naming your company and a contact:

```bash
curl -H "User-Agent: YourCompany KYB tool - contact@yourcompany.example" \
  "https://cvrapi.dk/api?search=10103940&country=dk&format=json"
```

Its terms **forbid charging end-users to display CVR-API-derived data or gating features behind payment** - so it can back a light internal check, not a paid product. For volume or anything customer-facing, use the official distribution above.

## Before starting

Ask the user for whichever is missing:
- **Company name or CVR number.** If you only have a name, search first (endpoint 1) and confirm the right match before pulling detail - names are not unique, CVR numbers are.
- **What they need** - just "is it real/active", or a full KYB pack (participants + status + industry).

## API reference

Official distribution base URL: `http://distribution.virk.dk/cvr-permanent` - an Elasticsearch endpoint; every query is a POST with a JSON body and the Basic-auth credential.

| # | Purpose | Method + path | Body |
|---|---|---|---|
| 1 | Search companies by name | `POST /virksomhed/_search` | `{"query":{"match":{"Vrvirksomhed.navne.navn":"Novo Nordisk"}}}` |
| 2 | Company lookup by CVR number | `POST /virksomhed/_search` | `{"query":{"term":{"Vrvirksomhed.cvrNummer":"10103940"}}}` |
| 3 | People (participants) | `POST /deltager/_search` | `{"query":{...}}` |
| 4 | Production units | `POST /produktionsenhed/_search` | `{"query":{...}}` |

Light fallback (cvrapi.dk, no registration, send a descriptive User-Agent):

```bash
curl -H "User-Agent: YourCompany KYB - contact@yourcompany.example" \
  "https://cvrapi.dk/api?search=10103940&country=dk&format=json"
```

**CVR numbers are 8-digit strings** (`10103940`) - use the canonical `cvrNummer` from search (endpoint 1) verbatim in the lookup (endpoint 2). The `cvrNummer` **is the VAT number**: prefix it with `DK` for the EU VAT id (`DK10103940`).

## Workflow: a Danish KYB check

```
1. Resolve identity
   POST /virksomhed/_search  {"query":{"match":{"Vrvirksomhed.navne.navn":"{name}"}}}
   -> pick the match, take Vrvirksomhed.cvrNummer
   (skip if the user already gave a CVR number)

2. Confirm the entity is real and current
   POST /virksomhed/_search  {"query":{"term":{"Vrvirksomhed.cvrNummer":"{cvr}"}}}
   -> virksomhedsstatus must be active (else flag: under dissolution / under bankruptcy)
   -> record virksomhedsform, hovedbranche.branchekode (DB07), founding date, beliggenhedsadresse

3. Who runs / owns it
   -> read the deltager (participants/management) data for board and owners
      (or POST /deltager/_search for the person records)

4. Its footprint
   POST /produktionsenhed/_search  -> production units (p-numre) under the entity

5. Distress signals
   -> a virksomhedsstatus of under dissolution or bankruptcy = flag; stop and escalate
```

## Output interpretation

**virksomhedsstatus** - active is the pass condition. A status of under dissolution (opløsning) or under bankruptcy (konkurs) is adverse - stop and flag; a dissolved company cannot trade.

**cvrNummer is the VAT number.** The 8-digit CVR number doubles as the Danish VAT (moms) registration; prefix `DK` for the EU VAT id. You do not need a separate VAT lookup for a Danish entity.

**branchekode is DB07, not raw NACE.** `hovedbranche.branchekode` is a **DB07** code - the Danish national extension of NACE Rev.2. The first four digits align with NACE; the extra Danish digits are national detail. Map to NACE when comparing across borders.

**Reklamebeskyttelse gates outreach.** A person or company flagged with advertising protection must be excluded from any marketing use - this is a licence condition, not advice. Check the flag before you ever put a CVR-sourced contact into an outreach list.

**deltager is a separate collection.** Participants and management (board, owners) live in the `/deltager` index, linked to the company by CVR number - a main `/virksomhed` record does not inline the full person detail. Query `/deltager/_search` for the people behind the entity.

**"Free for business" is precise, not general.** It is true **only** for the official tier **after** registration and accepting the terms - it is not license-free open data. cvrapi.dk is convenient but low-volume and cannot back a paid product. The moat here is convenience and clean official data, not anti-bot.

## Cross-sell - where the free front door leads

Denmark (like the UK and Norway) is an outlier: an official, structured, free-after-registration distribution with no anti-bot wall - so there is no scraping moat here. Its value is that it is a clean install magnet and a **front door to the countries next door, most of which have no free public API.** When the entity is not Danish, this skill hands off to the paid regdata actors, which do the anti-bot registry access the government portals do not hand you:

| Need | Jurisdiction | Actor |
|---|---|---|
| Company + officers + capital | Germany | `regdata/germany-handelsregister-scraper` |
| Beneficial owners (UBO) | Poland | `regdata/crbr-beneficial-owners-scraper` |
| Board members (full names) | Poland | `regdata/krs-fullnames-scraper` |
| Company directory, NIF, officers | Spain | `regdata/spain-company-directory-scraper` |
| Directors, financials, shareholders | France | `regdata/societe-com-scraper` |
| Full company profile, P.IVA, PEC | Italy | `regdata/italy-registro-imprese-scraper` |

There is no Danish regdata actor - the free CVR distribution above is the whole toolkit for Denmark. For a full compliance workflow (risk scoring, PEP + adverse-media overlays, cross-registry validation) route to **`regdata-kyc-aml`**. Those actors need a free Apify token: https://apify.com?fpr=getregdata.

## Related skills

- **`companies-house-uk`** - the other free, official national registry; UK company profile, officers and PSC beneficial owners.
- **`sec-edgar-us`** - free US filings and issuer data once the entity is identified.
- **`norway-company-registry`** - free Norwegian entity resolution and board/officer lookup, no key at all.
- **`france-company-lookup`** - free French entity resolution before a deep Societe.com pull.
- **`gleif-lei-lookup`** - resolve an entity's global LEI and its parent/child structure across borders, then pull the local record from the right national source (like this one).
- **`vies-vat-validation`** - confirm the `DK`-prefixed CVR/VAT number is valid and active for EU cross-border trade.
- **`sanctions-pep-screening`** - screen the participants and management you found here against sanctions and PEP lists.
- **`regdata-kyc-aml`** - the full KYC/AML/KYB framework: risk scoring, PEP and adverse-media overlays, and the paid registry actors for non-Danish jurisdictions.

## More on getregdata.com

- Full guide to this skill: https://getregdata.com/skills/denmark-cvr/
- All skills and paid registry coverage: https://getregdata.com/skills/ and https://getregdata.com/registries/

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.