CVR API reference

Every endpoint is a GET request with no API key and returns JSON. The base URL is https://apicvr.dk. Below you'll find each endpoint with parameters, an example and fields.

Basics

bash
curl https://apicvr.dk/api/v1/41013583

Get a company by CVR number

GET/api/v1/{cvrNumber}

The full company profile: name, address, contact details, industry code, company type, status, headcount, marketing protection, every production unit, plus current management, fully liable participants and legal owners.

ParameterInTypeDescription
cvrNumber
required
path integer 8-digit CVR number.
Example
curl "https://apicvr.dk/api/v1/41013583"

Open in browser →

Management, fully liable participants and owners

GET/api/v1/{cvrNumber}/direktion-og-ansvarlig

A slim response with only the people and companies currently running or owning the company. Owners include ownership share and voting rights both as numbers and as CVR's display ranges (e.g. 25-33,32%).

ParameterInTypeDescription
cvrNumber
required
path integer 8-digit CVR number.
Example
curl "https://apicvr.dk/api/v1/41013583/direktion-og-ansvarlig"

Open in browser →

Combined search by name and/or CVR

GET/api/v1/search

Search by name (prefix), CVR number, or both. At least one parameter is required.

ParameterInTypeDescription
name
optional
query string Company name (prefix).
cvr
optional
query integer 8-digit CVR number.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search?name=novo&limit=5"

Open in browser →

Typo-tolerant name search (autocomplete)

GET/api/v1/search/fuzzy/{companyName}

Finds the company even when the name is misspelled, and returns a slim response with name, CVR number and industry. Built for autocomplete fields.

ParameterInTypeDescription
companyName
required
path string Company name or part of it.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search/fuzzy/novo%20nordsk?limit=5"

Open in browser →

Search by address

GET/api/v1/search/address

Find every company registered at an address. The search tries an exact match first, then street name and number, then a typo-tolerant match. Pass postal_code to narrow it to one postal district.

ParameterInTypeDescription
address
required
query string Street and number, e.g. Novo Allé 1.
postal_code
optional
query string 4-digit postal code.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search/address?address=Novo%20All%C3%A9%201&postal_code=2880"

Open in browser →

Search by email

GET/api/v1/search/email/{email}

Find companies with the given email on their public CVR record.

ParameterInTypeDescription
email
required
path string Full email address.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search/email/[email protected]"

Open in browser →

Search by email domain

GET/api/v1/search/email-domain/{domain}

Find companies whose registered email is on the domain. Handy for matching a B2B lead or a new user to the right company.

ParameterInTypeDescription
domain
required
path string Domain without @, e.g. firma.dk.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search/email-domain/novonordisk.com"

Open in browser →

Search by phone number

GET/api/v1/search/phone/{phone}

Find companies with the phone number on their public CVR record.

ParameterInTypeDescription
phone
required
path string Phone number, 8 digits without country code.
limit
optional
query integer Max number of results (default 100).
Example
curl "https://apicvr.dk/api/v1/search/phone/44448888"

Open in browser →

Response fields

Applies to /api/v1/{cvrNumber} and the search endpoints (searches omit production units and relations). Fields without a value are null.

FieldTypeDescription
vatintegerThe CVR number (8 digits).
namestringCurrent name.
addressstringStreet, number, floor and door.
zipcodeintegerPostal code.
citystringCity (postal district).
citynamestringTown name, when it differs from the postal district.
addresscostringc/o address.
protectedbooleantrue if the company has opted out of marketing.
phonestringPublicly registered phone number.
emailstringPublicly registered email.
websitestringWebsite, if registered.
startdatestringFounding date (YYYY-MM-DD).
enddatestringClosing date, otherwise null.
employeesintegerHeadcount (latest filing).
industrycodeintegerIndustry code (DB07, 6 digits).
industrydescstringIndustry description.
companycodeintegerCompany type code.
companydescstringCompany type, e.g. Aktieselskab.
companytypeshortstringShort company type, e.g. A/S or ApS.
statusstringE.g. NORMAL, OPHØRT or UNDERKONKURS.
bankruptbooleantrue if the company is bankrupt.
p_unitsPUnit[]List of production units (P-units) with address, industry and headcount.
direktionDirektor[]Current directors.
fuldt_ansvarligeFuldtAnsvarlig[]Participants with unlimited personal liability.
ejereEjer[]Legal owners with ownership share and voting rights.

Error codes

Errors come back as {"detail": {"error": "CODE", "message": "…"}}.

HTTPCodeDescription
400MISSING_QUERY/api/v1/search was called without name or cvr.
404NOT_FOUNDNo company with that CVR number.
422–A parameter has the wrong type, e.g. a CVR number containing letters.
502HTTP_ERRORThe Danish Business Authority's CVR distribution returned an error. Retry.
502TRANSPORT_ERRORThe CVR distribution could not be reached. Retry shortly.

To try calls with your own parameters, use the Interactive Swagger docs · OpenAPI specification