Slå en virksomhed op på CVR-nummer
ruby
require "net/http"
require "json"
def get_company(cvr)
uri = URI("https://apicvr.dk/api/v1/#{cvr}")
res = Net::HTTP.get_response(uri)
case res
when Net::HTTPOK then JSON.parse(res.body)
when Net::HTTPNotFound then nil
else raise "CVR-API svarede #{res.code}" # 422 eller 502
end
end
company = get_company(24256790)
puts "#{company["name"]}, #{company["zipcode"]} #{company["city"]}"
company["ejere"].each do |owner|
puts "#{owner["name"]} #{owner["ownership_range"]}"
endSøg på virksomhedsnavn
Fuzzy-søgningen finder virksomheder, selv om navnet er stavet lidt forkert. Hvert hit har name, cvr_number, industrycode og industrytext.
ruby
require "net/http"
require "json"
require "erb"
def search(name)
uri = URI("https://apicvr.dk/api/v1/search/fuzzy/#{ERB::Util.url_encode(name)}")
JSON.parse(Net::HTTP.get(uri))
end
search("novo nordisk").first(5).each do |hit|
puts "#{hit["cvr_number"]} #{hit["name"]} - #{hit["industrytext"]}"
endI en Rails-app
Firmadata ændrer sig sjældent. Læg opslaget i en service, og cache svaret, så samme CVR-nummer ikke slås op ved hver request:
ruby
# app/services/cvr_lookup.rb
class CvrLookup
def self.call(cvr)
Rails.cache.fetch("cvr/#{cvr}", expires_in: 6.hours) do
res = Net::HTTP.get_response(URI("https://apicvr.dk/api/v1/#{cvr}"))
res.is_a?(Net::HTTPOK) ? JSON.parse(res.body) : nil
end
end
endHåndter fejl
| Status | Betydning |
|---|---|
200 | Virksomheden blev fundet. Svaret er JSON. |
404 | Der findes ingen virksomhed med det CVR-nummer. Body: {"detail": {"error": "NOT_FOUND"}} |
422 | CVR-nummeret er ikke et tal. |
502 | CVR-registret svarede ikke. Prøv igen om lidt. |
Tjek altid
protected, før du bruger data til markedsføring. Er feltet true, har virksomheden frabedt sig reklamehenvendelser.Ofte stillede spørgsmål
Kan jeg bruge Faraday eller HTTParty?
Ja. API'et er et almindeligt GET-kald, der returnerer JSON, så enhver HTTP-klient virker. Eksemplerne bruger Net::HTTP, fordi det ikke kræver nogen gems.
Skal jeg bruge en API-nøgle?
Nej. CVR-API kræver hverken nøgle eller konto.