Danish CVR API - Complete Field Reference¶
Table of Contents¶
- Overview
- Field Conventions
- Virksomhed (Companies) Fields
- Deltager (Participants) Fields
- Produktionsenhed (Production Units) Fields
- Cross-Index Relationships
- Query Path Reference
- Data Types and Examples
- Temporal Data Patterns
- Common Field Patterns
Overview¶
This document provides a comprehensive field-by-field reference for all three main indices in the Danish CVR API: - Virksomhed (Companies): 2,194,982 records - Deltager (Participants): 1,772,344 records - Produktionsenhed (Production Units): 2,787,126 records
All fields include data type specifications, cardinality information, example values, and proper Elasticsearch query paths for the ES 1.7.4 implementation.
Field Conventions¶
Temporal Structure¶
Most fields follow a historical pattern with validity periods:
{
"fieldName": [{
"actualData": "value",
"periode": {
"gyldigFra": "2020-01-01", // Start date
"gyldigTil": null // null = currently valid
},
"sidstOpdateret": "2020-01-01T10:00:00.000+01:00"
}]
}
Data Types Legend¶
- keyword: Exact match, not analyzed (IDs, codes)
- text: Full-text searchable, analyzed
- long: 64-bit integer
- integer: 32-bit integer
- date: ISO 8601 date
- boolean: true/false
- decimal: String representation of decimal numbers
- scaled_float: Floating-point with scale factor
- nested: Object array with include_in_parent: true
Cardinality Legend¶
- Required: Field always present
- Optional: Field may be null or missing
- Single: One value only
- Multiple: Array of values
- Historical: Array with temporal validity
Virksomhed (Companies) Fields¶
Root Object: Vrvirksomhed¶
Core Identifiers¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
cvrNummer | keyword | Required, Single | Unique company identifier | 10103940 |
enhedsNummer | long | Required, Single | Internal system unit number | 4000004570 |
enhedstype | keyword | Required, Single | Always "VIRKSOMHED" | "VIRKSOMHED" |
samtId | integer | Required, Single | Internal system ID | 12345 |
Query Paths:
Registration Numbers¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
regNummer | nested | Optional, Historical | Registration numbers with periods | [{"regnummer": "REG123", "periode": {...}}] |
Nested Structure: - regNummer.regnummer (keyword) - regNummer.periode.gyldigFra (date) - regNummer.periode.gyldigTil (date) - regNummer.sidstOpdateret (date)
Names¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
navne | nested | Required, Historical | Official company names | [{"navn": "A.P. Møller-Mærsk A/S", "periode": {...}}] |
binavne | nested | Optional, Historical | Alternative/secondary names | [{"navn": "Mærsk", "periode": {...}}] |
Nested Structure (navne/binavne): - navn (text) - Company name - periode.gyldigFra (date) - Valid from - periode.gyldigTil (date) - Valid until (null = current) - sidstOpdateret (date) - Last updated
Query Paths:
Addresses¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
beliggenhedsadresse | nested | Optional, Historical | Physical business address | See address structure below |
postadresse | nested | Optional, Historical | Postal address (if different) | See address structure below |
Address Nested Structure: - vejnavn (text) - Street name - vejkode (integer) - Street code - husnummerFra (integer) - House number from - husnummerTil (integer) - House number to (for ranges) - bogstavFra (keyword) - Letter from (e.g., "A") - bogstavTil (keyword) - Letter to - etage (keyword) - Floor - sidedoer (keyword) - Side/door identifier - conavn (text) - Care of name - postboks (keyword) - PO Box - postnummer (integer) - Postal code - postdistrikt (text) - Postal district - bynavn (text) - City name - landekode (keyword) - Country code (DK, GL) - kommune.kommuneKode (integer) - Municipality code - kommune.kommuneNavn (keyword) - Municipality name - kommune.periode (object) - Municipality validity - adresseId (keyword) - Unique address identifier UUID - sidstValideret (date) - Last address validation - periode (object) - Address validity period - sidstOpdateret (date) - Last updated
Query Paths:
Vrvirksomhed.beliggenhedsadresse.vejnavn
Vrvirksomhed.beliggenhedsadresse.postnummer
Vrvirksomhed.beliggenhedsadresse.kommune.kommuneKode
Vrvirksomhed.postadresse.postdistrikt
Contact Information¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
telefonNummer | nested | Optional, Historical | Phone numbers | [{"kontaktoplysning": "33631000", "hemmelig": false, "periode": {...}}] |
telefaxNummer | nested | Optional, Historical | Fax numbers | Same structure as phone |
elektroniskPost | nested | Optional, Historical | Email addresses | [{"kontaktoplysning": "info@company.dk", "hemmelig": false, "periode": {...}}] |
hjemmeside | nested | Optional, Historical | Website URLs | [{"kontaktoplysning": "https://company.dk", "hemmelig": false, "periode": {...}}] |
Contact Nested Structure: - kontaktoplysning (keyword) - The actual contact info - hemmelig (boolean) - Is contact info secret/protected - periode.gyldigFra (date) - periode.gyldigTil (date) - sidstOpdateret (date)
Company Status and Form¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
virksomhedsstatus | nested | Required, Historical | Company operating status | [{"status": "NORMAL", "periode": {...}}] |
virksomhedsform | nested | Required, Historical | Legal company form | [{"virksomhedsformkode": 80, "kortBeskrivelse": "APS", "periode": {...}}] |
Status Values (virksomhedsstatus): - NORMAL - Normal operation (1,019 sample) - UNDER TVANGSOPLØSNING - Under forced dissolution (527) - TVANGSOPLØST - Forcibly dissolved (396) - UNDER KONKURS - Under bankruptcy (255) - OPLØST EFTER KONKURS - Dissolved after bankruptcy (253) - OPLØST EFTER ERKLÆRING - Dissolved by declaration (215) - UNDER FRIVILLIG LIKVIDATION - Under voluntary liquidation (82) - OPLØST EFTER FRIVILLIG LIKVIDATION - Dissolved after voluntary liquidation (77) - OPLØST EFTER FUSION - Dissolved after merger (37) - SLETTET - Deleted (23) - UDEN RETSVIRKNING - Without legal effect (22) - OPLØST EFTER SPALTNING - Dissolved after split (5) - UNDER REKONSTRUKTION - Under reconstruction (2) - UNDER REASSUMERING - Under reassumption (2)
Company Form Codes (virksomhedsform) - Top Values: - 10 - ENK (Enkeltmandsvirksomhed) - 909,223 companies - 80 - APS (Anpartsselskab) - 671,891 companies - 115 - FFO (Frivillig forening) - 165,959 companies - 15 - PMV (Personligt ejet Mindre Virksomhed) - 136,338 companies - 30 - I/S (Interessentskab) - 106,271 companies - 60 - A/S (Aktieselskab) - 95,806 companies - 110 - FOR (Forening) - 81,902 companies - 81 - IVS (Iværksætterselskab) - 64,814 companies
Query Paths:
Vrvirksomhed.virksomhedsstatus.status
Vrvirksomhed.virksomhedsform.virksomhedsformkode
Vrvirksomhed.virksomhedsform.kortBeskrivelse
Vrvirksomhed.virksomhedsform.langBeskrivelse
Industry Classification¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
hovedbranche | nested | Optional, Historical | Main industry code (DB07/NACE) | [{"branchekode": "620100", "branchetekst": "Computerprogrammering", "periode": {...}}] |
bibranche1 | nested | Optional, Historical | Secondary industry 1 | Same structure as hovedbranche |
bibranche2 | nested | Optional, Historical | Secondary industry 2 | Same structure as hovedbranche |
bibranche3 | nested | Optional, Historical | Secondary industry 3 | Same structure as hovedbranche |
Industry Nested Structure: - branchekode (keyword) - 6-digit industry code - branchetekst (text) - Industry description - periode.gyldigFra (date) - periode.gyldigTil (date) - sidstOpdateret (date)
Top Industry Codes: - 949900 - Andre organisationer og foreninger i.a.n. (101 sample) - 980000 - Uoplyst (73) - 620100 - Computerprogrammering (21) - 702200 - Virksomhedsrådgivning (33)
Lifecycle¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
livsforloeb | nested | Required, Historical | Company lifecycle periods | [{"periode": {"gyldigFra": "2020-01-01", "gyldigTil": null}}] |
Attributes¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
attributter | nested | Optional, Historical | Company attributes (capital, purpose, etc.) | [{"type": "KAPITAL", "vaerdier": [{"vaerdi": "125000.00"}], "periode": {...}}] |
Attribute Types (Top Values): - TEGNINGSREGEL - Signing rules (130 sample) - PSEUDOCVRNR - Pseudo CVR number flag (130) - REGNSKABSÅR_START - Financial year start (127) - REGNSKABSÅR_SLUT - Financial year end (127) - FORMÅL - Company purpose (127) - VEDTÆGT_SENESTE - Latest articles of association (123) - KAPITALVALUTA - Capital currency (115) - KAPITAL - Share capital (115) - ARKIV_REGISTRERINGSNUMMER - Archive registration number (110)
Attributes Nested Structure: - type (keyword) - Attribute type code - vaerdier (array) - Array of values - vaerdier.vaerdi (keyword) - The actual value - vaerditype (keyword) - Value data type - periode.gyldigFra (date) - periode.gyldigTil (date) - sidstOpdateret (date)
Participant Relations¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
deltagerRelation | nested | Optional, Historical | Relations to participants (owners, directors) | Complex structure - see participant section |
System Metadata¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
reklamebeskyttet | boolean | Required, Single | Marketing protection flag | true |
fejlRegistreret | boolean | Required, Single | Registration error flag | false |
fejlVedIndlaesning | boolean | Required, Single | Data loading error flag | false |
fejlBeskrivelse | text | Optional, Single | Error description | null |
dataAdgang | integer | Required, Single | Data access level (0=standard, 1=restricted) | 0 |
virkningsAktoer | keyword | Required, Single | Effect actor code | "R" |
sidstIndlaest | date | Required, Single | Last loaded timestamp | "2025-09-08T17:57:17.199+02:00" |
sidstOpdateret | date | Required, Single | Last updated timestamp | "2025-09-08T17:56:31.000+02:00" |
naermesteFremtidigeDato | date | Optional, Single | Next future date | null |
Deltager (Participants) Fields¶
Root Object: Vrdeltager¶
Core Identifiers¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
enhedsNummer | long | Required, Single | Participant unit number | 4000123456 |
enhedstype | keyword | Required, Single | Always "PERSON" or "VIRKSOMHED" | "PERSON" |
samtId | integer | Required, Single | Internal system ID | 98765 |
Personal Information¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
navne | nested | Required, Historical | Person/entity names | [{"navn": "John Doe", "periode": {...}}] |
binavne | nested | Optional, Historical | Alternative names | Same structure as navne |
Address Information¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
beliggenhedsadresse | nested | Optional, Historical | Primary address | Same structure as company addresses |
postadresse | nested | Optional, Historical | Postal address | Same structure as company addresses |
Company Relations¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
virksomhedSummariskRelation | nested | Optional, Multiple | Summary of company relations | [{"cvrNummer": 12345678, "organisationer": [...]}] |
VirksomhedSummariskRelation Structure: - cvrNummer (keyword) - Related company CVR - organisationer (array) - Organizations within company - organisationer.organisationstype (keyword) - Type (DIREKTION, LIKVIDATOR, etc.) - organisationer.medlemsData (array) - Member data - organisationer.medlemsData.rolle (keyword) - Role (DIREKTØR, BESTYRELSESMEDLEM, etc.) - organisationer.medlemsData.titel (text) - Title
System Metadata¶
Similar system fields as companies (reklamebeskyttet, fejlRegistreret, etc.)
Produktionsenhed (Production Units) Fields¶
Root Object: VrproduktionsEnhed¶
Core Identifiers¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
pNummer | keyword | Required, Single | P-number (unique identifier) | 1028076343 |
enhedsNummer | long | Required, Single | Internal unit number | 4009203577 |
enhedstype | keyword | Required, Single | Always "PRODUKTIONSENHED" | "PRODUKTIONSENHED" |
samtId | integer | Required, Single | Internal system ID | 31 |
Names and Identity¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
navne | nested | Required, Historical | Production unit names | [{"navn": "NordEx ApS", "periode": {...}}] |
Address Information¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
beliggenhedsadresse | nested | Required, Historical | Physical location | Same structure as company addresses |
postadresse | nested | Optional, Historical | Postal address | Same structure as company addresses |
Contact Information¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
telefonNummer | nested | Optional, Historical | Phone numbers | Same structure as company contact |
telefaxNummer | nested | Optional, Historical | Fax numbers | Same structure as company contact |
elektroniskPost | nested | Optional, Historical | Email addresses | Same structure as company contact |
Industry Classification¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
hovedbranche | nested | Optional, Historical | Main industry code | [{"branchekode": "494100", "branchetekst": "Vejgodstransport", "periode": {...}}] |
bibranche1 | nested | Optional, Historical | Secondary industry 1 | Same structure as hovedbranche |
bibranche2 | nested | Optional, Historical | Secondary industry 2 | Same structure as hovedbranche |
bibranche3 | nested | Optional, Historical | Secondary industry 3 | Same structure as hovedbranche |
brancheAnsvarskode | keyword | Optional, Single | Industry responsibility code | null |
Employment Data¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
aarsbeskaeftigelse | nested | Optional, Multiple | Annual employment data | [{"aar": 2014, "antalAarsvaerk": 1, "antalAnsatte": 1, "intervalKodeAntalAarsvaerk": "ANTAL_1_1"}] |
kvartalsbeskaeftigelse | nested | Optional, Multiple | Quarterly employment data | [{"aar": 2015, "kvartal": 2, "antalAarsvaerk": 1, "antalAnsatte": 0}] |
erstMaanedsbeskaeftigelse | nested | Optional, Multiple | Monthly employment replacement data | [{"aar": 2025, "maaned": 6, "antalAarsvaerk": 1.28, "antalAnsatte": 2}] |
Employment Nested Structure: - aar (integer) - Year - kvartal (integer) - Quarter (1-4, quarterly data only) - maaned (integer) - Month (1-12, monthly data only) - antalAarsvaerk (integer/scaled_float) - Full-time equivalent - antalAnsatte (integer) - Number of employees - antalInklusivEjere (integer) - Including owners - intervalKodeAntalAarsvaerk (keyword) - FTE interval code - intervalKodeAntalAnsatte (keyword) - Employee count interval - intervalKodeAntalInklusivEjere (keyword) - Owner-inclusive interval - sidstOpdateret (date)
Employment Interval Codes: - ANTAL_0_0 - Zero employees - ANTAL_1_1 - 1 employee - ANTAL_2_4 - 2-4 employees - ANTAL_5_9 - 5-9 employees - ANTAL_10_19 - 10-19 employees - ANTAL_20_49 - 20-49 employees - ANTAL_50_99 - 50-99 employees - ANTAL_100_199 - 100-199 employees - ANTAL_200_499 - 200-499 employees - ANTAL_500_999 - 500-999 employees - ANTAL_1000_ - 1000+ employees
Lifecycle and Relations¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
livsforloeb | nested | Required, Historical | Unit lifecycle periods | [{"periode": {"gyldigFra": "2022-03-08", "gyldigTil": null}}] |
virksomhedsrelation | nested | Required, Historical | Parent company relation | [{"cvrNummer": 43121774, "periode": {...}}] |
Additional Fields¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
attributter | nested | Optional, Historical | Additional attributes | [] |
deltagerRelation | nested | Optional, Historical | Participant relations (rarely used) | [] |
Metadata Object¶
| Field | Type | Cardinality | Description | Example |
|---|---|---|---|---|
produktionsEnhedMetadata | object | Required, Single | Current/latest values for easy querying | See metadata structure below |
ProductionsEnhedMetadata Structure: - nyesteNavn (object) - Latest name - nyesteBeliggenhedsadresse (object) - Latest address - nyesteHovedbranche (object) - Latest main industry - nyesteBibranche1 (object) - Latest secondary industry 1 - nyesteBibranche2 (object) - Latest secondary industry 2 (may be null) - nyesteBibranche3 (object) - Latest secondary industry 3 (may be null) - nyesteKontaktoplysninger (array) - Latest contact info array - nyesteCvrNummerRelation (long) - Latest parent CVR number - nyesteAarsbeskaeftigelse (object) - Latest annual employment - nyesteKvartalsbeskaeftigelse (object) - Latest quarterly employment - nyesteErstMaanedsbeskaeftigelse (object) - Latest monthly employment - sammensatStatus (keyword) - Combined status ("Aktiv", "Ophørt")
System Metadata¶
Same system fields as companies and participants.
Cross-Index Relationships¶
Company → Production Units¶
Relationship: One-to-many via CVR number
Query Pattern:
// Find production units for company CVR 43121774
{
"query": {
"term": {
"VrproduktionsEnhed.virksomhedsrelation.cvrNummer": "43121774"
}
}
}
Company → Participants¶
Relationship: Many-to-many via deltagerRelation
Participant → Companies¶
Relationship: Many-to-many via virksomhedSummariskRelation
Address Relationships¶
All three indices share the same address structure, allowing geographic queries across entities.
Query Path Reference¶
Elasticsearch Query Paths for ES 1.7.4¶
Company Fields¶
# Core identifiers
Vrvirksomhed.cvrNummer
Vrvirksomhed.enhedsNummer
# Names (requires nested query)
Vrvirksomhed.navne.navn
Vrvirksomhed.binavne.navn
# Status and form
Vrvirksomhed.virksomhedsstatus.status
Vrvirksomhed.virksomhedsform.virksomhedsformkode
# Industry
Vrvirksomhed.hovedbranche.branchekode
Vrvirksomhed.bibranche1.branchekode
# Address (requires nested query)
Vrvirksomhed.beliggenhedsadresse.vejnavn
Vrvirksomhed.beliggenhedsadresse.postnummer
Vrvirksomhed.beliggenhedsadresse.kommune.kommuneKode
# Contact (requires nested query)
Vrvirksomhed.telefonNummer.kontaktoplysning
Vrvirksomhed.elektroniskPost.kontaktoplysning
# Attributes (requires nested query)
Vrvirksomhed.attributter.type
Vrvirksomhed.attributter.vaerdier.vaerdi
# Lifecycle
Vrvirksomhed.livsforloeb.periode.gyldigFra
Vrvirksomhed.livsforloeb.periode.gyldigTil
Production Unit Fields¶
# Core identifiers
VrproduktionsEnhed.pNummer
VrproduktionsEnhed.enhedsNummer
# Names (requires nested query)
VrproduktionsEnhed.navne.navn
# Company relation
VrproduktionsEnhed.virksomhedsrelation.cvrNummer
# Employment data (requires nested query)
VrproduktionsEnhed.aarsbeskaeftigelse.aar
VrproduktionsEnhed.aarsbeskaeftigelse.antalAnsatte
VrproduktionsEnhed.erstMaanedsbeskaeftigelse.aar
VrproduktionsEnhed.erstMaanedsbeskaeftigelse.maaned
VrproduktionsEnhed.erstMaanedsbeskaeftigelse.antalAnsatte
# Metadata (direct access)
VrproduktionsEnhed.produktionsEnhedMetadata.sammensatStatus
VrproduktionsEnhed.produktionsEnhedMetadata.nyesteCvrNummerRelation
# Industry
VrproduktionsEnhed.hovedbranche.branchekode
VrproduktionsEnhed.hovedbranche.branchetekst
Participant Fields¶
# Core identifiers
Vrdeltager.enhedsNummer
# Names (requires nested query)
Vrdeltager.navne.navn
# Company relations
Vrdeltager.virksomhedSummariskRelation.cvrNummer
Vrdeltager.virksomhedSummariskRelation.organisationer.organisationstype
Nested Query Requirements¶
Fields marked as "nested" require nested queries in ES 1.7.4:
// Nested query example
{
"query": {
"nested": {
"path": "Vrvirksomhed.navne",
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.navne.navn": "Mærsk"
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "Vrvirksomhed.navne.periode.gyldigTil"
}
}
}
}
]
}
}
}
}
}
Data Types and Examples¶
Identifiers¶
// CVR numbers - 8 digits
"cvrNummer": 10103940
// P-numbers - 10 digits
"pNummer": "1028076343"
// Unit numbers - long integers
"enhedsNummer": 4009203577
// UUIDs for addresses
"adresseId": "7f9e85fa-14e3-4fe8-996e-f57efcc5c378"
Temporal Data¶
// Date format - ISO 8601
"gyldigFra": "2020-01-01"
"gyldigTil": null // null means currently valid
// Timestamp format - with timezone
"sidstOpdateret": "2025-09-08T17:56:31.000+02:00"
Address Examples¶
{
"vejnavn": "Rådhusstræde",
"vejkode": 6156,
"husnummerFra": 15,
"postnummer": 1466,
"postdistrikt": "København K",
"landekode": "DK",
"kommune": {
"kommuneKode": 101,
"kommuneNavn": "KØBENHAVN"
}
}
Employment Data Examples¶
// Integer values for annual/quarterly
"antalAarsvaerk": 1,
"antalAnsatte": 2
// Scaled float for monthly (with decimals)
"antalAarsvaerk": 1.28
// Interval codes
"intervalKodeAntalAnsatte": "ANTAL_2_4"
Contact Information Examples¶
{
"kontaktoplysning": "28403131", // Phone
"hemmelig": false
}
{
"kontaktoplysning": "info@company.dk", // Email
"hemmelig": false
}
{
"kontaktoplysning": "https://company.dk", // Website
"hemmelig": false
}
Temporal Data Patterns¶
Current vs Historical Values¶
Most fields store historical data with validity periods:
// Historical array
"navne": [
{
"navn": "Old Company Name",
"periode": {
"gyldigFra": "2010-01-01",
"gyldigTil": "2020-12-31"
}
},
{
"navn": "Current Company Name",
"periode": {
"gyldigFra": "2021-01-01",
"gyldigTil": null // null = currently valid
}
}
]
Querying Current Values¶
// Find companies with current name containing "Mærsk"
{
"query": {
"nested": {
"path": "Vrvirksomhed.navne",
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.navne.navn": "Mærsk"
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "Vrvirksomhed.navne.periode.gyldigTil"
}
}
}
}
]
}
}
}
}
}
Querying Historical Values¶
// Find companies that had specific status on a date
{
"query": {
"nested": {
"path": "Vrvirksomhed.virksomhedsstatus",
"query": {
"bool": {
"must": [
{
"term": {
"Vrvirksomhed.virksomhedsstatus.status": "NORMAL"
}
},
{
"range": {
"Vrvirksomhed.virksomhedsstatus.periode.gyldigFra": {
"lte": "2022-01-01"
}
}
},
{
"bool": {
"should": [
{
"bool": {
"must_not": {
"exists": {
"field": "Vrvirksomhed.virksomhedsstatus.periode.gyldigTil"
}
}
}
},
{
"range": {
"Vrvirksomhed.virksomhedsstatus.periode.gyldigTil": {
"gte": "2022-01-01"
}
}
}
]
}
}
]
}
}
}
}
}
Common Field Patterns¶
Standard Nested Object Pattern¶
Most temporal fields follow this pattern:
{
"fieldArray": [{
"primaryValue": "actual data",
"additionalField1": "supplementary data",
"periode": {
"gyldigFra": "2020-01-01",
"gyldigTil": null
},
"sidstOpdateret": "2020-01-01T10:00:00.000+01:00"
}]
}
Contact Information Pattern¶
All contact fields use this structure:
{
"contactType": [{
"kontaktoplysning": "the actual contact info",
"hemmelig": false,
"periode": {
"gyldigFra": "2020-01-01",
"gyldigTil": null
},
"sidstOpdateret": "2020-01-01T10:00:00.000+01:00"
}]
}
Address Pattern¶
All address fields share identical structure across all indices: - Same field names and types - Same nested kommune structure - Same validation and ID patterns - Allows consistent geographic queries
Employment Data Pattern (Production Units Only)¶
Three different granularities with similar structure: - aarsbeskaeftigelse - Annual data - kvartalsbeskaeftigelse - Quarterly data
- erstMaanedsbeskaeftigelse - Monthly data (most recent/detailed)
Industry Classification Pattern¶
Consistent across companies and production units:
{
"branchetype": [{
"branchekode": "123456", // 6-digit code
"branchetekst": "Description", // Human readable
"periode": { /* validity */ },
"sidstOpdateret": "..."
}]
}
Metadata vs Historical Pattern¶
Production units provide both: 1. Historical arrays - Complete change history 2. Metadata object - Current values for easy access - nyeste* fields contain latest values - No need for nested queries on metadata - Better performance for current-state queries
This field reference provides comprehensive documentation for all available fields across the three main CVR API indices, enabling developers to construct precise queries and understand the complete data model.