Komplet reference for SelskabsInfo CVR API. Opslag, søgning og berigelse af danske virksomhedsdata.
Tre trin for at lave dit første API-kald:
Opret en konto
Log ind eller opret en konto på SelskabsInfo.
Opret din API-nøgle
Gå til Mine API-nøgler i din profil. Klik "Opret nøgle" - nøglen vises kun én gang, så gem den sikkert.
Foretag dit første kald
Send en GET-request med din API-nøgle i Authorization-headeren:
curl -X GET "https://api.selskabsinfo.dk/v1/company/10150817" \
-H "Authorization: Bearer sk_live_your_api_key_here"Alle API-kald kræver en gyldig API-nøgle sendt via Authorization-headeren.
Authorization: Bearer sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6Opbevar din nøgle sikkert
API-nøglen vises kun ved oprettelse. Den gemmes som SHA-256 hash i vores database og kan ikke genskabes. Hold din nøgle hemmelig - del den ikke i klient-side kode eller offentlige repositories.
API-nøgler har formatet sk_live_ efterfulgt af 32 hexadecimale tegn:
sk_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
prefix 32 hex charactershttps://api.selskabsinfo.dk/v1Alle endpoints er relative til denne base URL. Kun GET-requests understøttes. Alle responses er JSON med UTF-8 encoding.
API Versioning
API'et versioneres via URL-path (/v1/). Nye felter kan tilføjes til eksisterende endpoints uden version-bump (additiv ændring). Breaking changes medfører en ny version (f.eks. /v2/). Ældre versioner understøttes i minimum 12 måneder efter introduktion af en ny version.
Alle succesfulde responses returnerer JSON med HTTP status 200. Fejl returneres ligeledes som JSON med et error-objekt (se Fejlkoder).
Content-Type
application/json; charset=utf-8
CORS
Fuld CORS-understøttelse - kan bruges direkte fra browsere (men skjul din API-nøgle!)
Encoding
UTF-8. Danske tegn (æ, ø, å) returneres direkte i JSON.
/v1/company/{cvr}Hent komplet virksomhedsprofil for et givet CVR-nummer. Returnerer basisdata som standard - brug include-parameteren til at tilføje yderligere datasektioner (ledelse, regnskab, retssager m.m.).
cvrstring10150817includestringmanagement,financialscurl "https://api.selskabsinfo.dk/v1/company/10150817" \
-H "Authorization: Bearer sk_live_..."curl "https://api.selskabsinfo.dk/v1/company/10150817?include=management,financials,ownership" \
-H "Authorization: Bearer sk_live_..."Basis-response felter:
| Felt | Type | Beskrivelse |
|---|---|---|
cvr | string | CVR-nummer |
navn | string | Aktivt virksomhedsnavn |
navneHistorik | array | Historik over navneændringer (navn, fraDato, tilDato) |
status | string | Nuværende status (AKTIV, OPLØST, etc.) |
statusHistorik | array | Historik over statusændringer |
virksomhedsform | object | Selskabsform (kode, beskrivelse) |
stiftelsesDato | string | Dato for stiftelse |
beliggenhedsadresse | object | Nuværende adresse (vejnavn, husnummerFra, etage, sidedoer, postnummer, postdistrikt, kommune, landekode, latitude, longitude) |
kontakt | object | Kontaktoplysninger (telefon, email, hjemmeside) |
hovedbranche | object | Hovedbranche (kode, beskrivelse) |
bibrancher | array | Sekundære brancher (op til 3, med kode og beskrivelse) |
antalAnsatte | number | Seneste antal ansatte |
antalAarsvaerk | number | Seneste antal årsværk |
medarbejderPeriode | string | Periode for medarbejdertal (f.eks. "2024-Q3") |
kapital | object | Registreret kapital (registreretKapital, valuta) |
tegningsregel | string | Tegningsregel |
formaal | string | Selskabets formål |
regnskabsperiode | object | Seneste regnskabsperiode |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
"navneHistorik": [
{ "navn": "COOP TRADING A/S", "fraDato": "2015-01-01", "tilDato": null }
],
"status": "AKTIV",
"statusHistorik": [
{ "status": "AKTIV", "fraDato": "2001-01-01", "tilDato": null }
],
"virksomhedsform": {
"kode": 80,
"beskrivelse": "Aktieselskab"
},
"stiftelsesDato": "2001-01-01",
"beliggenhedsadresse": {
"vejnavn": "Roskildevej",
"husnummerFra": 65,
"postnummer": 2620,
"postdistrikt": "Albertslund",
"kommune": "Albertslund",
"landekode": "DK",
"latitude": 55.6567,
"longitude": 12.3456
},
"kontakt": {
"telefon": "43868686",
"email": "info@coop.dk",
"hjemmeside": "https://coop.dk"
},
"hovedbranche": {
"kode": "461700",
"beskrivelse": "Agenturhandel med foedevarer, drikkevarer og tobak"
},
"bibrancher": [],
"antalAnsatte": 156,
"antalAarsvaerk": 148.5,
"medarbejderPeriode": "2024-Q3",
"kapital": {
"registreretKapital": 100000000,
"valuta": "DKK"
},
"tegningsregel": "Selskabet tegnes af bestyrelsens formand ...",
"formaal": "Selskabets formaal er ...",
"regnskabsperiode": { ... }
}/v1/searchSøg efter virksomheder efter navn eller CVR-nummer. Returnerer paginerede resultater med basisinfo. Understøtter fuzzy-matching og prefix-søgning.
qstringpageintegerperPageintegercurl "https://api.selskabsinfo.dk/v1/search?q=novo+nordisk&page=1&perPage=10" \
-H "Authorization: Bearer sk_live_..."{
"results": [
{
"cvr": "24256790",
"navn": "NOVO NORDISK A/S",
"status": "AKTIV",
"by": "Bagsværd",
"postnummer": 2880,
"branche": "Fremstilling af farmaceutiske præparater",
"branchekode": "212000",
"virksomhedsform": "A/S"
},
...
],
"total": 15,
"page": 1,
"perPage": 10
}/v1/person/{id}Hent personprofil med aktive og historiske virksomhedsrelationer, roller og adressehistorik. Kræver Starter-plan eller højere.
idinteger/v1/search/person eller i virksomhedens ledelsesdata (f.eks. direktion[].enhedsNummer).curl "https://api.selskabsinfo.dk/v1/person/4000068941" \
-H "Authorization: Bearer sk_live_..."Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
enhedsNummer | number | Personens unikke enhedsNummer i CVR-registret |
navn | string | null | Personens aktuelle fulde navn |
navneHistorik | array | Historik over navneændringer (navn, fraDato, tilDato) |
adresse | object | null | Nuværende adresse (vejnavn, husnummerFra, etage, sidedoer, postnummer, postdistrikt, kommune, landekode) |
adresseHistorik | array | Historik over adresseændringer med perioder |
aktiveRelationer | array | Virksomheder hvor personen har aktive roller |
aktiveRelationer[].virksomhedNavn | string | Virksomhedens navn |
aktiveRelationer[].cvr | string | CVR-nummer |
aktiveRelationer[].status | string | Virksomhedens status (AKTIV, OPLØST, etc.) |
aktiveRelationer[].roller | array | Roller i virksomheden (type, titel, fraDato, tilDato) |
historiskeRelationer | array | Virksomheder med afsluttede roller - samme struktur som aktiveRelationer |
antalVirksomheder | number | Samlet antal virksomheder (aktive + historiske) |
{
"enhedsNummer": 4000068941,
"navn": "Anders Mikkelsen Jensen",
"navneHistorik": [
{ "navn": "Anders Mikkelsen Jensen", "fraDato": "2010-01-01", "tilDato": null }
],
"adresse": {
"vejnavn": "Strandvejen",
"husnummerFra": 42,
"etage": null,
"sidedoer": null,
"postnummer": 2900,
"postdistrikt": "Hellerup",
"kommune": "Gentofte",
"landekode": "DK"
},
"adresseHistorik": [
{
"vejnavn": "Strandvejen",
"husnummerFra": 42,
"postnummer": 2900,
"postdistrikt": "Hellerup",
"landekode": "DK",
"fraDato": "2018-03-15",
"tilDato": null
}
],
"aktiveRelationer": [
{
"virksomhedNavn": "COOP TRADING A/S",
"cvr": "10150817",
"status": "AKTIV",
"roller": [
{
"type": "DIREKTION",
"titel": "ADMINISTRERENDE DIREKTØR",
"fraDato": "2020-06-01",
"tilDato": null
}
]
}
],
"historiskeRelationer": [
{
"virksomhedNavn": "OLD COMPANY ApS",
"cvr": "87654321",
"status": "OPLØST",
"roller": [
{
"type": "DIREKTION",
"titel": "DIREKTØR",
"fraDato": "2015-01-01",
"tilDato": "2019-12-31"
}
]
}
],
"antalVirksomheder": 2
}Persondata hentes direkte fra CVR-registrets deltager-index. Response caches i 1 time. Resultater inkluderer alle virksomhedsrelationer - både aktive og historiske - med detaljerede rollebeskrivelser.
/v1/search/personSøg efter personer i CVR-registret efter navn. Returnerer detaljerede resultater inkl. adresse, navnehistorik og virksomhedsrelationer. Kræver Starter-plan eller højere. Understøtter fuzzy-matching og prefix-søgning.
qstringlimitintegercurl "https://api.selskabsinfo.dk/v1/search/person?q=Anders+Jensen&limit=5" \
-H "Authorization: Bearer sk_live_..."Response-felter per resultat:
| Felt | Type | Beskrivelse |
|---|---|---|
enhedsNummer | number | Personens unikke enhedsNummer (brug til /v1/person-opslag) |
navn | string | Personens aktuelle fulde navn |
adresse | object | null | Nuværende adresse (vejnavn, husnummerFra, etage, sidedoer, postnummer, postdistrikt, landekode) |
navneHistorik | array | Historik over navneændringer (navn, fraDato, tilDato) |
aktiveRelationer | array | Virksomheder med aktive roller (virksomhedNavn, cvr, roller[]) |
historiskeRelationer | array | Virksomheder med afsluttede roller |
antalAktiveRelationer | number | Antal virksomheder med aktive roller |
antalHistoriskeRelationer | number | Antal virksomheder med afsluttede roller |
{
"results": [
{
"enhedsNummer": 4000068941,
"navn": "Anders Mikkelsen Jensen",
"adresse": {
"vejnavn": "Strandvejen",
"husnummerFra": 42,
"etage": null,
"sidedoer": null,
"postnummer": 2900,
"postdistrikt": "Hellerup",
"landekode": "DK"
},
"navneHistorik": [
{ "navn": "Anders Mikkelsen Jensen", "fraDato": "2010-01-01", "tilDato": null }
],
"aktiveRelationer": [
{
"virksomhedNavn": "COOP TRADING A/S",
"cvr": "10150817",
"roller": [
{
"type": "DIREKTION",
"titel": "ADMINISTRERENDE DIREKTØR",
"fraDato": "2020-06-01",
"tilDato": null,
"aktiv": true
}
]
}
],
"historiskeRelationer": [],
"antalAktiveRelationer": 1,
"antalHistoriskeRelationer": 0
}
],
"total": 1
}Person-søgeresultater inkluderer virksomhedsrelationer med roller - dette giver dig mulighed for at identificere personen korrekt og se deres aktuelle engagement, uden behov for et ekstra /v1/person-kald. Hvert roller-objekt inkluderer et aktiv-felt for nem filtrering.
Brug include-parameteren på /v1/company/{cvr} for at tilføje valgfrie datasektioner. Flere sektioner adskilles med komma.
| Include | Response-felter | Min. plan |
|---|---|---|
management | direktion, bestyrelse, stiftere | Free |
financials | regnskabsdata - detaljeret regnskabsdata | Starter |
courtData | retssager, myndighedssager | Starter |
ownership | ejere - legale og ultimative ejere | Pro |
subsidiaries | datterselskaber | Pro |
creditRisk | kreditrisiko - SI-Vurdering kreditrisiko-score (14-faktor model) | Starter |
capital | kapitalhaendelser - kapitalforhøjelser, stiftelse, nedsættelser med ejerskab | Starter |
curl "https://api.selskabsinfo.dk/v1/company/10150817?include=management,financials,ownership,courtData" \
-H "Authorization: Bearer sk_live_..."Hvis du anmoder om en include, som din plan ikke dækker, returneres en 403 tier_restricted-fejl med besked om hvilken plan der kræves.
Tilføjer ledelsesdata: direktion, bestyrelse og stiftere. Tilgængelig på alle planer inkl.
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
direktion | array | Medlemmer af direktionen |
direktion[].navn | string | Fulde navn på direktøren |
direktion[].titel | string | null | Funktionstitel (f.eks. "ADMINISTRERENDE DIREKTØR") |
direktion[].fraDato | string | null | Tiltrædelsesdato (ISO 8601) |
direktion[].tilDato | string | null | Fratrædelsesdato (null = nuværende) |
direktion[].enhedsNummer | number | null | Personens enhedsNummer (brug til /v1/person-opslag) |
bestyrelse | array | Bestyrelsesmedlemmer - samme feltstruktur som direktion |
stiftere | array | Stiftere af selskabet |
stiftere[].navn | string | Stifterens navn |
stiftere[].cvr | string | undefined | CVR-nummer, hvis stifteren er en virksomhed |
stiftere[].enhedsNummer | number | null | EnhedsNummer for stifteren |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"direktion": [
{
"navn": "Michael Kristian Friis",
"titel": "ADMINISTRERENDE DIREKTØR",
"fraDato": "2020-06-01",
"tilDato": null,
"enhedsNummer": 4000012345
}
],
"bestyrelse": [
{
"navn": "Jette Sørensen",
"titel": "FORMAND",
"fraDato": "2019-04-15",
"tilDato": null,
"enhedsNummer": 4000067890
},
{
"navn": "Anders Nielsen",
"titel": "NÆSTFORMAND",
"fraDato": "2021-03-01",
"tilDato": null,
"enhedsNummer": 4000011223
}
],
"stiftere": [
{
"navn": "FDB A.M.B.A.",
"cvr": "12345678",
"enhedsNummer": 4000099887
}
]
}Tilføjer detaljeret regnskabsdata hentet fra virksomhedens seneste årsrapporter. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
regnskabsdata | object | null | Regnskabsdata fra seneste årsrapporter. Null hvis ingen data tilgængelig. |
regnskabsdata.hasRealData | boolean | Om der blev fundet faktiske regnskabsdata |
regnskabsdata.financialReports | array | Metadata om tilgængelige årsrapporter |
regnskabsdata.financialData | array | Parsede regnskabstal per regnskabsperiode |
financialData[].periode | string | Regnskabsperiode (f.eks. "2023-01-01 - 2023-12-31") |
financialData[].nettoomsaetning | number | null | Nettoomsætning i DKK |
financialData[].bruttofortjeneste | number | null | Bruttofortjeneste i DKK |
financialData[].driftsresultat | number | null | Driftsresultat (EBITDA) i DKK |
financialData[].resultatFoerSkat | number | null | Resultat før skat i DKK |
financialData[].aaretsResultat | number | null | Årets resultat i DKK |
financialData[].egenkapital | number | null | Egenkapital i DKK |
financialData[].statusBalance | number | null | Balance (aktiver i alt) i DKK |
financialData[].personaleomkostninger | number | null | Personaleomkostninger i DKK |
financialData[].likvideBehoelninger | number | null | Likvide beholdninger i DKK |
financialData[].gaeldsforpligtelser | number | null | Gældsforpligtelser i DKK |
financialData[].valuta | string | Valuta (altid "DKK" - konverteret automatisk) |
Regnskabsdata indeholder mange flere detaljerede felter end vist ovenfor, bl.a. anlægsaktiver, omsætningsaktiver, gæld, hensættelser, egenkapitaldetaljer m.m. Se det fulde eksempel nedenfor.
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"regnskabsdata": {
"hasRealData": true,
"financialReports": [ ... ],
"financialData": [
{
"periode": "2023-01-01 - 2023-12-31",
"nettoomsaetning": 8456000000,
"bruttofortjeneste": 523000000,
"driftsresultat": 98000000,
"resultatAfPrimaerDrift": 98000000,
"resultatFoerSkat": 112000000,
"aaretsResultat": 87000000,
"personaleomkostninger": 245000000,
"afskrivninger": 42000000,
"finansielleIndtaegter": 18000000,
"finansielleOmkostninger": 4000000,
"skatAfAaretsResultat": 25000000,
"statusBalance": 3400000000,
"anlaegsaktiverValue": 1800000000,
"omsaetningsaktiver": 1600000000,
"varebeholdninger": 320000000,
"tilgodehavender": 890000000,
"likvideBehoelninger": 390000000,
"egenkapital": 1250000000,
"gaeldsforpligtelser": 2150000000,
"langfristetGaeld": 800000000,
"kortfristetGaeld": 1350000000,
"virksomhedskapital": 100000000,
"overfoertResultat": 1150000000,
"valuta": "DKK",
"originalValuta": "DKK"
}
]
}
}Ikke alle virksomheder offentliggør detaljeret regnskabsdata. Felter kan være null hvis data ikke er tilgængelig i årsrapporten. Enkeltmandsvirksomheder og små selskaber offentliggør typisk færre nøgletal. Udenlandsk valuta konverteres automatisk til DKK.
Tilføjer retssager og myndighedssager. Data indsamles fra danske domstole og 6 danske myndigheder. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
retssager | array | Retssager fra danske domstole hvor virksomheden nævnes |
retssager[].id | number | Unikt sags-id |
retssager[].case_number | string | Sagsnummer |
retssager[].court | string | Domstolskode |
retssager[].court_name | string | Domstolsnavn (f.eks. "Københavns Byret") |
retssager[].case_type | string | Sagstype (f.eks. "civil", "insolvens") |
retssager[].hearing_date | string | Retsdato (ISO 8601) |
retssager[].hearing_time_start | string | null | Starttidspunkt for retsmøde (f.eks. "09:30") |
retssager[].hearing_time_end | string | null | Sluttidspunkt for retsmøde |
retssager[].courtroom | string | null | Retssal |
retssager[].is_public | boolean | Om retsmødet er offentligt |
retssager[].case_description | string | null | Beskrivelse af sagen |
retssager[].judges | string | null | Dommer(e) |
retssager[].plaintiffs | string | null | Sagsanlæggere |
retssager[].defendants | string | null | Sagssøgte |
retssager[].source_url | string | null | Kilde-URL fra domstolens hjemmeside |
myndighedssager | object | Sager fra danske myndigheder, grupperet per myndighed |
myndighedssager.arbejdstilsynet | array | Sager fra Arbejdstilsynet |
myndighedssager.datatilsynet | array | Sager fra Datatilsynet |
myndighedssager.finanstilsynet | array | Sager fra Finanstilsynet |
myndighedssager.foedevarestyrelsen | array | Sager fra Fødevarestyrelsen |
myndighedssager.forbrugerombudsmanden | array | Sager fra Forbrugerombudsmanden |
myndighedssager.sikkerhedsstyrelsen | array | Sager fra Sikkerhedsstyrelsen |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"retssager": [
{
"id": 12345,
"case_number": "BS-12345/2024",
"court": "KBHBY",
"court_name": "Københavns Byret",
"case_type": "civil",
"hearing_date": "2024-11-15",
"hearing_time_start": "09:30",
"hearing_time_end": "11:00",
"courtroom": "Retssal 4",
"is_public": true,
"case_description": "Erstatningssag",
"judges": "Dommer Hansen",
"plaintiffs": "COOP TRADING A/S",
"defendants": "Leverandør ApS",
"source_url": "https://domstol.dk/..."
}
],
"myndighedssager": {
"arbejdstilsynet": [
{
"cvr_number": "10150817",
"company_name": "COOP TRADING A/S",
"case_date": "2024-06-10",
"case_type": "Påbud",
"description": "Påbud om ..."
}
],
"foedevarestyrelsen": [
{
"company_name": "COOP TRADING A/S",
"inspection_date": "2024-08-20",
"result": "Indskærpelse",
"description": "..."
}
]
}
}Myndighedssager returneres kun for de myndigheder, hvor der faktisk er fundet sager. Tomme myndigheder udelades fra response.
Tilføjer ejerskabsdata: legale ejere, reelle ejere og stiftere med ejerandele. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
ejerskab | object | Container for ejerskabsdata |
ejerskab.ejere | array | Liste af ejere (legale og reelle) |
ejerskab.antalEjere | number | Antal ejere |
ejerskab.ejere[].navn | string | Ejerens navn |
ejerskab.ejere[].type | string | "virksomhed" eller "person" |
ejerskab.ejere[].cvr | string | undefined | CVR-nummer, hvis ejeren er en virksomhed |
ejerskab.ejere[].enhedsNummer | string | undefined | EnhedsNummer for ejeren |
ejerskab.ejere[].ejerandel | number | undefined | Ejerandel i procent (f.eks. 51.0) |
ejerskab.ejere[].ejertype | string | Ejerrelation: REEL_EJER, LEGAL_EJER, EJER, STIFTER, FULDT_ANSVARLIG_DELTAGER |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"ejerskab": {
"ejere": [
{
"navn": "COOP AMBA",
"type": "virksomhed",
"cvr": "30899849",
"enhedsNummer": "4000034567",
"ejerandel": 100.0,
"ejertype": "LEGAL_EJER"
},
{
"navn": "Peter Guldager",
"type": "person",
"enhedsNummer": "4000078901",
"ejerandel": 25.0,
"ejertype": "REEL_EJER"
}
],
"antalEjere": 2
}
}Tilføjer datterselskaber - virksomheder der ejes af den pågældende virksomhed. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
datterselskaber | array | Liste af datterselskaber (kun aktive virksomheder) |
datterselskaber[].cvr | string | CVR-nummer på datterselskabet |
datterselskaber[].enhedsNummer | number | Datterselskabets enhedsNummer |
datterselskaber[].name | string | Navn på datterselskabet |
datterselskaber[].address | string | Adresse på datterselskabet |
datterselskaber[].status | string | Datterselskabets status |
datterselskaber[].ownershipPercentage | string | null | Ejerandel (f.eks. "75%", "50-66%") |
datterselskaber[].votingRights | string | null | Stemmerettigheder (f.eks. "75%") |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"datterselskaber": [
{
"cvr": "34567890",
"enhedsNummer": 12345678,
"name": "COOP LOGISTICS ApS",
"address": "Roskildevej 65, 2620 Albertslund",
"status": "NORMAL",
"ownershipPercentage": "100%",
"votingRights": "100%"
},
{
"cvr": "45678901",
"enhedsNummer": 23456789,
"name": "COOP IMPORT A/S",
"address": "Industrivej 10, 2630 Taastrup",
"status": "NORMAL",
"ownershipPercentage": "50-66%",
"votingRights": "50-66%"
}
]
}Tilføjer SI-Vurdering kreditrisiko-score baseret på en 14-faktor model. Inkluderer risikoscore (0–10), risikoniveau, kreditanbefaling, detaljerede faktorer, advarsler og kritiske flags. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
kreditrisiko.score | number | Samlet risikoscore (0–10, højere = bedre) |
kreditrisiko.scoreOutOf | number | Altid 10 (maks. score) |
kreditrisiko.risikoniveau | string | "Lav risiko" | "Medium risiko" | "Høj risiko" | "Ekstrem risiko" |
kreditrisiko.kreditanbefaling | string | Anbefaling: "Normal kredit" | "Begrænset kredit" | "Minimalt kredit" | "Ingen kredit anbefalet" |
kreditrisiko.faktorer | object | 14 individuelle risikofaktorer med score, vægt og detaljer |
kreditrisiko.advarsler | array | Liste af advarsler (tekststrenge) |
kreditrisiko.kritiskeFlags | array | Kritiske risikoindikatorer |
kreditrisiko.burnRate | object | Burn rate analyse: måneder til nul egenkapital, severity mv. |
kreditrisiko.isCapped | boolean | Om scoren er begrænset af en cap-regel |
kreditrisiko.scoreBegrænsning | object | null | Eventuel cap med value og reason |
kreditrisiko.groupCompanyStatus | object | Koncernselskabsanalyse (type, confidence, indikatorer) |
{
"cvr": "10150817",
"navn": "COOP TRADING A/S",
...
"kreditrisiko": {
"score": 7.2,
"scoreOutOf": 10,
"risikoniveau": "Lav risiko",
"kreditanbefaling": "Normal kredit",
"faktorer": {
"status": { "score": 10, "weight": 0, "details": "Aktiv virksomhed" },
"virksomhedsform": { "score": 8, "weight": 3.1, "details": "A/S med begrænset hæftelse" },
"oekonomi": { "score": 6.8, "weight": 39.2, "details": "..." },
"revisor": { "score": 9, "weight": 12.4, "details": "Stabil revisor" },
"retssager": { "score": 10, "weight": 0, "details": "Ingen retssager fundet" }
},
"advarsler": [],
"kritiskeFlags": [],
"burnRate": {
"monthsToZero": null,
"equity": 150000000,
"annualProfit": 25000000,
"severity": "growing"
},
"isCapped": false,
"groupCompanyStatus": {
"isGroupCompany": true,
"type": "subsidiary",
"confidence": "high"
}
}
}Tilføjer komplet kapitalhistorik: stiftelse, kapitalforhøjelser, kapitalnedsættelser og tranche-events. Inkluderer kurs, tegningsbeløb, indbetalingstype, post-money valuation og ejerskabs-snapshot for hver hændelse. Kræver
Response-felter:
| Felt | Type | Beskrivelse |
|---|---|---|
kapitalhaendelser | object | Container for kapitalhistorik |
kapitalhaendelser.haendelser | array | Kronologisk liste af kapitalhændelser |
kapitalhaendelser.antalHaendelser | number | Antal hændelser |
kapitalhaendelser.nuværendeKapital | number | null | Nuværende registreret kapital |
kapitalhaendelser.valuta | string | Valuta (typisk "DKK") |
Felter per hændelse:
| Felt | Type | Beskrivelse |
|---|---|---|
dato | string | Dato for hændelsen (ISO 8601, f.eks. "2024-01-22") |
type | string | stiftelse | kapitalforhøjelse | kapitalnedsættelse |
kapitalFoer | number | null | Selskabskapital før hændelsen (DKK) |
kapitalEfter | number | Selskabskapital efter hændelsen (DKK) |
aendring | number | Nominel ændring i DKK (positiv = forhøjelse, negativ = nedsættelse) |
valuta | string | Valuta (typisk "DKK") |
kurs | number | undefined | Tegningskurs (100 = pari, >100 = overkurs). F.eks. kurs 2180 = pris 21,80 kr. per nom. 1 kr. |
tegningsbeloeb | number | null | Samlet tegningsbeløb i DKK (nominalÆndring × kurs/100) |
postMoneyValuation | number | null | Estimeret post-money valuation (kapitalEfter × kurs/100). Kun ved overkurs. |
indbetalingstype | string | null | "Kontant indbetaling" | "Apportindskud" | "Gældskonvertering" |
ejerskab | array | undefined | Ejerskabs-snapshot på tidspunktet (navn, ejerandel, type, cvr, enhedsNummer) |
erTranche | boolean | undefined | True hvis dette er en del af en multi-tranche hændelse |
trancheNummer | number | undefined | Tranche-nummer (1-baseret) inden for gruppen |
antalTrancher | number | undefined | Antal trancher på samme dato |
{
"cvr": "41791013",
"navn": "EKSEMPEL STARTUP ApS",
...
"kapitalhaendelser": {
"haendelser": [
{
"dato": "2018-11-20",
"type": "stiftelse",
"kapitalFoer": null,
"kapitalEfter": 40000,
"aendring": 40000,
"valuta": "DKK"
},
{
"dato": "2020-06-15",
"type": "kapitalforhøjelse",
"kapitalFoer": 40000,
"kapitalEfter": 52000,
"aendring": 12000,
"valuta": "DKK",
"kurs": 833.33,
"tegningsbeloeb": 99999.6,
"postMoneyValuation": 433331.6,
"indbetalingstype": "Kontant indbetaling",
"ejerskab": [
{
"navn": "Stifter Holding ApS",
"ejerandel": "66-90%",
"type": "virksomhed",
"cvr": "41234567"
},
{
"navn": "Investor Ventures ApS",
"ejerandel": "10-15%",
"type": "virksomhed",
"cvr": "42345678"
}
]
},
{
"dato": "2023-03-01",
"type": "kapitalforhøjelse",
"kapitalFoer": 52000,
"kapitalEfter": 62000,
"aendring": 10000,
"valuta": "DKK",
"kurs": 2180.5,
"tegningsbeloeb": 218050,
"postMoneyValuation": 1351910,
"indbetalingstype": "Kontant indbetaling",
"erTranche": true,
"trancheNummer": 1,
"antalTrancher": 2,
"ejerskab": [
{
"navn": "Akasha Ventures ApS",
"ejerandel": "33-50%",
"type": "virksomhed",
"cvr": "43456789"
},
{
"navn": "ALL GAS NO BRAKES ApS",
"ejerandel": "33-50%",
"type": "virksomhed",
"cvr": "44567890"
},
{
"navn": "L.M.F HOLDING ApS",
"ejerandel": "5-10%",
"type": "virksomhed",
"cvr": "45678901"
}
]
},
{
"dato": "2023-03-01",
"type": "kapitalforhøjelse",
"kapitalFoer": 62000,
"kapitalEfter": 86251,
"aendring": 24251,
"valuta": "DKK",
"kurs": 2180.5,
"tegningsbeloeb": 528916,
"erTranche": true,
"trancheNummer": 2,
"antalTrancher": 2
}
],
"antalHaendelser": 4,
"nuværendeKapital": 86251,
"valuta": "DKK"
}
}Vigtige bemærkninger om kapitaldata
kapitalforhold).postMoneyValuation er et estimat baseret på kurs × kapital - den faktiske valuation kan afvige.Alle fejl returneres som JSON med en error-object:
{
"error": {
"code": "invalid_api_key",
"message": "Missing or malformed API key. Use: Authorization: Bearer sk_live_..."
}
}| HTTP Status | Kode | Beskrivelse |
|---|---|---|
| 400 | invalid_cvr | CVR-nummeret er ikke gyldigt (skal være præcis 8 cifre) |
| 400 | invalid_query | Søgeord for kort (min. 2 tegn) |
| 401 | invalid_api_key | Ugyldig eller manglende API-nøgle |
| 401 | key_revoked | API-nøglen er tilbagekaldt |
| 403 | tier_restricted | Din plan giver ikke adgang til den ønskede funktion |
| 404 | not_found | Ingen virksomhed eller person fundet |
| 405 | method_not_allowed | Kun GET-metode er tilladt |
| 400 | invalid_include | Ukendt include-navn - tjek stavning mod listen i Include-system |
| 429 | monthly_limit_exceeded | Månedlig kvote opbrugt - nulstilles den 1. i næste måned |
| 500 | internal_error | Intern fejl - prøv igen eller kontakt support |
| 502 | upstream_error | Datakilde svarer ikke - prøv igen om lidt |
| 503 | service_unavailable | Datakilde midlertidigt utilgængelig (circuit breaker aktiv) |
API'et håndhæver to typer begrænsninger:
Månedlig kvote
Hvert API-kald tæller mod din månedlige kvote. Hver include tæller som et ekstra kald. F.eks. tæller ?include=management,financials som 3 kald (1 + 2 includes). Kvoten nulstilles automatisk den 1. i hver måned (UTC). Overskridelse returnerer 429 monthly_limit_exceeded.
Op til 30 req/s
Alle planer har op til 30 requests per sekund.
Alle API-responses inkluderer følgende HTTP-headers:
| Header | Værdi | Beskrivelse |
|---|---|---|
| Content-Type | application/json | Alle responses er JSON |
| Cache-Control | public, max-age=300|3600 | Søgeresultater caches i 5 min. Virksomheds- og persondata caches i 1 time. |
| Access-Control-Allow-Origin | * | CORS er aktiveret for alle origins - API'et kan bruges fra browsere |
| Access-Control-Allow-Methods | GET, OPTIONS | Kun GET og preflight (OPTIONS) er tilladt |
Selvom CORS er aktiveret, bør du aldrig eksponere din API-nøgle i klient-side JavaScript. Brug en server-side proxy til at beskytte din nøgle. Resultaterne kan dog caches i browseren vha. Cache-Control-headeren.
Søgeendpoints (/v1/search) returnerer paginerede resultater. Brug page og perPage til at navigere.
pageintegerperPageinteger/v1/search/person bruges limit i stedet (standard: 10, max: 50).Response-felter for paginerede endpoints:
| Felt | Type | Beskrivelse |
|---|---|---|
results | array | Array af matchende resultater for den aktuelle side |
total | number | Totalt antal matchende resultater på tværs af alle sider |
page | number | Nuværende sidenummer |
perPage | number | Antal resultater per side |
curl "https://api.selskabsinfo.dk/v1/search?q=consulting&page=2&perPage=10" \
-H "Authorization: Bearer sk_live_..."| Funktion | Free | Starter | Pro | Business |
|---|---|---|---|---|
| Pris (md.) | 0 kr | 149 kr | 449 kr | 999 kr |
| Kald / måned | 500 | 10.000 | 75.000 | 300.000 |
| Rate limit | 30 req/s | |||
| /v1/company | ||||
| /v1/search | ||||
| /v1/person | ||||
| /v1/search/person | ||||
| include: management | ||||
| include: financials | ||||
| include: courtData | ||||
| include: ownership | ||||
| include: subsidiaries | ||||
| include: creditRisk | ||||
| include: capital | ||||
Spar 20% med årlig betaling. Se alle prisdetaljer.
Test API'et direkte her - vælg endpoint, indtast et CVR-nummer eller søgeord, og se det rigtige svar.
curl -X GET \
"https://api.selskabsinfo.dk/v1/company/10150817?include=management,financials" \
-H "Authorization: Bearer sk_live_your_api_key_here"curl -X GET \
"https://api.selskabsinfo.dk/v1/search?q=novo+nordisk&perPage=5" \
-H "Authorization: Bearer sk_live_your_api_key_here"const API_KEY = 'sk_live_your_api_key_here';
const BASE_URL = 'https://api.selskabsinfo.dk/v1';
// Hent virksomhed
async function getCompany(cvr, includes = []) {
const params = includes.length ? '?include=' + includes.join(',') : '';
const res = await fetch(BASE_URL + '/company/' + cvr + params, {
headers: { 'Authorization': 'Bearer ' + API_KEY },
});
if (!res.ok) {
const err = await res.json();
throw new Error(err.error?.message || 'API request failed');
}
return res.json();
}
// Søg virksomheder
async function searchCompanies(query, page = 1, perPage = 25) {
const params = new URLSearchParams({ q: query, page, perPage });
const res = await fetch(BASE_URL + '/search?' + params, {
headers: { 'Authorization': 'Bearer ' + API_KEY },
});
if (!res.ok) {
const err = await res.json();
throw new Error(err.error?.message || 'API request failed');
}
return res.json();
}
// Brug
const company = await getCompany('10150817', ['management', 'financials']);
console.log(company.navn, '-', company.antalAnsatte, 'ansatte');
const results = await searchCompanies('novo nordisk');
console.log('Fandt', results.total, 'virksomheder');import requests
API_KEY = "sk_live_your_api_key_here"
BASE_URL = "https://api.selskabsinfo.dk/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
def get_company(cvr: str, includes: list[str] | None = None) -> dict:
"""Hent virksomhed med valgfrie datasektioner."""
params = {}
if includes:
params["include"] = ",".join(includes)
resp = requests.get(f"{BASE_URL}/company/{cvr}", headers=HEADERS, params=params)
resp.raise_for_status()
return resp.json()
def search_companies(query: str, page: int = 1, per_page: int = 25) -> dict:
"""Søg virksomheder efter navn eller CVR."""
resp = requests.get(
f"{BASE_URL}/search",
headers=HEADERS,
params={"q": query, "page": page, "perPage": per_page},
)
resp.raise_for_status()
return resp.json()
# Eksempel
company = get_company("10150817", includes=["management", "financials"])
print(f"{company['navn']} - {company.get('antalAnsatte', 'N/A')} ansatte")
results = search_companies("novo nordisk")
for r in results["results"]:
print(f" {r['cvr']} {r['navn']} ({r['status']})")SelskabsInfo CVR API er et standard REST-API med JSON-responses, som nemt kan integreres i ethvert sprog og framework. Her er nogle tips til populære platforme:
JavaScript / TypeScript
Brug native fetch eller axios. Ideelt til Next.js, Node.js og Deno. Se kodeeksempel.
Python
Brug requests eller httpx. Perfekt til dataanalyse, scraping og automatisering. Se kodeeksempel.
.NET / C#
Brug HttpClient med System.Text.Json. Tilføj Authorization header via DefaultRequestHeaders.
No-Code / Zapier
Brug en HTTP-action i Zapier, Make eller n8n. Sæt Authorization-headeren og parse JSON-responsen direkte i dit workflow.
Seneste ændringer til API'et. Nye felter tilføjes løbende uden version-bump (additive ændringer). Breaking changes annonceres på forhånd.
capital include lanceret
Ny capital include med komplet kapitalhistorik: forhøjelser, nedsættelser, tranche-events, kurs, tegningsbeløb, post-money valuation og ejerskabs-snapshots. Tilgængelig fra Starter-planen.
creditRisk include tilføjet
Ny creditRisk include med SI-Vurdering 14-faktor kreditrisiko-model. Tilgængelig fra Starter-planen.
Person-endpoints lanceret
Nye endpoints: /v1/person/{id} og /v1/search/person med detaljerede relationer og rollehistorik.
CVR API v1 lanceret
Initial release med virksomhedsopslag, søgning, management, financials, courtData, ownership og subsidiaries includes.
Opret en gratis konto og få 500 API-kald per måned med det samme. Opgradér når du har brug for mere.