Data source: CVR via cvrapi.dk (free public API, Det Centrale Virksomhedsregister)
Overview
CVR (Danish Company Registry) wraps CVR via cvrapi.dk (free public API, Det Centrale Virksomhedsregister), handling authentication, pagination, and rate limits for you. This tutorial covers all 4 tools with working code examples you can copy and run.
Prerequisites
- Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
- Choose your integration method: MCP protocol or REST API.
Connect via MCP
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gnist-cvr": {
"url": "https://context.gnist.ai/mcp/cvr/",
"headers": {
"Gnist-API-Key": "YOUR_API_KEY"
}
}
}
}
Tools (4)
lookup_cvr_company
Look up a Danish company by its CVR number. Returns company details including name, address, company type, industry, employees, owners, and production units. Args: cvr_number: Danish CVR number (8 digits). Returns: Company record, or {"error": "not_found"} if the CVR number is unknown.
| Parameter | Type | Required | Description |
|---|---|---|---|
cvr_number | integer | required | Danish CVR number (8 digits, e.g. 10150817 for Carlsberg). |
curl -X POST "https://context.gnist.ai/mcp/cvr/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "lookup_cvr_company", "arguments": {"cvr_number": 10150817}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/cvr/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'cvr_number': 10150817},
'name': 'lookup_cvr_company'}},
)
print(resp.json())
search_cvr_company
Search for a Danish company by name in the Central Business Register (CVR). Returns the best-matching company with full details including address, company type, industry, owners, and production units. Args: name: Company name or partial name to search for. Returns: Best-matching company record, or {"error": "not_found"} if no match.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | required | Company name to search for (e.g. 'Novo Nordisk', 'LEGO'). |
curl -X POST "https://context.gnist.ai/mcp/cvr/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_cvr_company", "arguments": {"name": "'Novo"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/cvr/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'name': "'Novo"}, 'name': 'search_cvr_company'}},
)
print(resp.json())
lookup_cvr_production_unit
Look up a Danish production unit by its P-nummer. Production units are individual business locations registered under a parent company in the Danish CVR. Args: pno: Production unit number (P-nummer). Returns: Company record for the parent company, or {"error": "not_found"}.
| Parameter | Type | Required | Description |
|---|---|---|---|
pno | integer | required | Danish production unit number (P-nummer, 10 digits). |
curl -X POST "https://context.gnist.ai/mcp/cvr/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "lookup_cvr_production_unit", "arguments": {"pno": 5}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/cvr/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'pno': 5}, 'name': 'lookup_cvr_production_unit'}},
)
print(resp.json())
report_feedback
Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.
| Parameter | Type | Required | Description |
|---|---|---|---|
feedback | string | required | |
feedback_type | string | optional | (default: general) |
curl -X POST "https://context.gnist.ai/mcp/cvr/" \
-H "Content-Type: application/json" \
-H "Gnist-API-Key: YOUR_API_KEY" \
-d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx
resp = httpx.post(
"https://context.gnist.ai/mcp/cvr/",
headers={"Gnist-API-Key": "YOUR_API_KEY"},
json={'id': 1,
'jsonrpc': '2.0',
'method': 'tools/call',
'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())
Common Patterns
Use
search_cvr_company to find items, then lookup_cvr_company to get full details. This two-step pattern is common for exploring data before drilling down.FAQ
What data does CVR (Danish Company Registry) provide?
Danish company registry — CVR lookup, name search, production units, owners, industry codes from Det Centrale Virksomhedsregister. It exposes 4 tools: lookup_cvr_company, search_cvr_company, lookup_cvr_production_unit, report_feedback.
What do I need to get started?
A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.
What format does the CVR (Danish Company Registry) API return?
JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.