Berika kunddata
Lägg till företagsdata i din kundlista.
Du har en lista med företagsnamn, orter eller registernummer och vill lägga till officiella företagsdata. Allt du behöver är fetch-organization; du behöver inte söka först.
Matcha företag
Skicka en förfrågan per kund med den bästa uppgift du har. Registerdomstol och registernummer är bäst, eftersom de är unika. Om du inte har dem använder du företagsnamnet med bolagsform och ort. Vår exempelförfrågan slår upp Hetzner Online GmbH, Ansbach HRB 6089, via namn och ort.
curl -G "https://handelsregister.ai/api/v1/fetch-organization" \ -H "x-api-key: DIN_API_NYCKEL" \ --data-urlencode 'q=Hetzner Online GmbH Gunzenhausen'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-organization", headers={"x-api-key": "DIN_API_NYCKEL"}, params={ "q": "Hetzner Online GmbH Gunzenhausen", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-organization"); url.searchParams.append("q", "Hetzner Online GmbH Gunzenhausen"); const response = await fetch(url, { headers: { "x-api-key": "DIN_API_NYCKEL" }, }); const data = await response.json();
1{2 "entity_id": "94eb910fef13f94585c48c263fa446d4",3 "name": "Hetzner Online GmbH",4 "status": "ACTIVE",5 "registration": {6 "court": "Ansbach",7 "register_type": "HRB",8 "register_number": "6089"9 },10 "address": {11 "house_number": "25",12 "street": "Industriestraße",13 "postal_code": "91710",14 "city": "Gunzenhausen",15 "county": "Weißenburg-Gunzenhausen",16 "state": "Bayern",17 "country": "DEU",18 "coordinates": {19 "latitude": 49.12483,20 "longitude": 10.7805221 }22 },23 "meta": {24 "request_credit_cost": 5,25 "credits_remaining": 14526 }27}
Kontrollera svaret mot dina data, till exempel postnumret eller orten i address. Vid vanliga namn kan annars ett företag med samma namn komma tillbaka.
Spara entity_id hos din kund. Alla senare hämtningar, dokument, Signals och bevakningar körs sedan på denna identifierare.
ai_search=on-default) selektivt för otydliga poster; det kostar extra 20 krediter, även utan träff.
Hämta många företag
fetch-organization tillåter 60 förfrågningar per minut. Skicka förfrågningarna jämnt, en efter en. Vid HTTP 429 väntar du de sekunder som står i Retry-After. Om du behöver mer erbjuder Enterprise högre gränser, se Priser.
Ge varje förfrågan en Idempotency-Key, till exempel kundnumret. Om du upprepar den med samma nyckel och samma parametrar inom 24 timmar kostar den ingenting.
Vid HTTP 408 (förfrågan tog för lång tid) debiterar API:et ingenting, inte ens AI-läget. Vid ett fel med status 500 eller högre debiteras bara AI-läget, om du valde det. Försök igen senare med samma Idempotency-Key.
Skriptet läser kunder.csv med kolumnerna id, name, city och register. Kolumnen register innehåller registernumret med domstol, som Ansbach HRB 6089, eller ingenting. Skriptet skriver en kopia med entity_id, registerdomstol och registernummer och räknar de förbrukade krediterna.
import csv import time import requests API = "https://handelsregister.ai/api/v1/fetch-organization" HEADERS = {"x-api-key": "DIN_API_NYCKEL", "Accept": "application/json"} PER_MINUTE = 60 # gräns för fetch-organization def lookup(row): # Registerdomstol plus registernummer är unikt; annars namn och ort q = row["register"] or f'{row["name"]} {row["city"]}' headers = {**HEADERS, "Idempotency-Key": f'kund-{row["id"]}'} for attempt in range(5): response = requests.get(API, params={"q": q}, headers=headers, timeout=120) if response.status_code == 429: time.sleep(int(response.headers.get("Retry-After", "10"))) elif response.status_code in (408, 500, 502, 503, 504): time.sleep(30 * (attempt + 1)) else: break return response spent = 0 with open("kunder.csv", newline="") as source, open("kunder_berikade.csv", "w", newline="") as target: reader = csv.DictReader(source) writer = csv.DictWriter(target, fieldnames=reader.fieldnames + ["entity_id", "registerdomstol", "registernummer"]) writer.writeheader() for row in reader: response = lookup(row) if response.status_code == 402: print("Krediterna räcker inte, körningen stoppad") break data = response.json() spent += data.get("meta", {}).get("request_credit_cost", 0) if response.status_code == 200: registration = data.get("registration") or {} row["entity_id"] = data["entity_id"] row["registerdomstol"] = registration.get("court") row["registernummer"] = f'{registration.get("register_type")} {registration.get("register_number")}' writer.writerow(row) time.sleep(60 / PER_MINUTE) print(f"Förbrukat: {spent} krediter")
En andra körning inom 24 timmar kostar ingenting. Svaret har då Idempotency-Status: replayed och request_credit_cost 0.
1{2 "entity_id": "94eb910fef13f94585c48c263fa446d4",3 "name": "Hetzner Online GmbH",4 "meta": {5 "request_credit_cost": 0,6 "credits_remaining": 1457 }8}
enrich, en färdig berikning för CSV-, JSON- och Excel-filer.
Håll koll på kostnaderna
Uppskatta i förväg med prislistan: 5 krediter per företag för grunddata, plus priset för varje funktion. Grunddata kostar vid varje träff. Funktioner utan data kostar ingenting, så de faktiska kostnaderna är ofta lägre. Tilläggen är inte funktioner: AI-läget kostar även utan träff, Realtid vid varje lyckad hämtning.
| Vad | Krediter |
|---|---|
| Företagsprofil med grunddata | 5 |
| Varje funktion, bara när den returnerar data | 1 till 80 |
| AI-läge, även utan träff | +20 |
| Realtid, för varje lyckad live-hämtning | +10 |
Gräns: 60 förfrågningar per minut.
Vad en förfrågan faktiskt kostade står i varje svar under meta.request_credit_cost.
Vad en förfrågan kostade står i meta.request_credit_cost, det återstående saldot i meta.credits_remaining. Summera kostnaderna löpande, som i skriptet ovan.
Före varje förfrågan kontrollerar API:et om ditt saldo täcker det högsta möjliga priset. Om inte svarar API:et med HTTP 402 och debiterar ingenting. Skriptet stoppar då.
Ditt saldo och din förbrukning kan du när som helst kontrollera gratis via account.
Vanliga fallgropar
- Registernummer utan domstol: Om dina data bara säger ”HRB 6089” hittar API:et inget företag. Lägg till registerdomstolen eller använd namn och ort.
- En nyckel, en förfrågan: Samma
Idempotency-Keymed andra parametrar ger HTTP 422. För en ändrad förfrågan använder du en ny nyckel. - Nyckelformat: Upp till 128 tecken av bokstäver, siffror och
. _ : -är tillåtna, med början på en bokstav eller siffra. En nyckel i något annat format ignorerar API:et. Förfrågan körs då utan detta skydd. - Timeout: Med Realtid eller många funktioner tar en förfrågan längre tid. Ställ in din klients timeout på minst 120 sekunder.