API docs
Autentificér med en bearer API-nøgle. Alle endpoints er read-only og returnerer JSON.
Autentificering
Send din API-nøgle i Authorization-headeren.
Authorization: Bearer <api_key>
Kom hurtigt i gang
Kopiér en af følgende snippets og test API'en med det samme.
curl -H "Authorization: Bearer <api_key>" \ "https://cvrhub.dk/api/v1/company/38004441"
Søg virksomheder
curl -H "Authorization: Bearer <api_key>" \ "https://cvrhub.dk/api/v1/search?query=software&limit=20"
Autocomplete
curl -H "Authorization: Bearer <api_key>" \ "https://cvrhub.dk/api/v1/autocomplete?query=software&limit=10"
Kvoter + rate limits
Free: 250 req/måned. Betalte planer: 100.000/måned. Rate limits håndhæves pr. API‑nøgle.
Forbrug og afregning
Søgning/ autocomplete tæller pr. resultat (fx limit=20 → op til 20 req).
Test mode
Tilføj ?test=true for at teste endpoints uden at bruge requests. Svarer altid med Hagbarths ApS (CVR 38004441).
Test mode
Tilføj ?test=true for at teste endpoints uden at bruge requests. Svarer altid med Hagbarths ApS (CVR 38004441).
/api/v1/company/38004441?test=true
{
"data": {
"cvr": "38004441",
"name": "Hagbarths ApS",
"addresses": [
{
"vejnavn": "Kystvejen",
"husnummerFra": "120",
"postnummer": "4400",
"kommunenavn": "Kalundborg"
}
]
},
"test": true
}GET /api/v1/company/:cvr
Fetch the latest merged company snapshot. Use ?asOf=YYYY-MM-DD for historical state.
https://cvrhub.dk/api/v1/company/38004441
GET /api/v1/search
Full-text search with cursor-based pagination.
https://cvrhub.dk/api/v1/search?query=software&limit=20
GET /api/v1/autocomplete
Typeahead suggestions. Returns CVR + company name.
https://cvrhub.dk/api/v1/autocomplete?query=novo&limit=10
GET /api/v1/status
Returns your plan, quota, remaining returns, and rate limit info.
https://cvrhub.dk/api/v1/status
Pagination
Cursor er en 'fortsæt herfra'-token. Brug meta.nextCursor fra svaret, og send den tilbage som ?cursor=... sammen med limit. Hvis nextCursor er null, er der ikke flere resultater.
/api/v1/search?query=software&limit=100 /api/v1/search?query=software&limit=100&cursor=eyJvZmZzZXQiOiIxMDAifQ==
Fejlformat
Fejl returnerer error.code og error.message. 402 bruges ved kvote overskredet.
{
"error": { "code": "quota_exceeded", "message": "Monthly quota exceeded." }
}Svarformat
Succesfulde svar returnerer data og meta. Fejl returnerer et error-objekt med code og message. data / meta / error.
- 200, 400, 401, 403, 404, 429, 500
- 402 for quota exceeded
- Requests tæller pr. element (fx 20 resultater = 20 requests).
Retries og timeouts
Hvis du får timeouts eller midlertidige fejl, så prøv igen.
- Genprøv 2-3 gange med eksponentiel backoff.
- Undgå at spamme samme endpoint hurtigere end 1/s.
- Hold øje med 429 (rate limit) og vent til reset.
Hvad er cursor?
Cursor er et token der peger på næste side i søgeresultaterne.
/api/v1/search?query=software&limit=100&cursor=eyJvZmZzZXQiOiIxMDAifQ==
Webhooks på CVR-opdateringer
Abonnér på virksomheder og få besked, når data ændrer sig.
Opret webhook
POST /api/v1/webhooks
{
"cvr": "38004441",
"url": "https://example.com/webhooks/cvrhub"
}Payload eksempel
{
"event": "company.updated",
"cvr": "38004441",
"data": { "cvr": "38004441", "name": "Hagbarths ApS" }
}Hver webhook‑levering tæller som 1 req. Webhooks sendes kun ved ændringer.