A reliable partner for years, responsive, efficient, and high-quality.
CVR API: Danish business register data in one REST call
Denmark's CVR carries phone, email and website, which few registers do. The catch is the raw Elasticsearch endpoint and the three-week access process before you can call it. CompanyData gives you every Danish business, contacts included, through one REST API and a key issued on signup.
What is the CVR API?
Erhvervsstyrelsen runs Denmark's Central Business Register, the CVR, and by law anyone may access the grunddata. The main system-to-system route is a raw Elasticsearch 6.8 endpoint behind HTTP Basic auth. It is free, and it returns phone, email, website and change history alongside the CVR number, branchekode, legal form and address, which few registers do.
The friction is everywhere else. Access is a paperwork process with roughly three weeks of processing and a signed declaration, financials live in a separate index as XBRL and PDF documents rather than parsed figures, and beneficial owners were closed to the public in September 2025. CompanyData starts from the same register and hands it back with contacts, structured financials and group links included, in one API that also covers 200+ other countries in the same schema.
The official access, in short
- Full grunddata over a raw Elasticsearch endpoint, free under CVR-loven section 18
- Returns phone, email, website and full change history, rare for a register
- Employee counts are present, but as bands rather than exact figures
- Access is a roughly three-week paperwork process with a signed declaration
- Financials only as XBRL and PDF documents in a separate offentliggoerelser index
- One country, and beneficial owners closed to the public since September 2025
Look up any Danish business
Register fields plus the enrichment layer, in one response. Pick a business, you need no key for the sample.
- Official CVR number and branchekode on every record
- Phone, email and website in the same call
- The same request across 200+ countries
CVR and CompanyData, field by field
The CVR carries more than most registers, contacts included, and our Danish contact data comes from the CVR itself, so those rows match by design. The difference is everything around them: structured financials, group structure, no access paperwork, and 200+ other countries in the same schema.
| Data point | Official register | CompanyData API |
|---|---|---|
| Businesses in the file | ✓ | 955,565 |
| Name and binavne | ✓ | ✓ |
| CVR number | 325,738 | 955,525 |
| Registered address and post code | 325,734 | 955,541 |
| Branchekode and legal form | ✓ | ✓ |
| Employee count | bands only | ✓ bands, plus size fields |
| Website | 154,398 | 376,313 |
| Phone number | 178,370 | 342,892 |
| Mobile number | ✗ | 472,398 |
| Business email | 165,239 | 467,002 |
| Director or contact | 238,931 | 738,450 |
| Revenue and structured financials | documents in a separate index | ✓ structured fields |
| Group structure | ✗ | ✓ included |
| Access | ~3 week paperwork process | ✓ API key on signup |
| International records | ✗ | 365M worldwide |
Our column counts every registered entity we hold for this country, active or inactive. Some registers only serve active entities through their API, which we think is a gap: a holding or a trust can be dormant and still matter as an entity, so we keep it. Measured live in our own file, August 2026, and refreshed monthly.
Access and integration
The official route is a raw Elasticsearch 6.8 endpoint you reach after a signed declaration and roughly three weeks of processing, then you page it with scroll and remember to delete the scroll. CompanyData is one REST call with a key you get on signup, same fields, no paperwork.
Price and coverage
The CVR is free, and so are its contacts. What it does not give you is exact structured financials, group structure or anything outside Denmark. CompanyData adds those and runs the same request across 200+ countries, from EUR 0.02 per credit with 150 free calls in week one.
More than the CVR alone hands back
Structured revenue, group links and the fields the CVR only ships as documents, one lookup away. Denmark by default, switch country when you want.
Connecting to the official CVR yourself
The official access is capable but has sharp edges. Here is how you get in, and the six things that cost small teams the most time, whether you enrich with us or not.
Request system-to-system access
Apply through datacvr.virk.dk and email cvrselvbetjening@erst.dk. You sign a declaration about advertising-protected units, and processing takes roughly three weeks.
Connect with HTTP Basic auth
The main route is a raw Elasticsearch 6.8 endpoint at distribution.virk.dk/cvr-permanent. Credentials go in as HTTP Basic, not a bearer token.
Page bulk pulls with scroll
Elasticsearch 6 puts mapping types in the path and caps size, so scroll is the only bulk mechanism. Remember to delete the scroll when you finish, or you leak it.
Honest take: if you want to verify a handful of CVR numbers and you can wait out the access process, the official route is a fair deal and even ships contacts. If you need structured financials, group structure, a key today or coverage beyond Denmark, that is where we come in.
Get your API keyThere is no single CVR API
Erhvervsstyrelsen runs several routes and confusing them is the main integration risk. The one to build on is the raw Elasticsearch endpoint, not the browser-facing lookups.
Access is paperwork, not a signup form
You email cvrselvbetjening@erst.dk, sign a declaration about advertising-protected units and wait around three weeks. Plan the timeline in from the start.
CVR number, P-nummer and SE-nummer are three things
The CVR number is 8 digits with a modulus-11 check and is never reused. A P-nummer is 10 digits and identifies a production unit, not a business, and the SE-nummer is a separate tax series that can legitimately differ.
Financials sit in a separate index
They are not in the CVR grunddata. The offentliggoerelser index refreshes every ten minutes and serves gzipped XBRL and PDF documents, so you parse them yourself before you have a revenue figure.
Respect reklamebeskyttelse
Each contact field carries its own hemmelig flag and units carry reklamebeskyttet. Breaching the advertising protection is criminally punishable under section 22, so honour the flags in your own flow. We ship them with the record.
Beneficial owners are closed to the public
Public access to reelle ejere ended on 1 September 2025 after the CJEU ruling. Access now needs a legitimate interest, which Erhvervsstyrelsen states explicitly includes third-party data providers.
What teams use CVR data for
Verify Danish counterparties on their CVR number. Status, legal form and registered address checkable automatically.
Build prospect lists filtered by branchekode, region, employee band or business size, contacts already attached.
Top up your Danish accounts with CVR numbers, branchekoder, phone, email and structured financials in bulk.
Track closures, bankruptcies and management changes across your Danish supplier base from the change history.
Type-ahead on business names in your signup form, so the CVR number and address arrive as the register writes them.
Key suppliers and customers to a CVR number once, then keep name, status and address current automatically.
Denmark is one of 200+ countries on the same API
The same request, the same response schema, from the CVR to Companies House, the Handelsregister and Sirene. Build the Danish connection once and take it across the border.
See the Company Data API
The same API, register by register
What teams build with register data
Onboarding, KYB and supplier checks in production, on the same endpoints you tried above.
Norway's national trust mark verifies businesses against the register in real time, cutting verification time by 99%.
Read the story
Up-to-date business details from around the world, screened straight inside the onboarding flow.
Read the story
Large-scale KYB verification through business lookup, built straight into the signup path.
Read the story350M statutory addresses and registry director records inside Sumsub's global KYB flows, so shell offices and nominee directors get caught at onboarding.
Read the storyRegistry-sourced business and UBO data across Africa, Asia and Latin America, with 80% fewer manual reviews.
Read the storyCVR API pricing
Transparent, credit-based pricing. Start with a free trial.
Run your first 150 lookups free
- 150 lookups and 10 exports in week one, key straight after signup
- 1 credit per business returned, usage-based after that
- No credit card, no contract, no sales call
Questions? Ask a human.
No ticket queue. Your question lands with our data team and you get an answer within 24 hours.
Mon to Fri 9:00 to 17:30 CET · info@companydata.com
What our customers say
Real feedback from the people using CompanyData every day.
The best data company we have worked with.
Great feedback from our team on the data quality.
Frequently asked questions
What is the CVR API?
The CVR API is how you reach Denmark's Central Business Register (Det Centrale Virksomhedsregister) from your own systems. Erhvervsstyrelsen runs it as a raw Elasticsearch endpoint, and it returns the CVR number, name, binavne, address, branchekode, legal form, employee band and change history, plus phone, email and website.
Is the CVR API free?
Yes. Access to the grunddata is free under CVR-loven section 18. The cost is not money but time and integration: you sign a declaration, wait roughly three weeks for access, and then work against a raw Elasticsearch 6.8 endpoint with HTTP Basic auth.
With CompanyData you get a key on signup and 150 free lookups in week one, then pay on usage.
Does the CVR return phone numbers and email addresses?
Yes, and this is unusual for a business register. The CVR carries phone, fax, email and website, each with its own hemmelig flag, alongside the reklamebeskyttet advertising-protection flag. We ship those flags with the record so you can honour them.
What the CVR does not give you is exact structured financials or group structure. That is where the enrichment layer earns its place.
How do I get access to the CVR?
You apply for system-to-system access through datacvr.virk.dk and email cvrselvbetjening@erst.dk, sign a declaration about advertising-protected units, and wait roughly three weeks. After that you connect to the Elasticsearch endpoint with HTTP Basic auth.
Where are Danish financials, and can I get revenue?
Financials are not in the CVR grunddata. They sit in a separate offentliggoerelser index, refreshed every ten minutes and served gzipped as XBRL and PDF documents, so you parse them yourself before you have a figure. CompanyData delivers revenue and results as structured fields instead.
What is the difference between a CVR number and a P-nummer?
A CVR number is the 8-digit identifier of a legal unit, with a modulus-11 check digit, never reused. A P-nummer is a 10-digit identifier for a production unit (a physical place of business), not the business itself, and the SE-nummer is a separate tax series that can legitimately differ from the CVR number.
What happened to beneficial owners in the CVR?
Public access to beneficial owners (reelle ejere) ended on 1 September 2025 after the Court of Justice ruling in joined cases C-37/20 and C-601/20. Access now requires a legitimate interest, which Erhvervsstyrelsen states explicitly includes third-party data providers.
How many Danish businesses do you cover?
954,360 Danish registrations, kept current from the CVR and other official sources, with contacts, structured financials and group links attached where available.
Run 150 free API calls before you spend anything
Tell us which Danish businesses you need. You get a trial key with 150 lookups and 10 exports, plus a real sample response for your target segment, within 24 hours.
or call +31 (0)20 705 2360