API-REFERANSE · .md
Firmasett API v1.1
440 022 norske selskaper (alle aktive private, også uten ansatte) fullt beriket (siste regnskap, daglig leder med beste e-post/mobil/LinkedIn og kilde, anslag på utestående og kunder), oppdatert hver natt, pluss hele Enhetsregisteret (1,2 mill. enheter) til oppslag på orgnr med registerdata. Alle svar har konvolutten {status, resultat, meta}. ikke_funnet = HTTP 200 uten kostnad. Kvoter per 5-timersvindu. Les også https://firmasett.arnu.io/llms.txt.
Ingen nøkkel? Lag en gratis i konsollen. Base-URL https://firmasett.arnu.io. Send Authorization: Bearer fs_… på alle kall.
Konvolutten
Alle svar har samme form. status er ok, ikke_funnet (HTTP 200, koster ingenting) eller feil (HTTP 4xx/5xx med feil.kode). meta viser plan, kvote og hva kallet kostet, så agenten slipper å spørre /v1/konto.
Feilkoder
ugyldig_foresporselHTTP 400 | Manglende eller ugyldig parameter; meldingen sier hvilken |
ugyldig_nokkelHTTP 401 | Mangler eller feil nøkkel |
ingen_telefonpoengHTTP 403 | Mobilnummer finnes, men kontoen har ikke poeng |
feil_metodeHTTP 405 | Feil HTTP-metode |
kvote_bruktHTTP 429 | Planens søketreff eller berikelser er brukt opp i vinduet; Retry-After i sekunder |
serverfeilHTTP 500 | Vår feil; prøv igjen |
Kvoter
Søketreff og berikelser telles per 5-timersvindu etter plan (priser). antall_kun=ja, ikke_funnet, kontokall og registerdata (dekning: register) er gratis. Mobilnumre koster telefonpoeng.
Konvolutt
{
"status": "ok | ikke_funnet | feil",
"resultat": …,
"melding": "bare ved ikke_funnet",
"meta": {
"plan": "gratis | solo | pro | team",
"vindu": "5 timer",
"berikelser": {"grense": 1000, "brukt": 12, "igjen": 988},
"sok": {"grense": 5000, "brukt": 40, "igjen": 4960},
"telefonpoeng": 0,
"belastet": {"berikelse": 1}
}
}
konto Gratis, teller ikke mot kvoten
curl "https://firmasett.arnu.io/v1/konto" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/konto",
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/konto", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"brukt": {
"berikelser": 0,
"sok": 0
},
"epost": "[email protected]",
"grenser": {
"berikelser": 1000,
"sok": 100,
"totalt": true
},
"mobilnumre_tilgjengelig": true,
"opprettet": "2026-11-06T15:26:38",
"plan": "gratis",
"plan_navn": "Gratis",
"telefonpoeng": 5,
"vindu_timer": 5
},
"meta": {
"belastet": {},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 0,
"grense": 100,
"igjen": 100
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
curl "https://firmasett.arnu.io/v1/bruk" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/bruk",
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/bruk", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"dager": [],
"fra": "2026-10-07"
},
"meta": {
"belastet": {},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 0,
"grense": 100,
"igjen": 100
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
GET /v1/onboarding
Onboarding: lagret profil, hva som mangler, spørsmålene
Svar
HTTP 200, konvolutt med resultat.
curl "https://firmasett.arnu.io/v1/onboarding" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/onboarding",
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/onboarding", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"fullfort": true,
"mangler": [],
"oppdatert": "2026-11-06T15:26:39",
"profil": {
"bestemmer": "innkjøp",
"epost": "[email protected]",
"firma": "Eksempel AS",
"navn": "Kari Nordmann",
"paavirker": "-",
"telefon": "90 •• •• ••"
},
"selskaper": 454566,
"sporsmal": []
},
"meta": {
"belastet": {},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 0,
"grense": 100,
"igjen": 100
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
POST /v1/onboarding
Lagre svar fra onboardingen (delvis er greit, «-» = hoppet over)
Kropp application/json
navnstring | |
telefonstring | |
epoststring | |
firmastring | |
bestemmerstring | Hva brukeren bestemmer over |
paavirkerstring | Hva brukeren påvirker beslutninger om |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/onboarding" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"navn": "Kari Nordmann", "firma": "Eksempel AS", "bestemmer": "innkjøp av verktøy", "paavirker": "-"}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/onboarding",
json={
"navn": "Kari Nordmann",
"firma": "Eksempel AS",
"bestemmer": "innkjøp av verktøy",
"paavirker": "-"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/onboarding", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"navn": "Kari Nordmann",
"firma": "Eksempel AS",
"bestemmer": "innkjøp av verktøy",
"paavirker": "-"
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"fullfort": true,
"mangler": [],
"melding": "Takk, profilen er fullført.",
"oppdatert": "2026-11-06T15:26:41",
"profil": {
"bestemmer": "innkjøp av verktøy",
"epost": "[email protected]",
"firma": "Eksempel AS",
"navn": "Kari Nordmann",
"paavirker": "-",
"telefon": "90 •• •• ••"
},
"selskaper": 454566,
"sporsmal": []
},
"meta": {
"belastet": {},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 0,
"grense": 100,
"igjen": 100
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
GET /v1/bransjer
Næringskoder med antall og dekning, pluss fylker
Svar
HTTP 200, konvolutt med resultat.
curl "https://firmasett.arnu.io/v1/bransjer" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/bransjer",
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/bransjer", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"bransjer": [
{
"antall": 101578,
"bransje": "Eiendomsforvaltning på oppdrag",
"kode": "68",
"med_dl_epost": 18733,
"med_dl_mobil": 26581
},
{
"antall": 56277,
"bransje": "Uoppgitt",
"kode": "00",
"med_dl_epost": 3568,
"med_dl_mobil": 5972
},
{
"antall": 28684,
"bransje": "Annen detaljhandel med andre nye varer",
"kode": "47",
"med_dl_epost": 3762,
"med_dl_mobil": 5603
}
],
"fylker": [
"Agder",
"Akershus",
"Buskerud"
]
},
"meta": {
"belastet": {},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 0,
"grense": 100,
"igjen": 100
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
selskaper
GET /v1/selskaper/sok
Søk selskaper
Hvert treff som leveres teller som ett søketreff. Med antall_kun=ja får du bare totalen, gratis.
Spørring
qstring | Fritekst: firmanavn, daglig leder eller orgnr |
bransjestring | Næringskode-prefiks, flere med komma (69.2,85.1) |
fylkestring | Fylke(r), flere med komma |
kommunestring | Kommune |
kundetypestring | B2B | B2C | begge | offentlig |
ansatte_minnumber | |
ansatte_maksnumber | |
omsetning_minnumber | kr |
omsetning_maksnumber | kr |
stiftet_mininteger | år |
stiftet_maksinteger | år |
utestaende_minnumber | anslått utestående, kr |
utestaende_maksnumber | |
kunder_minnumber | anslått antall kunder |
fakturaer_minnumber | anslått fakturaer per år |
kan_smsstring | ja|nei – selskapet har mobilnummer |
har_dl_mobilstring | ja|nei |
har_dl_epoststring | ja|nei |
har_dl_linkedinstring | ja|nei |
har_nettsidestring | ja|nei |
har_regnskapstring | ja|nei |
statusstring | aktiv (standard) | konkurs | avvikling | tvangsavvikling | alle |
registerstring | ja – søk i hele Enhetsregisteret (1,2 mill. enheter, bare navn/orgnr/sted/bransje) i stedet for hoveddatasettet. Treffene har dekning register og teller som søketreff. |
fakturerer_mangestring | ja|nei – nettsida nevner purregebyr/inkasso/avtalegiro/efaktura |
kjedestring | ja|nei |
konsernstring | ja|nei |
signalstring | delstreng i fakturasignaler: purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement |
regnskapsforerstring | delstreng |
revisorstring | delstreng |
regnskapssystemstring | delstreng |
sorterstring | omsetning | ansatte | utestaende | kunder | fakturaer | nyeste | navn |
antallinteger | 1–100, standard 25 |
sideinteger | standard 1 |
antall_kunstring | ja – bare tell treff. Gratis, teller ikke mot kvoten. |
Svar
HTTP 200, konvolutt med resultat. resultat: {total, side, antall, treff: [SelskapKort]}. Feil: 429 kvote_brukt (Retry-After i sekunder).
curl "https://firmasett.arnu.io/v1/selskaper/sok?q=elektro&fylke=Rogaland&ansatte_min=10&har_dl_epost=ja&sorter=omsetning&antall=2" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/selskaper/sok",
params={
"q": "elektro",
"fylke": "Rogaland",
"ansatte_min": "10",
"har_dl_epost": "ja",
"sorter": "omsetning",
"antall": "2"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/selskaper/sok?q=elektro&fylke=Rogaland&ansatte_min=10&har_dl_epost=ja&sorter=omsetning&antall=2", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"antall": 2,
"side": 1,
"total": 21,
"treff": [
{
"ansatte": "191",
"bransje": "Produksjon av batterier og akkumulatorer",
"bransje_kode": "27.200",
"daglig_leder": "Cheul Won Shin",
"fylke": "Rogaland",
"har_dl_epost": true,
"har_dl_linkedin": false,
"har_dl_mobil": false,
"hjemmeside": "www.seam.no",
"kan_sms": true,
"kommune": "Karmøy",
"kunder_anslag": 2277,
"kundetype": "B2B",
"navn": "Seam As",
"omsetning": 683239234,
"orgnr": "985947007",
"stiftet": "2003-08-15",
"utestaende_anslag": 105293718
},
{
"ansatte": "199",
"bransje": "Produksjon av elektriske fordelings- og kontrolltavler og paneler",
"bransje_kode": "27.120",
"daglig_leder": "Knut Husebø",
"fylke": "Rogaland",
"har_dl_epost": true,
"har_dl_linkedin": false,
"har_dl_mobil": false,
"hjemmeside": "",
"kan_sms": false,
"kommune": "Stavanger",
"kunder_anslag": 1639,
"kundetype": "B2B",
"navn": "Elcor As",
"omsetning": 491793601,
"orgnr": "957382800",
"stiftet": "1990-01-03",
"utestaende_anslag": 75790110
}
]
},
"meta": {
"belastet": {
"sok": 2
},
"berikelser": {
"brukt": 0,
"grense": 1000,
"igjen": 1000
},
"plan": "gratis",
"sok": {
"brukt": 2,
"grense": 100,
"igjen": 98
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
GET /v1/selskaper/{orgnr}
Berik ett selskap
1 berikelse når selskapet er i hoveddatasettet (dekning: full; resultat = selskap, regnskap, anslag, signaler, roller, daglig_leder). Orgnr som bare finnes i Enhetsregisteret gir dekning: register med registerdata, gratis.
Sti og spørring
orgnrstring · i stien · påkrevd |
Svar
HTTP 200, konvolutt med resultat. Feil: 429 kvote_brukt (Retry-After i sekunder).
curl "https://firmasett.arnu.io/v1/selskaper/810034882" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/selskaper/810034882",
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/selskaper/810034882", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"anslag": {
"betaling": "faktura",
"dager_anslag": 25,
"fakturaer_anslag": 753,
"kunder_anslag": 251,
"kundetype": "begge",
"utestaende_anslag": 857983,
"utestaende_kilde": "bransjeanslag"
},
"daglig_leder": {
"andre_selskaper": "",
"epost": "[email protected]",
"epost_alternativer": 0,
"epost_grad": "E",
"epost_kilde": "gjettet fra vanligste mønster",
"epost_sikkerhet": "lav",
"har_mobil": false,
"kan_sms": false,
"linkedin": "",
"linkedin_grad": "",
"linkedin_kilde": "",
"mobil": "",
"mobil_grad": "",
"mobil_kilde": "",
"navn": "Morten Aarrestad",
"tittel": "Daglig leder"
},
"dekning": "full",
"regnskap": {
"aarsresultat": -78041,
"aksjekapital": "2375000.0",
"bank": "",
"driftsresultat": -31910,
"egenkapital": 1639483,
"fordringer": "",
"fordringer_andel": "",
"kundefordringer": "",
"lonn": "",
"omsetning": 10021242,
"regnskap_kilde": "eksport",
"regnskapsaar": "2025"
},
"roller": {
"daglig_leder": "Morten Aarrestad",
"regnskapsforer": "ACCOUNT GROUP AS",
"revisor": "ØKSENDAL REVISJON AS",
"styreleder": "Jan Marton Aarrestad"
},
"selskap": {
"adresse": "Strandgata 21",
"ansatte": "11",
"avdelinger": "3",
"beskrivelse": "Enkelt, rimelig - alt elektrisk på samme sted",
"bransje": "Elektrisk installasjonsarbeid",
"bransje_kode": "43.210",
"epost": "[email protected]",
"formaal": "Drive handel, installasjons og servicevirksomhet, eller annen virksomhet forbundet med dette, samt delta i annen virksomhet.",
"fylke": "Rogaland",
"hjemmeside": "",
"hjemmeside_kilde": "",
"holding": "0",
"kan_sms": 0,
"kjede": "",
"kjedesignal": "3 avdelinger",
"kommune": "Sandnes",
"konsern": "0",
"linkedin_firma": "",
"mobil": "",
"morselskap": "",
"mva": "1",
"navn": "Sandnes Elektriske As",
"orgform": "AS",
"orgnr": "810034882",
"poststed": "Sandnes",
"status": "aktiv",
"stiftet": "1977-06-15",
"telefon": "51 •• •• ••",
"telefon_type": "fast",
"tidligere_navn": "SANDNES ELEKTRISKE FORRETNING AS"
},
"signaler": {
"betalingsmaate_nettside": "",
"fakturasignaler": "",
"fakturerer_mange": 0,
"inkassoselskap": "",
"nettside_eposter_antall": 0,
"regnskapssystem": ""
}
},
"meta": {
"belastet": {
"berikelse": 1
},
"berikelser": {
"brukt": 1,
"grense": 1000,
"igjen": 999
},
"plan": "gratis",
"sok": {
"brukt": 2,
"grense": 100,
"igjen": 98
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
POST /v1/selskaper/berik
Berik inntil 100 selskaper
Én berikelse per selskap som finnes. resultat: {antall, funnet, resultater: [{orgnr, status, …Selskap}]}
Kropp application/json
orgnrsarray<string> · påkrevd | Maks 100. |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/selskaper/berik" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"orgnrs": ["810034882", "810059672"]}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/selskaper/berik",
json={
"orgnrs": [
"810034882",
"810059672"
]
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/selskaper/berik", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"orgnrs": [
"810034882",
"810059672"
]
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"antall": 2,
"bare_register": 0,
"funnet": 2,
"resultater": [
{
"anslag": {
"betaling": "faktura",
"dager_anslag": 25,
"fakturaer_anslag": 753,
"kunder_anslag": 251,
"kundetype": "begge",
"utestaende_anslag": 857983,
"utestaende_kilde": "bransjeanslag"
},
"daglig_leder": {
"andre_selskaper": "",
"epost": "[email protected]",
"epost_alternativer": 0,
"epost_grad": "E",
"epost_kilde": "gjettet fra vanligste mønster",
"epost_sikkerhet": "lav",
"har_mobil": false,
"kan_sms": false,
"linkedin": "",
"linkedin_grad": "",
"linkedin_kilde": "",
"mobil": "",
"mobil_grad": "",
"mobil_kilde": "",
"navn": "Morten Aarrestad",
"tittel": "Daglig leder"
},
"dekning": "full",
"orgnr": "810034882",
"regnskap": {
"aarsresultat": -78041,
"aksjekapital": "2375000.0",
"bank": "",
"driftsresultat": -31910,
"egenkapital": 1639483,
"fordringer": "",
"fordringer_andel": "",
"kundefordringer": "",
"lonn": "",
"omsetning": 10021242,
"regnskap_kilde": "eksport",
"regnskapsaar": "2025"
},
"roller": {
"daglig_leder": "Morten Aarrestad",
"regnskapsforer": "ACCOUNT GROUP AS",
"revisor": "ØKSENDAL REVISJON AS",
"styreleder": "Jan Marton Aarrestad"
},
"selskap": {
"adresse": "Strandgata 21",
"ansatte": "11",
"avdelinger": "3",
"beskrivelse": "Enkelt, rimelig - alt elektrisk på samme sted",
"bransje": "Elektrisk installasjonsarbeid",
"bransje_kode": "43.210",
"epost": "[email protected]",
"formaal": "Drive handel, installasjons og servicevirksomhet, eller annen virksomhet forbundet med dette, samt delta i annen virksomhet.",
"fylke": "Rogaland",
"hjemmeside": "",
"hjemmeside_kilde": "",
"holding": "0",
"kan_sms": 0,
"kjede": "",
"kjedesignal": "3 avdelinger",
"kommune": "Sandnes",
"konsern": "0",
"linkedin_firma": "",
"mobil": "",
"morselskap": "",
"mva": "1",
"navn": "Sandnes Elektriske As",
"orgform": "AS",
"orgnr": "810034882",
"poststed": "Sandnes",
"status": "aktiv",
"stiftet": "1977-06-15",
"telefon": "51 •• •• ••",
"telefon_type": "fast",
"tidligere_navn": "SANDNES ELEKTRISKE FORRETNING AS"
},
"signaler": {
"betalingsmaate_nettside": "",
"fakturasignaler": "",
"fakturerer_mange": 0,
"inkassoselskap": "",
"nettside_eposter_antall": 0,
"regnskapssystem": ""
},
"status": "ok"
},
{
"anslag": {
"betaling": "faktura",
"dager_anslag": 15,
"fakturaer_anslag": 228,
"kunder_anslag": 19,
"kundetype": "begge",
"utestaende_anslag": 93515,
"utestaende_kilde": "bransjeanslag"
},
"daglig_leder": {
"andre_selskaper": "Nesset Historielag",
"epost": "",
"epost_alternativer": 0,
"epost_grad": "",
"epost_kilde": "",
"epost_sikkerhet": "",
"har_mobil": false,
"kan_sms": false,
"linkedin": "",
"linkedin_grad": "",
"linkedin_kilde": "",
"mobil": "",
"mobil_grad": "",
"mobil_kilde": "",
"navn": "Svein Olav Farstad",
"tittel": "Daglig leder"
},
"dekning": "full",
"orgnr": "810059672",
"regnskap": {
"aarsresultat": 1294114,
"aksjekapital": "100000.0",
"bank": "",
"driftsresultat": 1734924,
"egenkapital": 5386332,
"fordringer": "",
"fordringer_andel": "",
"kundefordringer": "",
"lonn": "",
"omsetning": 2275533,
"regnskap_kilde": "eksport",
"regnskapsaar": "2024"
},
"roller": {
"daglig_leder": "Svein Olav Farstad",
"regnskapsforer": "REGNSKAPSKONTORET TOVE HUNDSETH",
"revisor": "",
"styreleder": "Svein Olav Farstad"
},
"selskap": {
"adresse": "Sjøgardsvegen 8",
"ansatte": "0",
"avdelinger": "1",
"beskrivelse": "",
"bransje": "Utleie av egen eller leid fast eiendom",
"bransje_kode": "68.200",
"epost": "",
"formaal": "Utleievirksomhet, fortrinnsvis av forretnings- eiendommer.",
"fylke": "Møre og Romsdal",
"hjemmeside": "",
"hjemmeside_kilde": "",
"holding": "0",
"kan_sms": 1,
"kjede": "",
"kjedesignal": "",
"kommune": "Molde",
"konsern": "0",
"linkedin_firma": "",
"mobil": "41 •• •• ••",
"morselskap": "",
"mva": "0",
"navn": "Aasen & Farstad As",
"orgform": "AS",
"orgnr": "810059672",
"poststed": "Eidsvåg I Romsdal",
"status": "aktiv",
"stiftet": "1965-06-26",
"telefon": "71 •• •• ••",
"telefon_type": "fast",
"tidligere_navn": ""
},
"signaler": {
"betalingsmaate_nettside": "",
"fakturasignaler": "",
"fakturerer_mange": 0,
"inkassoselskap": "",
"nettside_eposter_antall": 0,
"regnskapssystem": ""
},
"status": "ok"
}
]
},
"meta": {
"belastet": {
"berikelse": 2
},
"berikelser": {
"brukt": 3,
"grense": 1000,
"igjen": 997
},
"plan": "gratis",
"sok": {
"brukt": 2,
"grense": 100,
"igjen": 98
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
personer
GET /v1/personer/sok
Søk daglige ledere
Spørring
qstring | Fritekst: firmanavn, daglig leder eller orgnr |
bransjestring | Næringskode-prefiks, flere med komma (69.2,85.1) |
fylkestring | Fylke(r), flere med komma |
kommunestring | Kommune |
kundetypestring | B2B | B2C | begge | offentlig |
ansatte_minnumber | |
ansatte_maksnumber | |
omsetning_minnumber | kr |
omsetning_maksnumber | kr |
stiftet_mininteger | år |
stiftet_maksinteger | år |
utestaende_minnumber | anslått utestående, kr |
utestaende_maksnumber | |
kunder_minnumber | anslått antall kunder |
fakturaer_minnumber | anslått fakturaer per år |
kan_smsstring | ja|nei – selskapet har mobilnummer |
har_dl_mobilstring | ja|nei |
har_dl_epoststring | ja|nei |
har_dl_linkedinstring | ja|nei |
har_nettsidestring | ja|nei |
har_regnskapstring | ja|nei |
statusstring | aktiv (standard) | konkurs | avvikling | tvangsavvikling | alle |
registerstring | ja – søk i hele Enhetsregisteret (1,2 mill. enheter, bare navn/orgnr/sted/bransje) i stedet for hoveddatasettet. Treffene har dekning register og teller som søketreff. |
fakturerer_mangestring | ja|nei – nettsida nevner purregebyr/inkasso/avtalegiro/efaktura |
kjedestring | ja|nei |
konsernstring | ja|nei |
signalstring | delstreng i fakturasignaler: purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement |
regnskapsforerstring | delstreng |
revisorstring | delstreng |
regnskapssystemstring | delstreng |
sorterstring | omsetning | ansatte | utestaende | kunder | fakturaer | nyeste | navn |
antallinteger | 1–100, standard 25 |
sideinteger | standard 1 |
antall_kunstring | ja – bare tell treff. Gratis, teller ikke mot kvoten. |
Svar
HTTP 200, konvolutt med resultat. resultat: {total, side, antall, treff: [{navn, tittel, orgnr, firma, bransje, fylke, kommune, ansatte, har_epost, har_mobil, har_linkedin}]}.
curl "https://firmasett.arnu.io/v1/personer/sok?bransje=43.21&fylke=Rogaland&har_mobil=ja&antall=2" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/personer/sok",
params={
"bransje": "43.21",
"fylke": "Rogaland",
"har_mobil": "ja",
"antall": "2"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/personer/sok?bransje=43.21&fylke=Rogaland&har_mobil=ja&antall=2", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"antall": 2,
"side": 1,
"total": 209,
"treff": [
{
"ansatte": "332",
"bransje": "Elektrisk installasjonsarbeid",
"firma": "Helgevold As",
"fylke": "Rogaland",
"har_epost": true,
"har_linkedin": false,
"har_mobil": true,
"kommune": "Vindafjord",
"navn": "Filippo Ballarin",
"orgnr": "986389180",
"tittel": "Daglig leder"
},
{
"ansatte": "253",
"bransje": "Elektrisk installasjonsarbeid",
"firma": "Rønning Elektro As",
"fylke": "Rogaland",
"har_epost": false,
"har_linkedin": false,
"har_mobil": false,
"kommune": "Stavanger",
"navn": "Bård Skavland",
"orgnr": "915581714",
"tittel": "Daglig leder"
}
]
},
"meta": {
"belastet": {
"sok": 2
},
"berikelser": {
"brukt": 3,
"grense": 1000,
"igjen": 997
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
POST /v1/berik/person
Berik en person (daglig leder)
Gi orgnr, eller navn + firma/domene. 1 berikelse ved treff. resultat = DagligLeder + orgnr, firma, bransje, fylke, hjemmeside.
Kropp application/json
orgnrstring | |
navnstring | |
firmastring | |
domenestring |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/berik/person" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"orgnr": "810034882"}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/berik/person",
json={
"orgnr": "810034882"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/berik/person", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"orgnr": "810034882"
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"andre_selskaper": "",
"bransje": "Elektrisk installasjonsarbeid",
"epost": "[email protected]",
"epost_alternativer": 0,
"epost_grad": "E",
"epost_kilde": "gjettet fra vanligste mønster",
"epost_sikkerhet": "lav",
"firma": "Sandnes Elektriske As",
"fylke": "Rogaland",
"har_mobil": false,
"hjemmeside": "",
"kan_sms": false,
"linkedin": "",
"linkedin_grad": "",
"linkedin_kilde": "",
"mobil": "",
"mobil_grad": "",
"mobil_kilde": "",
"navn": "Morten Aarrestad",
"orgnr": "810034882",
"tittel": "Daglig leder"
},
"meta": {
"belastet": {
"berikelse": 1
},
"berikelser": {
"brukt": 4,
"grense": 1000,
"igjen": 996
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 5,
"vindu": "totalt"
}
}
epost
POST /v1/epost/finn
Finn e-post for navn på domene
Kjent adresse (grad A/B) hvis personen er daglig leder, ellers domenets bekreftede mønster (C) eller vanligste norske mønster (D) med alternativer. 1 berikelse.
Kropp application/json
fornavnstring | |
etternavnstring | |
navnstring | |
domenestring | |
orgnrstring | |
firmastring |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/epost/finn" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"fornavn": "Kari", "etternavn": "Nordmann", "domene": "sandneselektriske.no"}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/epost/finn",
json={
"fornavn": "Kari",
"etternavn": "Nordmann",
"domene": "sandneselektriske.no"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/epost/finn", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"fornavn": "Kari",
"etternavn": "Nordmann",
"domene": "sandneselektriske.no"
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"alternativer": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"domene": "sandneselektriske.no",
"epost": "[email protected]",
"firma": "Sandnes Elektriske As",
"grad": "D",
"kilde": "vanligste norske mønster, ikke bekreftet",
"orgnr": "810034882",
"sikkerhet": "lav"
},
"meta": {
"belastet": {
"berikelse": 1
},
"berikelser": {
"brukt": 5,
"grense": 1000,
"igjen": 995
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 4,
"vindu": "totalt"
}
}
POST /v1/epost/valider
Valider inntil 100 e-postadresser
Per adresse: syntaks, domene_svarer (MX/A), rolleadresse, fridomene, engangsdomene, kjent_i_datasettet, vurdering, grad. 1 berikelse per adresse.
Kropp application/json
eposterarray<string> | Maks 100. |
epoststring |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/epost/valider" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"eposter": ["[email protected]", "[email protected]"]}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/epost/valider",
json={
"eposter": [
"[email protected]",
"[email protected]"
]
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/epost/valider", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"eposter": [
"[email protected]",
"[email protected]"
]
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"antall": 2,
"resultater": [
{
"domene": "sandneselektriske.no",
"domene_svarer": true,
"engangsdomene": false,
"epost": "[email protected]",
"fridomene": false,
"grad": "A",
"kjent_i_datasettet": {
"firma": "Sandnes Elektriske As",
"orgnr": "810034882"
},
"rolleadresse": false,
"syntaks": true,
"vurdering": "gyldig (kjent)"
},
{
"domene": "finnes-ikke-123.no",
"domene_svarer": false,
"engangsdomene": false,
"epost": "[email protected]",
"fridomene": false,
"grad": "E",
"kjent_i_datasettet": null,
"rolleadresse": true,
"syntaks": true,
"vurdering": "ugyldig"
}
]
},
"meta": {
"belastet": {
"berikelse": 2
},
"berikelser": {
"brukt": 7,
"grense": 1000,
"igjen": 993
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 4,
"vindu": "totalt"
}
}
GET /v1/epost/omvendt
Omvendt oppslag på e-post eller domene
resultat = Selskap + treff (daglig leders adresse | selskapets domene). 1 berikelse ved treff.
Spørring
epoststring | |
domenestring |
Svar
HTTP 200, konvolutt med resultat.
curl "https://firmasett.arnu.io/v1/epost/omvendt?domene=sandneselektriske.no" \
-H "Authorization: Bearer fs_…"
import requests
r = requests.get(
"https://firmasett.arnu.io/v1/epost/omvendt",
params={
"domene": "sandneselektriske.no"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/epost/omvendt?domene=sandneselektriske.no", {
headers: { Authorization: "Bearer fs_…" },
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"anslag": {
"betaling": "faktura",
"dager_anslag": 25,
"fakturaer_anslag": 753,
"kunder_anslag": 251,
"kundetype": "begge",
"utestaende_anslag": 857983,
"utestaende_kilde": "bransjeanslag"
},
"daglig_leder": {
"andre_selskaper": "",
"epost": "[email protected]",
"epost_alternativer": 0,
"epost_grad": "E",
"epost_kilde": "gjettet fra vanligste mønster",
"epost_sikkerhet": "lav",
"har_mobil": false,
"kan_sms": false,
"linkedin": "",
"linkedin_grad": "",
"linkedin_kilde": "",
"mobil": "",
"mobil_grad": "",
"mobil_kilde": "",
"navn": "Morten Aarrestad",
"tittel": "Daglig leder"
},
"dekning": "full",
"regnskap": {
"aarsresultat": -78041,
"aksjekapital": "2375000.0",
"bank": "",
"driftsresultat": -31910,
"egenkapital": 1639483,
"fordringer": "",
"fordringer_andel": "",
"kundefordringer": "",
"lonn": "",
"omsetning": 10021242,
"regnskap_kilde": "eksport",
"regnskapsaar": "2025"
},
"roller": {
"daglig_leder": "Morten Aarrestad",
"regnskapsforer": "ACCOUNT GROUP AS",
"revisor": "ØKSENDAL REVISJON AS",
"styreleder": "Jan Marton Aarrestad"
},
"selskap": {
"adresse": "Strandgata 21",
"ansatte": "11",
"avdelinger": "3",
"beskrivelse": "Enkelt, rimelig - alt elektrisk på samme sted",
"bransje": "Elektrisk installasjonsarbeid",
"bransje_kode": "43.210",
"epost": "[email protected]",
"formaal": "Drive handel, installasjons og servicevirksomhet, eller annen virksomhet forbundet med dette, samt delta i annen virksomhet.",
"fylke": "Rogaland",
"hjemmeside": "",
"hjemmeside_kilde": "",
"holding": "0",
"kan_sms": 0,
"kjede": "",
"kjedesignal": "3 avdelinger",
"kommune": "Sandnes",
"konsern": "0",
"linkedin_firma": "",
"mobil": "",
"morselskap": "",
"mva": "1",
"navn": "Sandnes Elektriske As",
"orgform": "AS",
"orgnr": "810034882",
"poststed": "Sandnes",
"status": "aktiv",
"stiftet": "1977-06-15",
"telefon": "51 •• •• ••",
"telefon_type": "fast",
"tidligere_navn": "SANDNES ELEKTRISKE FORRETNING AS"
},
"signaler": {
"betalingsmaate_nettside": "",
"fakturasignaler": "",
"fakturerer_mange": 0,
"inkassoselskap": "",
"nettside_eposter_antall": 0,
"regnskapssystem": ""
},
"treff": "domene"
},
"meta": {
"belastet": {
"berikelse": 1
},
"berikelser": {
"brukt": 8,
"grense": 1000,
"igjen": 992
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 4,
"vindu": "totalt"
}
}
telefon
POST /v1/telefon/finn
Mobilnummer til daglig leder
1 telefonpoeng per nummer levert; ikke_funnet koster ingenting. resultat: {orgnr, firma, navn, mobil, kilde, grad, sikkerhet, kan_sms, alternativer, merk}
Kropp application/json
orgnrstring | |
firmastring | |
domenestring |
Svar
HTTP 200, konvolutt med resultat. Feil: 403 Ingen telefonpoeng.
curl -X POST "https://firmasett.arnu.io/v1/telefon/finn" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"orgnr": "923609016"}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/telefon/finn",
json={
"orgnr": "923609016"
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/telefon/finn", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"orgnr": "923609016"
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"alternativer": 0,
"firma": "Equinor Asa",
"grad": "C",
"kan_sms": true,
"kilde": "annet selskap, rolle: Oslo Energy Forum Sti",
"merk": "SMS til mobil krever samtykke etter markedsføringsloven § 15 når mottakeren er en fysisk person. Å ringe er lov.",
"mobil": "90 •• •• ••",
"navn": "Anders Opedal",
"orgnr": "923609016",
"sikkerhet": "middels"
},
"meta": {
"belastet": {
"telefon": 1
},
"berikelser": {
"brukt": 4,
"grense": 1000,
"igjen": 996
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 4,
"vindu": "totalt"
}
}
sjekk
POST /v1/sjekk
Sjekk egne kontakter mot Firmasett
Per rad: treff (person|selskap|ingen), orgnr, firma, daglig_leder, epost_status og telefon_status (lik|avviker|vi_mangler|du_mangler|begge_mangler), beste_epost med grad, har_mobil. 1 berikelse per rad med treff. Innsendte data lagres som bidrag (vilkår § 6).
Kropp application/json
raderarray<object> · påkrevd | Maks 100. |
idstring | |
orgnrstring | |
firmastring | |
domenestring | |
navnstring | |
epoststring | |
telefonstring | |
linkedinstring | |
tittelstring |
Svar
HTTP 200, konvolutt med resultat.
curl -X POST "https://firmasett.arnu.io/v1/sjekk" \
-H "Authorization: Bearer fs_…" \
-H "Content-Type: application/json" \
-d '{"rader": [{"id": "crm-17", "orgnr": "810034882", "navn": "Morten Aarrestad", "epost": "[email protected]", "telefon": ""}]}'
import requests
r = requests.post(
"https://firmasett.arnu.io/v1/sjekk",
json={
"rader": [
{
"id": "crm-17",
"orgnr": "810034882",
"navn": "Morten Aarrestad",
"epost": "[email protected]",
"telefon": ""
}
]
},
headers={"Authorization": "Bearer fs_…"},
)
print(r.json())
const r = await fetch("https://firmasett.arnu.io/v1/sjekk", {
method: "POST",
headers: { Authorization: "Bearer fs_…", "Content-Type": "application/json" },
body: JSON.stringify({
"rader": [
{
"id": "crm-17",
"orgnr": "810034882",
"navn": "Morten Aarrestad",
"epost": "[email protected]",
"telefon": ""
}
]
}),
});
console.log(await r.json());
Svaret kommer her.
Eksempelsvar · HTTP 200
{
"status": "ok",
"resultat": {
"antall": 1,
"resultater": [
{
"ansatte": "11",
"beste_epost": "[email protected]",
"beste_epost_grad": "E",
"bransje": "Elektrisk installasjonsarbeid",
"daglig_leder": "Morten Aarrestad",
"epost_status": "avviker",
"firma": "Sandnes Elektriske As",
"firma_epost": "[email protected]",
"fylke": "Rogaland",
"har_mobil": false,
"hjemmeside": "",
"id": "crm-17",
"inn": {
"epost": "[email protected]",
"navn": "Morten Aarrestad",
"orgnr": "810034882"
},
"kommune": "Sandnes",
"kundetype": "begge",
"mobil_grad": "",
"omsetning": 10021242,
"orgnr": "810034882",
"sentralbord": "51685700",
"telefon_status": "begge_mangler",
"treff": "person"
}
],
"treff": 1
},
"meta": {
"belastet": {
"berikelse": 1
},
"berikelser": {
"brukt": 9,
"grense": 1000,
"igjen": 991
},
"plan": "gratis",
"sok": {
"brukt": 4,
"grense": 100,
"igjen": 96
},
"telefonpoeng": 4,
"vindu": "totalt"
}
}