# Firmasett > Norsk B2B-søk og berikelse for folk og AI-agenter: 65 926 norske selskaper med ansatte, siste regnskap, daglig leder med beste e-post, mobilnummer og LinkedIn-profil (med kilde og sikkerhetsgrad A–E), anslag på utestående, kunder og fakturaer, og fakturasignaler fra nettsidene. Tilgjengelig som REST-API, MCP-server (HTTP og stdio) og CLI. Ubegrenset data for fast månedspris; mobilnumre koster telefonpoeng. Bygd av Tiny Elephant AS på åpne data fra Brønnøysundregistrene, Regnskapsregisteret, NAV og selskapenes egne nettsider. Dekning akkurat nå: 58 253 daglige ledere, 15 357 med direkte e-post (pluss 10 785 gjettede), 18 315 med mobilnummer, 306 med LinkedIn, 61 476 med regnskap, 16 013 med nettside. Oppdatert 06.11.2026. ## Kom i gang (for agenter) 1. Et menneske må lage kontoen: be brukeren gå til https://firmasett.arnu.io/konsoll, skrive inn e-post og kopiere nøkkelen (begynner med `fs_`). Gratisplanen gir 1 000 berikelser og 100 søketreff uten kort. 2. Velg tilkobling: - MCP over HTTP (Claude Code, Cursor, VS Code, Windsurf, ChatGPT-utviklermodus): `https://firmasett.arnu.io/mcp` med `Authorization: Bearer fs_…`. Klienter som ikke kan sende hoder bruker `https://firmasett.arnu.io/mcp/fs_…` (nøkkelen i adressen). Claude Code: `claude mcp add --transport http firmasett https://firmasett.arnu.io/mcp --header "Authorization: Bearer fs_…"` - MCP lokalt (stdio): `claude mcp add firmasett -e FIRMASETT_NOKKEL=fs_… -- python3 mcp_server.py` (fil fra https://firmasett.arnu.io/slik-virker-det/mcp). - REST: `GET https://firmasett.arnu.io/v1/selskaper/sok?q=…` med `Authorization: Bearer fs_…`. OpenAPI: https://firmasett.arnu.io/openapi.json. - CLI: `firmasett konto` med `FIRMASETT_NOKKEL=fs_…` i miljøet (fil fra https://firmasett.arnu.io/slik-virker-det/cli). 3. Bekreft tilkoblingen med `GET /v1/konto` (MCP-verktøy `konto`). Den er gratis og teller ikke mot kvoten. 4. Onboarding: første gang nøkkelen brukes sier MCP-serveren fra i `initialize` (og `meta.onboarding_mangler` i hvert svar) at profilen ikke er fullført. Still brukeren spørsmålene fra `GET /v1/onboarding` (fullt navn, mobilnummer, jobb-e-post, firma, hva brukeren bestemmer over, hva brukeren påvirker beslutninger om), ett eller to om gangen, og lagre med `POST /v1/onboarding` (MCP `lagre_profil`). «-» betyr hoppet over. Gratis. 5. Forklar brukeren hva som koster: søketreff og berikelser trekkes fra planens 5-timersvindu; mobilnumre koster 1 telefonpoeng (1,50 kr) per nummer levert; `ikke_funnet` koster aldri noe. ## Regler agenter bør følge - Alle svar har samme konvolutt: `{"status": "ok" | "ikke_funnet" | "feil", "resultat": …, "meta": {kvote igjen, belastet}}`. Les `status`, ikke bare HTTP-koden: `ikke_funnet` er HTTP 200 og gratis. - Bruk `antall_kun=ja` på søk før du henter mange treff; det er gratis og viser totalen. - Vis bare den best rangerte kontaktverdien (det gjør API-et alt); `epost_alternativer` sier hvor mange andre vi kjenner. - Spør brukeren før du henter mer enn noen få mobilnumre (telefonpoeng). - Lov: å ringe en daglig leder på jobb er lov. E-post til en rolle i næringsvirksomhet er lov (markedsføringsloven § 15 gjelder fysiske personer; bruk næringsadresser). SMS til mobil til en fysisk person krever samtykke. Ikke bruk dataene til å kontakte folk privat. - 429 har `Retry-After` i sekunder. Vent, ikke hamre. - Rapporter kilde og grad (A–E) når du gir brukeren kontaktinfo, så hen vet hvor sikkert det er. ## Endepunkter (REST, base https://firmasett.arnu.io/v1) - GET /konto – plan, kvoter, forbruk (gratis) - GET /bruk – forbruk per dag siste 30 dager (gratis) - GET /onboarding, POST /onboarding {navn, telefon, epost, firma, bestemmer, paavirker} – profil og onboarding (gratis) - GET /bransjer – næringskoder med antall og dekning, fylker (gratis) - GET /selskaper/sok – fritekst + filtre: bransje, fylke, kommune, kundetype, ansatte_min/maks, omsetning_min/maks, stiftet_min/maks, utestaende_min, kunder_min, fakturaer_min, kan_sms, har_dl_mobil, har_dl_epost, har_dl_linkedin, har_nettside, har_regnskap, fakturerer_mange, kjede, konsern, signal, regnskapsforer, revisor, status (aktiv|konkurs|avvikling|alle), register=ja (hele Enhetsregisteret), sorter, antall (≤100), side, antall_kun - GET /selskaper/{orgnr} – alt om ett selskap inkl. daglig leder (1 berikelse) - POST /selskaper/berik {orgnrs: [≤100]} – mange selskaper (1 berikelse per funnet) - GET /personer/sok – daglige ledere, samme filtre - POST /berik/person {orgnr | navn + firma/domene} – beste e-post, LinkedIn, andre selskaper (1 berikelse) - POST /telefon/finn {orgnr | firma | domene} – mobil til daglig leder (1 telefonpoeng per nummer) - POST /epost/finn {fornavn, etternavn, domene | orgnr} – kjent adresse eller domenets mønster med alternativer (1 berikelse) - POST /epost/valider {eposter: [≤100]} – syntaks, MX, rolleadresse, fridomene, engangsdomene, kjent (1 berikelse per adresse) - GET /epost/omvendt?epost=|domene= – hvem og hvilket selskap (1 berikelse) - POST /sjekk {rader: [≤100 × {id, orgnr, firma, domene, navn, epost, telefon}]} – sjekk egne kontakter: treff, epost_status/telefon_status (lik|avviker|vi_mangler|du_mangler), beste e-post (1 berikelse per treff) MCP-verktøy med samme funksjoner: sok_selskaper, berik_selskap, berik_selskaper, sok_personer, berik_person, finn_mobil, finn_epost, valider_epost, omvendt_epost, sjekk_liste, bransjer, konto, bruk, onboarding, lagre_profil. ## Planer - Gratis: 0 kr/mnd – 1 000 berikelser og 100 søketreff totalt. Ingen kort. - Solo: 290 kr/mnd – 1 000 berikelser og 500 søketreff per 5 timer. - Pro: 990 kr/mnd – 15 000 berikelser og 7 500 søketreff per 5 timer. - Team: 3 990 kr/mnd – 150 000 berikelser og 75 000 søketreff per 5 timer. - Telefonpoeng: 1,50 kr per mobilnummer levert, pakker 180 for 290 kr, 650 for 990 kr, 1300 for 1 990 kr. Ikke på gratisplanen. ## Sider - [Slik virker det](https://firmasett.arnu.io/slik-virker-det.md): oversikt over tilkoblingene - [For AI-agenter](https://firmasett.arnu.io/slik-virker-det/ai-agenter.md): oppsettprompt og regler - [MCP-server](https://firmasett.arnu.io/slik-virker-det/mcp.md): oppsett per klient - [CLI](https://firmasett.arnu.io/slik-virker-det/cli.md): kommandoer, CSV-berikelse, ferdigheter - [REST-API](https://firmasett.arnu.io/slik-virker-det/api.md): konvolutt, feil, eksempler - [Integrasjoner](https://firmasett.arnu.io/slik-virker-det/integrasjoner.md): HubSpot, Pipedrive, SuperOffice, Google Sheets, n8n, Make, Tripletex - [Våre data](https://firmasett.arnu.io/data.md): kilder, dekning, felt, sikkerhetsgrader, anslag - [API-dokumentasjon](https://firmasett.arnu.io/dok.md): full referanse - [Priser](https://firmasett.arnu.io/priser?format=md) og [Rimelig bruk](https://firmasett.arnu.io/rimelig-bruk.md) - [FAQ](https://firmasett.arnu.io/faq.md) - [Funksjoner](https://firmasett.arnu.io/funksjoner.md): én side per bruksområde - [Ferdighetsbibliotek](https://firmasett.arnu.io/bibliotek?format=md): SKILL.md-filer - [Berik en liste med orgnr](https://firmasett.arnu.io/bibliotek/berik-liste-orgnr/SKILL.md): CSV med organisasjonsnumre inn, CSV med regnskap, bransje, daglig leder med e-post og grad, fakturasignaler ut. Bruk CLI-et, tørrkjør først, gjenoppta ved stopp. - [Bygg en målliste fra en ICP-beskrivelse](https://firmasett.arnu.io/bibliotek/bygg-maalliste/SKILL.md): Fra «vi selger til …» til en beriket liste med daglig leder, e-post og grad, regnskap og signaler. Søk, berik, velg, og hent mobil bevisst. - [Finn selskaper etter fakturasignaler og utestående](https://firmasett.arnu.io/bibliotek/fakturasignaler-og-utestaende/SKILL.md): For inkasso, purring, factoring, regnskap og betalingsløsninger: selskaper som fakturerer mange, purrer selv, bruker avtalegiro, eller har mye utestående. Med forbehold om at anslag er anslag. - [Finn e-post fra navn og domene](https://firmasett.arnu.io/bibliotek/finn-epost-fra-navn/SKILL.md): E-postadresse for hvem som helst på et firmadomene: kjent adresse hvis personen er daglig leder, ellers domenets bekreftede mønster med alternativer. Valider før bruk. - [Finn kontaktinfo til daglig leder](https://firmasett.arnu.io/bibliotek/finn-kontakt/SKILL.md): Fra firmanavn, orgnr eller domene til daglig leders beste e-post, LinkedIn og mobil, med kilde og grad. Mobil hentes bevisst. - [Google Sheets: berik et ark](https://firmasett.arnu.io/bibliotek/google-sheets-berikelse/SKILL.md): Last ned arket som CSV, kjør CLI-et, last opp igjen, eller bruk et ti-linjers Apps Script per rad. Hold mobil utenfor arket. - [HubSpot: vask og fyll kontakter og selskaper](https://firmasett.arnu.io/bibliotek/hubspot-vask-og-utfyll/SKILL.md): Eksporter fra HubSpot, sjekk og berik med Firmasett, importer fs_-kolonnene som egenskaper. Med egenskapsliste og mapping. - [Berik innkommende leads automatisk](https://firmasett.arnu.io/bibliotek/innkommende-lead-berikelse/SKILL.md): Skjema med e-post eller orgnr → fullt selskapsbilde → ruting etter størrelse og bransje. Oppskrift for n8n, Make og egen kode. - [Kald e-post i Norge som er lovlig og blir lest](https://firmasett.arnu.io/bibliotek/kald-epost-norge/SKILL.md): Hvem du kan sende til, hvordan du skriver kort og saklig på norsk, og hvordan du bruker grad og signaler fra Firmasett i teksten. - [Kartlegg kjeder og konsern](https://firmasett.arnu.io/bibliotek/kjede-og-konsern/SKILL.md): Finn hvem som er del av en kjede eller et konsern, hvem som er morselskap, og hvor beslutningen egentlig tas før du ringer en avdeling. - [Møteforberedelse på to minutter](https://firmasett.arnu.io/bibliotek/moteforberedelse/SKILL.md): Alt om selskapet og lederen før møtet: hva de gjør, hvordan de ligger an, hvem som bestemmer, hvordan de fakturerer, og hva du bør spørre om. - [Hvem er denne e-posten?](https://firmasett.arnu.io/bibliotek/omvendt-epost/SKILL.md): Fra e-postadresse eller domene til selskap, regnskap, bransje og daglig leder. For innkommende leads og innboksen. - [Pipedrive: fyll organisasjoner og personer](https://firmasett.arnu.io/bibliotek/pipedrive-utfyll/SKILL.md): Eksport, berikelse og import for Pipedrive, med egendefinerte felt og automasjon ved ny organisasjon. - [Finn kundene til et regnskapsbyrå eller en revisor](https://firmasett.arnu.io/bibliotek/regnskapsforer-kunder/SKILL.md): Alle selskaper som har et gitt byrå som regnskapsfører eller revisor. For byråer som vil kjenne porteføljen, og for leverandører som selger gjennom byråer. - [Sjekk CRM-et mot Firmasett](https://firmasett.arnu.io/bibliotek/sjekk-crm-mot-firmasett/SKILL.md): Vask en kundeliste eller et CRM: finn kontakter som ikke lenger er daglig leder, e-poster som avviker, numre som er gamle, og hull vi kan fylle. Rad for rad, med forslag. - [Sjekk kvote og forbruk](https://firmasett.arnu.io/bibliotek/sjekk-mitt-forbruk/SKILL.md): Hva planen gir, hva som er brukt i vinduet, telefonpoeng igjen, og forbruk per dag. Gratis. - [Søk B2B-prospekter i Norge](https://firmasett.arnu.io/bibliotek/sok-prospekter/SKILL.md): Finn norske selskaper og daglige ledere med filtre på bransje, sted, størrelse, kundetype, utestående-anslag og fakturasignaler. Tell gratis først, hent så, vis grad på kontaktinfo. - [Valider en e-postliste](https://firmasett.arnu.io/bibliotek/valider-epostliste/SKILL.md): Inntil 100 adresser per kall: syntaks, domenet svarer, rolleadresse, fridomene, engangsdomene, kjent hos oss. Rydd før utsendelse. - [Blogg](https://firmasett.arnu.io/blogg.md) - [Etterlevelse](https://firmasett.arnu.io/etterlevelse.md), [Personvern](https://firmasett.arnu.io/personvern.md), [Vilkår](https://firmasett.arnu.io/vilkar.md), [Underleverandører](https://firmasett.arnu.io/underleverandorer.md) - [OpenAPI](https://firmasett.arnu.io/openapi.json), [sitemap](https://firmasett.arnu.io/sitemap.xml) - Hele nettstedet i én fil: https://firmasett.arnu.io/llms-full.txt ## Valgfritt - Alle HTML-sider finnes som Markdown ved å legge til `.md` på adressen eller sende `Accept: text/markdown`. - Kontakt: hei@firmasett.no --- # Blogg https://firmasett.arnu.io/blogg # Blogg Korte, praktiske tekster om å finne, berike og bruke norsk selskapsdata. Skrevet for selgere, byråer og utviklere, og lesbare for agenter. --- # Slik finner du mobilnummeret til daglig leder (og hva som er lov) https://firmasett.arnu.io/blogg/slik-finner-du-mobilnummer-til-daglig-leder # Slik finner du mobilnummeret til daglig leder Sentralbordet er lett. Direktenummeret er det som gir møtet. Her er kildene vi bruker, i rekkefølgen vi stoler på dem. ## 1. Selskapets egen nettside, ved navnet Kontaktsida, «om oss», ansattsida. Når nummeret står ved navnet, er det grad A. `tel:`-lenker og strukturerte data (JSON-LD) gir treff som ikke synes i teksten. ## 2. Stillingsannonser Når selskapet ansetter, er daglig leder ofte kontaktperson, med direkte nummer. NAVs stillingsfeed er åpen. Grad B, fordi annonsen kan være skrevet av andre. ## 3. Lederens eget selskap Mange daglige ledere eier et holdingselskap eller har et enkeltpersonforetak. Der er det registrerte telefonnummeret i Enhetsregisteret lederens eget. Vi kobler på navn og fødselsdato så vi ikke tar feil Ola Hansen. Grad B. ## 4. Eneste nummer på en liten nettside Et selskap med tre ansatte og ett mobilnummer på sida: det er lederens. Grad B. ## 5. Andre selskaper lederen har rolle i Daglig leder i A er styreleder i B, og B har et mobilnummer. Grad C, fordi det kan være en annen i B. ## 6. Registrert mobil på selskapet Enhetsregisteret har telefon per selskap. Når det er et mobilnummer og selskapet er lite, er det ofte lederen. Grad B når e-postadressen ved siden av inneholder lederens navn, ellers ikke tatt med. ## 7. Navnesøk Samme navn i samme fylke i et annet selskap med nummer. Grad D. Vi dropper treffet hvis det finnes flere kandidater med forskjellige numre. ## Hva som er lov - **Ringe:** lov. Det er en henvendelse til virksomheten. - **SMS:** markedsføringsloven § 15 krever samtykke for elektronisk markedsføring til fysiske personer. En SMS treffer alltid en fysisk person. Så: ikke SMS uten samtykke, selv om nummeret står på jobbnettsida. - **Lagre:** du blir behandlingsansvarlig for det du henter. Slett når rollen er over. ## Gjøre det selv eller hente det Manuelt tar det fem til femten minutter per leder. Firmasett har gjort det for 18 315 ledere og leverer nummeret med kilde og grad for 1,50 kr. [Slik](/funksjoner/finn-mobil). --- # Slik finner du e-postadressen til daglig leder i et norsk selskap https://firmasett.arnu.io/blogg/slik-finner-du-epost-til-daglig-leder # Slik finner du e-postadressen til daglig leder ## 1. Navnet i adressen på selskapets side `kari.nordmann@firma.no` på kontaktsida. Grad A. Ingen tvil om person, ingen tvil om domene. ## 2. Adressen ved navnet «Daglig leder Kari Nordmann, kn@firma.no». Grad A. ## 3. Registeret Enhetsregisteret har én e-post per selskap. I små selskaper er det ofte lederens egen (`kari@firma.no`). Vi tar den med bare når navnet er i adressen. Grad B. ## 4. Mønsteret på domenet Har sida `ola.hansen@firma.no` og `per.berg@firma.no`, er mønsteret fornavn.etternavn, og `kari.nordmann@firma.no` er trolig riktig. Grad C. Mønsteret finnes på 4 010 domener hos oss. Vanligste norske mønstre: fornavn.etternavn, fornavn, f.etternavn. ## 5. Gjett Uten mønster: fornavn.etternavn er riktig for rundt halvparten av norske selskaper. Grad D. Valider først. ## Bekreft før du sender Syntaks og MX-oppslag fanger døde domener. Rolleadresser (post@) går alltid fram, men ikke til lederen. SMTP-probing fraråder vi; det gir falske svar og svartelister. ## Lov E-post til jobbadresse om noe som gjelder virksomheten er lov uten samtykke. Privatadresser (gmail) lar du være. ## Hos oss 15 357 ledere med adresse av grad A–C, og mønster for resten. [Finn e-post](/funksjoner/finn-epost). --- # Bygg en ringeliste med et API på ti minutter https://firmasett.arnu.io/blogg/bygg-ringeliste-med-api # Bygg en ringeliste med et API på ti minutter Målet: regnskapsbyråer i Rogaland og Agder med 5–30 ansatte, daglig leder med e-post, sortert etter hvor mye de har utestående. ## 1. Tell ```bash firmasett sok --bransje 69.2 --fylke Rogaland,Agder --ansatte-min 5 --ansatte-maks 30 --har-dl-epost ja --antall-kun ja ``` Gratis. Si at det gir 180. ## 2. Hent ```bash firmasett sok --bransje 69.2 --fylke Rogaland,Agder --ansatte-min 5 --ansatte-maks 30 --har-dl-epost ja --sorter utestaende --alle --ut byraaer.csv ``` 180 søketreff. Fila har orgnr, navn, daglig leder, kommune, omsetning, anslått utestående. ## 3. Berik ```bash firmasett berik-fil byraaer.csv --ut byraaer-beriket.csv ``` 180 berikelser. Nå har hver rad e-post med grad, LinkedIn, siste regnskap, fakturasignaler, og `fs_dl_har_mobil`. ## 4. Mobil, bevisst De 40 beste: `firmasett mobil --orgnr …`, ett poeng hver. Eller la agenten gjøre det: «hent mobil til de 40 øverste, det er greit med 40 poeng». ## I Claude i stedet «Lag en ringeliste med regnskapsbyråer i Rogaland og Agder, 5–30 ansatte, daglig leder med e-post, sortert på utestående, og gi meg CSV.» Agenten gjør steg 1–3 selv og spør før steg 4. [Ferdigheten](/bibliotek/bygg-maalliste) sier hvordan. --- # Norske B2B-datakilder sammenlignet: Brreg, Proff, Purehelp, 1881, LinkedIn og Firmasett https://firmasett.arnu.io/blogg/norske-b2b-datakilder-sammenlignet # Norske B2B-datakilder sammenlignet | Kilde | Har | Mangler | Pris | Agent-klar | |---|---|---|---|---| | **Brønnøysundregistrene (åpne API)** | Register, roller, regnskap (råfiler) | Kontaktinfo til personer, nettsidedata, anslag | Gratis | Delvis (API, men mye arbeid) | | **Proff / Proff Forvalt** | Register, regnskap, roller, noe telefon | Direkte e-post, signaler | Per bruker, år | Nei | | **Purehelp** | Register, regnskap | Kontakt til leder | Abonnement | Nei | | **1881** | Telefon per person og selskap | Kobling rolle–nummer, regnskap | Per oppslag | Nei | | **LinkedIn Sales Navigator** | Personer, titler | Orgnr, regnskap, e-post, norsk dekning i SMB | Per sete | Nei (og skraping er forbudt) | | **Apollo / ZoomInfo** | Internasjonale kontakter | Norsk SMB-dekning, orgnr, regnskap | Per sete + kreditter | Delvis | | **Firmasett** | Register, regnskap, roller, daglig leder med e-post/mobil/LinkedIn og grad, anslag, fakturasignaler | Ansatte under leder, eierandeler (kommer) | Fra 290 kr/mnd, ingen seter | Ja: MCP, CLI, llms.txt, OpenAPI, ferdigheter | ## Når du bør bruke hva - Trenger du ett oppslag av og til: Proff eller Brreg. - Trenger du telefon til en navngitt person uten selskap: 1881. - Trenger du internasjonale kontakter: Apollo. - Trenger du norske SMB-ledere med kontaktinfo, i mengde, fra et verktøy eller en agent: Firmasett. Test med gratisplanen på din egen liste. Det er den eneste sammenligningen som betyr noe. --- # Markedsføringsloven § 15 og GDPR for B2B-utsendelser: hva er lov? https://firmasett.arnu.io/blogg/markedsforingsloven-og-gdpr-for-b2b # Hva er lov i B2B-salg i Norge? ## Ringe Lov. Telefon til en virksomhet er ikke regulert av § 15. Reservasjonsregisteret gjelder forbrukere. ## E-post Markedsføringsloven § 15 forbyr elektronisk markedsføring til fysiske personer uten samtykke, men tredje ledd åpner for e-post til roller i næringsvirksomhet når henvendelsen gjelder virksomheten. Jobbadresse, relevant innhold: lov. Privatadresse: ikke. ## SMS En SMS går til en fysisk person. Unntaket for næringsvirksomhet er i praksis ikke anvendelig; Forbrukertilsynet behandler SMS til mobil som markedsføring til fysisk person. Ikke send uten samtykke. ## Lagre og behandle GDPR gjelder. Grunnlaget for å behandle kontaktopplysninger om roller er berettiget interesse (art. 6 nr. 1 f). Krav: begrens til rolleopplysninger, slett når rollen er over, respekter protester, informer (art. 14) i personvernerklæringen din. ## Kjøpe data Lov når leverandøren har lovlig grunnlag og du har det for din bruk. Spør leverandøren hvor dataene kommer fra. Skrapet LinkedIn-data bryter LinkedIns vilkår og er et svakt grunnlag. ## I praksis Ring. Send e-post til jobbadressen. Ikke SMS. Slett når lederen slutter. Ha en setning om det i personvernerklæringen. [Slik gjør vi det](/etterlevelse). --- # Våre data https://firmasett.arnu.io/data # Våre data Firmasett er bygd på åpne norske kilder og selskapenes egne nettsider, satt sammen slik at én forespørsel gir hele bildet. Alt er sporbart: hver kontaktverdi har en kilde, og hver kilde har en grad. ## Dekning | Hva | Antall | |---|---| | Selskaper med ansatte | 65 926 | | Med siste årsregnskap | 61 476 | | Med nettside (lest av oss) | 16 013 | | Daglige ledere | 58 253 | | Ledere med direkte e-post (grad A–C) | 15 357 | | Ledere med gjettet e-post (grad D–E) | 10 785 | | Ledere med mobilnummer | 18 315 | | Ledere med LinkedIn-profil | 306 | | Selskaper med mobilnummer (kan motta SMS) | 16 031 | | Selskaper med fakturasignaler fra nettsida | 4 756 | | Selskaper merket som kjede | 2 609 | | Nettsider funnet ved å gjette fra firmanavnet og bekrefte | 20 | | Enheter i registertabellen (oppslag på ethvert orgnr, bare registerdata) | 1 177 715 | Oppdatert 06.11.2026; datasettet bygges på nytt hver natt. Hvorfor «med ansatte»: Enhetsregisteret oppgir ikke antall ansatte under fem, så utvalget er selskaper som har rapportert ansatte. Det er de som fakturerer, kjøper og kan ringes. ## Kilder | Kilde | Gir oss | |---|---| | **Enhetsregisteret** (Brønnøysundregistrene, åpne data) | Orgnr, navn, organisasjonsform, næringskode, adresse, stiftelsesdato, ansatte, telefon, e-post, nettside, konsern, mva | | **Rollene i Enhetsregisteret** | Daglig leder, styreleder, regnskapsfører, revisor, og hvilke andre selskaper daglig leder har roller i | | **Underenheter** | Avdelinger og hvor de ligger, som gir kjedesignal | | **Regnskapsregisteret** (åpne data) | Siste innsendte årsregnskap: omsetning, driftsresultat, årsresultat, egenkapital, kundefordringer, bankinnskudd, lønn | | **Selskapets egen nettside** | Direkte e-post og telefon til daglig leder (`tel:`, `mailto:`, JSON-LD, kontakt- og ansattsider), adressemønster på domenet, LinkedIn-lenker, fakturasignaler (purregebyr, inkasso, avtalegiro, efaktura, EHF, abonnement), betalingsmåter, inkassoselskap | | **NAVs stillingsfeed** (åpen) | Kontaktpersoner i aktive stillingsannonser, med direkte e-post og telefon | | **Brukerbidrag** | Kontaktverdier brukerne sender inn til `sjekk` og oppslagene, telt per uavhengig konto (se [vilkår](/vilkar) § 6) | Vi kjøper ikke data fra tredjeparter og har ingen skrapede LinkedIn-profiler. Kjøpte uttrekk (Proff, 1881, D&B) kan legges til for kunder som trenger det, men er ikke i standarddatasettet. ## Sikkerhetsgrader Hver e-post, hvert mobilnummer og hver LinkedIn-profil har poeng 0–100 etter kilde, oversatt til en grad: | Grad | Betyr | Typiske kilder | Anbefaling | |---|---|---|---| | **A** | Bekreftet ved navnet | Navnet står i adressen på selskapets egen nettside, nummeret står ved navnet på nettsida eller i register | Bruk | | **B** | Egen eller offentlig kilde uten navnet rett ved | Daglig leders eget selskap (ENK/holding), kontaktperson i stillingsannonse, eneste nummer på en liten nettside, brukerbidrag fra 3+ kontoer | Bruk, sjekk ved tvil | | **C** | Avledet | Domenets bekreftede adressemønster, nummer fra et annet selskap lederen har rolle i, brukerbidrag fra 1–2 kontoer, LinkedIn-søk «trolig» | Bruk med forbehold | | **D** | Gjett med støtte | Vanligste mønster uten bekreftelse på domenet, navnesøk | Valider først | | **E** | Gjett | Ingen støtte | Ikke send uten validering | API-et viser bare den best rangerte verdien per slag, og `epost_alternativer` sier hvor mange andre vi kjenner. Når brukere bekrefter en verdi gjennom `sjekk`, løftes den (aldri over A). Når flere uavhengige kontoer sender samme nye verdi, kommer den inn som B. Grad sier hvor sikre vi er på at verdien hører til personen. Den sier ikke at adressen tar imot e-post akkurat nå; det gjør `epost/valider` (MX-oppslag, rolleadresse, engangsdomene). ## Felt ### selskap `orgnr`, `navn`, `orgform`, `bransje_kode` (NACE), `bransje`, `ansatte`, `stiftet`, `fylke`, `kommune`, `poststed`, `adresse`, `telefon`, `telefon_type` (mobil/fast), `mobil`, `kan_sms`, `epost`, `hjemmeside`, `mva`, `konsern`, `morselskap`, `avdelinger`, `kjede`, `kjedesignal`, `holding`, `linkedin_firma`, `beskrivelse`, `tidligere_navn`, `formaal`. ### regnskap `regnskapsaar`, `omsetning`, `driftsresultat`, `aarsresultat`, `egenkapital`, `fordringer` (kundefordringer), `fordringer_andel` (av omsetning), `bank`, `lonn`, `aksjekapital`. Beløp i kroner. ### anslag Våre egne anslag per næringskode, ment som filtre, ikke fasit: - `kundetype`: B2B, B2C, begge eller offentlig. - `betaling`: faktura, kort eller blandet, hva bransjen vanligvis bruker. - `utestaende_anslag`: 85 % av kundefordringene når regnskap finnes, ellers omsetning × bransjens kredittdager / 365. `utestaende_kilde` sier hvilken. - `kunder_anslag` og `fakturaer_anslag`: omsetning delt på bransjens typiske kjøp per kunde og fakturaer per kunde. - `dager_anslag`: bransjens typiske kredittdager. ### signaler Fra nettsida: `fakturasignaler` (purregebyr, inkasso, forsinkelsesrente, avtalegiro, efaktura, ehf, abonnement, min side, nettbutikk …), `fakturerer_mange` (nevner purring eller inkasso), `betalingsmaate_nettside`, `regnskapssystem`, `inkassoselskap`, `nettside_eposter_antall`. ### roller `daglig_leder`, `styreleder`, `regnskapsforer`, `revisor`. Regnskapsfører og revisor er søkbare: «alle kunder av X Regnskap». ### daglig_leder `navn`, `epost` + `epost_kilde` + `epost_grad`, `har_mobil` + `mobil_grad` (nummeret via `telefon/finn`), `kan_sms`, `linkedin` + `linkedin_kilde` + `linkedin_grad`, `andre_selskaper`, `epost_alternativer`. Fødselsdato brukes internt til å skille personer med samme navn, men leveres aldri ut. ## Hva vi ikke har - Ansatte under daglig leder (unntatt der brukere bidrar eller stillingsannonser nevner dem). - Eierandeler fra aksjonærregisteret (kommer). - Privatadresser eller private telefonnumre. Et mobilnummer leveres fordi det står på selskapets side, i en stillingsannonse eller i registeret til lederens eget selskap. - Enkeltpersonforetak uten ansatte. ## Oppdatering Hver natt: Enhetsregisteret og underenhetene lastes ned på nytt (nye selskaper, konkurs, avvikling, nye ansatte-tall), regnskap hentes når registeret melder et nyere årsregnskap, roller hentes for nye selskaper og for dem med rolleendring siden i går (endringsfeeden), NAVs annonser leses, nettsider som mangler i registeret gjettes fra firmanavnet og bekreftes (orgnr eller navnet på sida), nye nettsider og de eldst leste leses på nytt, alle domener MX-sjekkes, brukerbidrag innarbeides, og datafila bygges og byttes inn. `dekning.oppdatert` i [llms.txt](/llms.txt) viser siste bygg. Konkurs og avvikling er med i datasettet med `status` (aktiv, konkurs, avvikling, tvangsavvikling); søk gir bare aktive med mindre du sender `status=alle`. Selskaper som forsvinner fra registeret beholdes i registertabellen som `slettet`. --- # API-dokumentasjon https://firmasett.arnu.io/dok # Firmasett API v1 Base `https://firmasett.arnu.io/v1`. Nøkkel i `Authorization: Bearer fs_…` ([gratis i konsollen](/konsoll)). JSON inn og ut, UTF-8, norske feltnavn. Maskinlesbar beskrivelse: [openapi.json](/openapi.json). Kort versjon for agenter: [llms.txt](/llms.txt). ## Konvolutt Alle svar: ```json {"status": "ok | ikke_funnet | feil", "resultat": "…", "melding": "bare ved ikke_funnet", "meta": {"plan": "…", "vindu": "5 timer", "berikelser": {"grense": 0, "brukt": 0, "igjen": 0}, "sok": {"grense": 0, "brukt": 0, "igjen": 0}, "telefonpoeng": 0, "belastet": {"berikelse": 1}}} ``` `ikke_funnet` er HTTP 200 og koster ingenting. `feil` kommer med HTTP 4xx og `feil: {kode, melding, http}`. | HTTP | kode | Når | |---|---|---| | 400 | `ugyldig_foresporsel` | Manglende eller ugyldig parameter; meldingen sier hvilken | | 401 | `ugyldig_nokkel` | Mangler eller feil nøkkel | | 403 | `ingen_telefonpoeng` | Mobilnummer finnes, men kontoen har ikke poeng | | 429 | `kvote_brukt` | Planens søketreff eller berikelser er brukt opp i vinduet; `Retry-After` i sekunder | ## Konto (gratis) ### GET /konto Plan, grenser, brukt, telefonpoeng. ### GET /bruk Forbruk per dag siste 30 dager: `{dager: [{dag, berikelse, sok, telefon}]}`. ### GET /onboarding og POST /onboarding Profilen agenten samler inn første gang: `navn, telefon, epost, firma, bestemmer, paavirker`. GET gir `{fullfort, mangler, profil, sporsmal}`. POST tar ett eller flere felt («-» = hoppet over) og svarer med ny status. Til profilen er fullført ligger `onboarding_mangler` i `meta` på alle svar, og MCP-serverens `initialize` ber agenten stille spørsmålene. Gratis. ### GET /bransjer `{bransjer: [{kode, bransje, antall, med_dl_epost, med_dl_mobil}], fylker: [...]}`. To-sifrede næringskoder. ## Søk ### GET /selskaper/sok Fritekst `q` (navn, daglig leder eller orgnr) pluss filtre. Svar: `{total, side, antall, treff: [SelskapKort]}`. Hvert treff som leveres teller som ett søketreff. `antall_kun=ja` gir bare `total`, gratis. Oppslag på et orgnr som ikke er i hoveddatasettet (`GET /selskaper/{orgnr}`) gir registerdata fra Enhetsregisteret gratis, med `dekning: register`; selskaper i hoveddatasettet har `dekning: full`. Driftsstatus uten nøkkel: [`/status.json`](/status.json) (siste bygg, dekning, siste nattkjøring). `SelskapKort`: orgnr, navn, bransje_kode, bransje, ansatte, stiftet, fylke, kommune, omsetning, kundetype, hjemmeside, utestaende_anslag, kunder_anslag, daglig_leder, har_dl_epost, har_dl_mobil, har_dl_linkedin, kan_sms. ### GET /personer/sok Samme filtre, `q` er navn. Treff: `{navn, tittel, orgnr, firma, bransje, fylke, kommune, ansatte, har_epost, har_mobil, har_linkedin}`. ### Filtre {#filtre} | Parameter | Verdi | Virker på | |---|---|---| | `bransje` | NACE-prefiks, flere med komma: `69.2,85.1` | bransje_kode | | `fylke` | Navn, flere med komma | fylke | | `kommune` | Navn | kommune | | `kundetype` | B2B, B2C, begge, offentlig | anslag | | `ansatte_min`, `ansatte_maks` | tall | ansatte | | `omsetning_min`, `omsetning_maks` | kr | siste regnskap | | `stiftet_min`, `stiftet_maks` | år | stiftet | | `utestaende_min`, `utestaende_maks` | kr | utestaende_anslag | | `kunder_min`, `fakturaer_min` | tall | anslag | | `kan_sms`, `har_dl_mobil`, `har_dl_epost`, `har_dl_linkedin`, `har_nettside`, `har_regnskap`, `fakturerer_mange`, `kjede`, `konsern` | ja / nei | flagg | | `signal` | delstreng: purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement, nettbutikk | fakturasignaler | | `regnskapsforer`, `revisor`, `regnskapssystem` | delstreng | roller/signaler | | `sorter` | omsetning (standard uten `q`), ansatte, utestaende, kunder, fakturaer, nyeste, navn | | | `antall` | 1–100, standard 25 | | | `side` | fra 1 | | | `antall_kun` | ja | bare tell, gratis | | `status` | aktiv (standard), konkurs, avvikling, tvangsavvikling, alle | konkurs og avvikling er med i datasettet som signal | | `register` | ja | søk i hele Enhetsregisteret (1,2 mill. enheter: navn, orgnr, sted, bransje, orgform) i stedet for hoveddatasettet; treffene har `dekning: register` | Holdingselskaper og inkassoselskaper er alltid filtrert bort fra søk, men kan berikes på orgnr. ## Berikelse ### GET /selskaper/{orgnr} 1 berikelse. `resultat` = `{selskap, regnskap, anslag, signaler, roller, daglig_leder}`. Feltene står på [Våre data](/data#felt). `daglig_leder.mobil` er `tilgjengelig` eller tom; nummeret kommer fra `/telefon/finn`. ### POST /selskaper/berik `{"orgnrs": ["…", …]}` inntil 100. `resultat: {antall, funnet, resultater: [{orgnr, status, …}]}`. 1 berikelse per funnet. ### POST /berik/person `{"orgnr"}` eller `{"navn", "firma"}` eller `{"navn", "domene"}`. Treffer daglig leder. Hvis navnet ikke er daglig leder: `ikke_funnet` med hvem som er det (gratis). `resultat`: `navn, tittel, orgnr, firma, bransje, fylke, hjemmeside, epost, epost_kilde, epost_grad, epost_sikkerhet, epost_alternativer, har_mobil, mobil_grad, kan_sms, linkedin, linkedin_kilde, linkedin_grad, andre_selskaper`. ## Telefon ### POST /telefon/finn `{"orgnr"}` eller `{"firma"}` eller `{"domene"}`. 1 telefonpoeng per nummer levert. `resultat`: `orgnr, firma, navn, mobil, kilde, grad, sikkerhet, kan_sms, alternativer, merk`. Uten nummer: `ikke_funnet` med `sentralbord` og `firma_mobil`, gratis. Uten poeng: 403. ## E-post ### POST /epost/finn `{"fornavn", "etternavn", "domene"}` eller `{"navn", "orgnr"}`. 1 berikelse. Kjent adresse (A/B) hvis personen er daglig leder; ellers domenets bekreftede mønster (C) med `alternativer`; ellers vanligste norske mønster (D). ### POST /epost/valider `{"eposter": [≤100]}` eller `{"epost"}`. 1 per adresse. Per adresse: `syntaks, domene, domene_svarer, rolleadresse, fridomene, engangsdomene, kjent_i_datasettet, vurdering, grad`. ### GET /epost/omvendt `?epost=` eller `?domene=`. `resultat` = selskap som over + `treff` (daglig leders adresse | selskapets domene). 1 berikelse ved treff. ## Sjekk ### POST /sjekk `{"rader": [{id, orgnr, firma, domene, navn, epost, telefon, linkedin, tittel}, …]}` inntil 100. Selskapet finnes på orgnr, ellers domene (også fra e-postadressen hvis den ikke er gmail o.l.), ellers firmanavn. Per rad: `treff` (person når navnet er daglig leder, selskap når bare selskapet finnes, ingen), `orgnr, firma, daglig_leder, bransje, ansatte, fylke, kommune, hjemmeside, omsetning, kundetype, sentralbord, firma_epost`, og når personen er daglig leder (eller raden ikke har navn): `epost_status` og `telefon_status` med verdiene `lik`, `avviker`, `vi_mangler`, `du_mangler`, `begge_mangler`, pluss `beste_epost`, `beste_epost_grad`, `har_mobil`, `mobil_grad`. Ved `avviker` avslører vi ikke vårt nummer, bare at det er et annet; e-posten vår står i `beste_epost`. 1 berikelse per rad med treff. Innsendte verdier lagres som bidrag ([vilkår](/vilkar) § 6). ## MCP HTTP: `https://firmasett.arnu.io/mcp` med samme nøkkel i `Authorization`, eller `https://firmasett.arnu.io/mcp/fs_…`. Stdio: `mcp_server.py`. Verktøyene speiler endepunktene: `sok_selskaper, berik_selskap, berik_selskaper, sok_personer, berik_person, finn_mobil, finn_epost, valider_epost, omvendt_epost, sjekk_liste, bransjer, konto, bruk`. Oppsett per klient på [MCP-sida](/slik-virker-det/mcp). ## CLI `firmasett` dekker alle endepunkter og legger til `sjekk` og `berik-fil` for CSV, `--alle --ut` for å dumpe søk, og `skill install`. Se [CLI-sida](/slik-virker-det/cli). ## Grenser | Plan | Berikelser | Søketreff | Vindu | |---|---|---|---| | Gratis | 1 000 | 100 | totalt | | Solo | 1 000 | 500 | 5 timer, rullerende | | Pro | 15 000 | 7 500 | 5 timer, rullerende | | Team | 150 000 | 75 000 | 5 timer, rullerende | Grensene deles av alle nøkler på kontoen. Konto-, bruk- og bransjeendepunktene teller aldri. ## Versjonering Feltnavn og konvolutt er stabile i v1. Nye felt kan komme til uten varsel; felt fjernes ikke uten ny versjon. --- # Spørsmål og svar https://firmasett.arnu.io/faq ## Om Firmasett **Hva er Firmasett?** Norsk B2B-data for folk og AI-agenter: 65 926 selskaper med ansatte, siste regnskap, daglig leder med beste e-post, mobilnummer og LinkedIn, anslag på utestående og kunder. Levert som REST-API, MCP-server og CLI, fra 290 kr i måneden. **Hvordan skiller det seg fra Proff, Purehelp og 1881?** De er oppslagsverk du leser i. Firmasett er data du kaller fra der du jobber: Claude, ChatGPT, Cursor, HubSpot, n8n eller curl. Ingen seter, ingen årsavtale, ingen dashbord. Og vi har satt sammen det som ellers ligger spredt: regnskap, direkte kontakt til daglig leder, og signaler om hvordan selskapet fakturerer. **Hvem er det for?** Selgere og team som ringer og sender, byråer som bygger lister, økonomi- og inkassoselskaper som trenger fakturasignaler, utviklere som trenger norsk selskapsdata i et produkt, og AI-agenter som gjør alt dette på vegne av noen. **Hva betyr «bygd for AI-agenter»?** Flat pris så agenter i løkke ikke lager overraskelser. Én svarform. Gratis bomskudd. Kvote i hvert svar. MCP innebygd. llms.txt, OpenAPI og et ferdighetsbibliotek som forteller agenten hvordan den bør gjøre jobben. ## Data **Hvor kommer dataene fra?** Enhetsregisteret og rollene der, Regnskapsregisteret, underenheter, NAVs åpne stillingsfeed, selskapenes egne nettsider og brukerbidrag. Alt står på [Våre data](/data). Vi kjøper ikke persondata og skraper ikke LinkedIn. **Hvor ferske er de?** Hver natt. Enhetsregisteret og underenhetene lastes ned på nytt, nye og endrede regnskap og roller hentes, NAV-annonsene leses, nettsider som mangler gjettes fra firmanavnet og bekreftes, nye og de eldst leste nettsidene leses på nytt, domener MX-sjekkes, brukerbidrag innarbeides, og datafila bygges og byttes inn. Siste bygg: 06.11.2026. **Hva er sikkerhetsgraden?** A–E per kontaktverdi, etter kilde. A er bekreftet ved navnet på selskapets egen side; E er et rent gjett. [Tabellen](/data#sikkerhetsgrader) viser hva hver grad betyr og hva vi anbefaler. **Dere har flere e-poster til samme person. Hvilken får jeg?** Den best rangerte. `epost_alternativer` sier hvor mange andre vi kjenner. Når brukere bekrefter en verdi gjennom `sjekk`, stiger den. **Hvorfor bare daglig leder?** Fordi det er den rollen registeret gir oss sikkert for alle selskaper, og den som avgjør kjøp i små og mellomstore bedrifter. Andre ansatte kommer inn gjennom stillingsannonser og brukerbidrag. **Hva er anslagene?** Våre egne regnestykker per bransje: hvor mye som er utestående, hvor mange kunder og fakturaer. De er filtre, ikke fasit. [Slik regnes de](/data#anslag). **Hvor stor er dekningen på e-post og mobil?** 15 357 ledere med direkte e-post av grad A–C og 18 315 med mobilnummer, av 58 253 daglige ledere. Vi oppfordrer til å teste på egen liste med gratisplanen. ## Pris **Hvordan fungerer prisen?** Gratis gir 1 000 berikelser og 100 søketreff totalt. Solo, Pro og Team gir ubegrenset data, begrenset av hvor mye du kan hente per 5-timersvindu. Telefonpoeng kjøpes separat. **Er det virkelig ubegrenset?** Ja, innenfor planens vindu og [rimelig bruk](/rimelig-bruk). Vi begrenser fart, ikke mengde. **Hva er telefonpoeng?** Ett poeng gir ett mobilnummer. 1,50 kr per poeng i pakker fra 180 poeng. Trekkes bare når vi leverer et nummer. **Hvorfor er mobil ikke ubegrenset?** Fordi mobilnummeret er den mest sensitive verdien vi har, og den som misbrukes først. Et lite stykke friksjon per nummer holder bruken bevisst, og lar oss finansiere innsamlingen. **Koster konto- og bruksoppslag?** Nei. `konto`, `bruk` og `bransjer` teller aldri, så en agent kan sjekke sin egen status fritt. **Hva skjer når jeg treffer grensen?** HTTP 429 med `Retry-After`. Kapasiteten kommer tilbake fortløpende når eldre kall faller ut av vinduet. CLI-et venter automatisk. **Refusjon og oppsigelse?** Månedsplanene kan sies opp når som helst og gjelder ut perioden. Betalte perioder refunderes ikke, fordi tilgangen er ubegrenset fra første minutt. **Flere brukere?** Én konto per domene, flere nøkler per konto. Kvoten deles. ## Lov og etikk **Er det lov å bruke dataene til salg?** Ja, til B2B. Behandlingsgrunnlaget er berettiget interesse (GDPR art. 6 nr. 1 f) for kontaktopplysninger om roller i næringsvirksomhet. Les [etterlevelse](/etterlevelse). **Kan jeg sende SMS?** Til en fysisk person bare med samtykke (markedsføringsloven § 15). `kan_sms` sier om nummeret er et mobilnummer, ikke at du kan sende uten samtykke. Ringe er lov. **Kan jeg sende e-post?** Til jobbadresser om noe som angår virksomheten: ja. Rolleadresser (post@, info@) er alltid greit. Unngå privatadresser. **Hvordan sletter noen seg?** Skriv til hei@firmasett.no eller bruk skjemaet under [personvern](/personvern). Vi fjerner personen fra datasettet innen 30 dager og holder en sperreliste så hen ikke kommer inn igjen fra en ny kilde. **Hva skjer med det jeg sender inn til sjekk?** Verdiene lagres som bidrag og innarbeides i datasettet når de bekreftes eller når flere uavhengige kontoer sender det samme. Det er slik datasettet blir bedre for alle. Det står i [vilkårene](/vilkar) § 6, og du kan reservere kontoen din mot det. ## Tilkobling **Hvordan får jeg nøkkel?** [Konsollen](/konsoll): e-post inn, nøkkel ut. Ingen kort. **MCP eller API eller CLI?** Samme data og kvote. MCP når du spør i samtale. CLI når du har en fil. API når et system skal kalle. **Hvordan kobler jeg Claude?** `claude mcp add --transport http firmasett https://firmasett.arnu.io/mcp --header "Authorization: Bearer fs_…"`. Claude.ai og ChatGPT: lim inn `https://firmasett.arnu.io/mcp/fs_…` som egendefinert kobling. [Alle klienter](/slik-virker-det/mcp). **Kan jeg berike en hel liste?** `firmasett sjekk liste.csv` eller `firmasett berik-fil liste.csv`. Eller `POST /v1/selskaper/berik` og `/v1/sjekk` med inntil 100 om gangen. **Hvorfor 200 og ikke 404 når noe ikke finnes?** Fordi svaret fortsatt har innhold: `meta` med kvote, og for mobilnumre sentralbordet. `status: "ikke_funnet"` er lettere for en agent å gjøre riktig enn å tolke HTTP-koder. **Kan jeg lese nettstedet som Markdown?** Ja. Legg til `.md` på adressen, eller send `Accept: text/markdown`. [llms-full.txt](/llms-full.txt) er hele nettstedet i én fil. --- # Funksjoner https://firmasett.arnu.io/funksjoner # Funksjoner Firmasett er ett datasett og ett API, men det løser flere konkrete jobber. Her er de vanligste, med hva du får og hvordan du gjør det. --- # Selskapssøk med filtre som faktisk betyr noe https://firmasett.arnu.io/funksjoner/selskapssok # Selskapssøk Proff lar deg filtrere på bransje og omsetning. Firmasett lar deg i tillegg spørre om ting som avgjør om selskapet er en kunde for deg: fakturerer de mange? Nevner de purregebyr på nettsida? Er de del av en kjede? Har daglig leder en direkte e-post vi kjenner? ## Filtre - **Register:** bransje (NACE-prefiks), fylke, kommune, ansatte, stiftelsesår, konsern, kjede, nettside. - **Regnskap:** omsetning, med eller uten regnskap. - **Anslag:** kundetype (B2B/B2C/begge/offentlig), anslått utestående, antall kunder, antall fakturaer. - **Signaler:** `signal=purregebyr|inkasso|avtalegiro|efaktura|ehf|abonnement`, `fakturerer_mange`. - **Kontakt:** `har_dl_epost`, `har_dl_mobil`, `har_dl_linkedin`, `kan_sms`. - **Rådgivere:** `regnskapsforer`, `revisor` (delstreng): alle kunder av ett byrå. ## Eksempel ```bash firmasett sok --bransje 86.23 --fylke "Trøndelag" --ansatte-min 5 --har-dl-epost ja --sorter utestaende --antall 50 ``` eller i Claude: «Finn tannlegekontorer i Trøndelag med minst fem ansatte der daglig leder har e-post, sortert på anslått utestående.» ## Hva treffet inneholder Orgnr, navn, bransje, ansatte, stiftet, fylke, kommune, omsetning, kundetype, hjemmeside, anslått utestående og kunder, daglig leders navn, og om vi har e-post, mobil og LinkedIn til hen. Resten henter du med berikelse. ## Tell først `antall_kun=ja` gir totalen gratis. Agenter bør alltid gjøre det før de henter mange sider. ## Pris Ett søketreff per treff levert. Se [priser](/priser). --- # Finn e-postadressen til daglig leder https://firmasett.arnu.io/funksjoner/finn-epost # Finn e-post til daglig leder 15 357 daglige ledere har en direkte e-postadresse hos oss av grad A–C, de fleste funnet på selskapets egen nettside med navnet i adressen. For resten kjenner vi ofte domenets adressemønster (fornavn.etternavn@, fornavn@) bekreftet av andre adresser på samme domene. ## Tre måter 1. **Berik selskapet** (`GET /v1/selskaper/{orgnr}`): daglig leder kommer med beste e-post, kilde og grad. 2. **Berik personen** (`POST /v1/berik/person` med navn og firma eller domene): samme, pluss LinkedIn og andre selskaper. 3. **Finn fra navn og domene** (`POST /v1/epost/finn`): for hvem som helst på et domene. Kjent adresse hvis personen er daglig leder, ellers mønsteret med alternativer. ## Grad A betyr at navnet står i adressen på selskapets egen side. C betyr at vi bruker domenets mønster. D og E er gjett. [Hele tabellen](/data#sikkerhetsgrader). Valider før store utsendelser med `epost/valider`. ## Flere adresser til samme person Vi lagrer alle vi finner og viser den best rangerte. `epost_alternativer` sier hvor mange andre. Bekrefter du en adresse gjennom [sjekk](/funksjoner/sjekk-egen-database), stiger den. ## Lov E-post til en jobbadresse om noe som angår virksomheten er lov uten samtykke (markedsføringsloven § 15 tredje ledd). [Etterlevelse](/etterlevelse). --- # Mobilnummer til daglig leder https://firmasett.arnu.io/funksjoner/finn-mobil # Mobilnummer til daglig leder 18 315 daglige ledere har et mobilnummer hos oss. Nummeret kommer fra selskapets egen nettside (ved navnet, eller eneste nummer på en liten side), fra en stillingsannonse der lederen er kontaktperson, fra registeret til lederens eget selskap (ENK eller holding), eller fra et annet selskap lederen har rolle i. ## Slik henter du ```bash firmasett mobil --orgnr 810034882 ``` ```json {"status": "ok", "resultat": {"navn": "…", "mobil": "9xxxxxxx", "kilde": "ved navnet", "grad": "A", "kan_sms": true, "alternativer": 0, "merk": "SMS til mobil krever samtykke …"}} ``` Berikelsen av selskapet sier `har_mobil` og `mobil_grad` på forhånd, så du vet om det er verdt et poeng. ## Pris Ett telefonpoeng (1,50 kr) per nummer levert. `ikke_funnet` koster ingenting og gir sentralbordet i stedet. Poeng kjøpes i pakker på [priser](/priser). ## Lov Ringe daglig leder om virksomheten: lov. SMS: krever samtykke når mottakeren er en fysisk person, og det er hen alltid på mobil. `kan_sms` betyr at nummeret er et mobilnummer, ikke at du har lov. ## Hvorfor ikke alle? Vi kjøper ikke numre og skraper ikke. Dekningen vokser med nettsidene, stillingsannonsene og brukerbidragene. Kunder med behov for høyere dekning kan få kjøpte uttrekk som egen avtale. --- # CRM-berikelse https://firmasett.arnu.io/funksjoner/crm-berikelse # CRM-berikelse Et CRM med orgnr eller domene på selskapene kan fylles med alt Firmasett har: bransje, ansatte, siste regnskap, anslått utestående, daglig leder med e-post og grad, fakturasignaler. ## Fra fil ```bash firmasett berik-fil selskaper.csv --kolonne orgnr --ut beriket.csv ``` Utfila har alle dine kolonner pluss `fs_`-kolonner. Importer dem som egenskaper. ## Fortløpende Ny kontakt i CRM-et → webhook → n8n/Make → `POST /v1/berik/person` eller `GET /v1/epost/omvendt?epost=` → skriv tilbake. [Oppskrifter](/slik-virker-det/integrasjoner). ## Innkommende leads Skjema med jobb-e-post → `epost/omvendt` → selskap, regnskap, daglig leder. Rut leadet etter størrelse og bransje i samme sekund. ## Pris Én berikelse per selskap eller person. Pro-planen beriker 15 000 per 5 timer. --- # Sjekk egen database mot Firmasett https://firmasett.arnu.io/funksjoner/sjekk-egen-database # Sjekk egen database Et CRM råtner. Ledere bytter jobb, adresser endres, numre blir til sentralbord. `sjekk` tar dine rader og svarer per rad hva som stemmer med det vi vet. ## Inn Inntil 100 rader per kall, eller en hel CSV med CLI-et. Hver rad kan ha orgnr, firma, domene, navn, e-post, telefon. Selskapet finnes på orgnr, ellers domene (også fra e-postadressen), ellers navn. ## Ut, per rad | Felt | Verdier | |---|---| | `treff` | person (navnet er daglig leder), selskap (bare selskapet), ingen | | `epost_status` | lik, avviker, vi_mangler, du_mangler, begge_mangler | | `telefon_status` | samme | | `beste_epost`, `beste_epost_grad` | vår beste adresse | | `har_mobil`, `mobil_grad` | om vi har nummer (hentes med `telefon/finn`) | | `daglig_leder` | hvem som er daglig leder nå | Ved `avviker` på telefon avslører vi ikke vårt nummer gratis; ved `avviker` på e-post får du vår adresse i `beste_epost`. ## Fra terminalen ```bash firmasett sjekk kunder.csv --torrkjoring firmasett sjekk kunder.csv --ut sjekket.csv ``` ## I Claude «Her er 40 kunder fra Tripletex. Sjekk dem mot Firmasett og si hvem som har byttet daglig leder eller feil e-post.» ## Bidrag Verdiene du sender inn lagres og brukes til å bekrefte og forbedre datasettet, telt per uavhengig konto. Det er slik datasettet blir riktigere for alle, også for deg. Står i [vilkårene](/vilkar) § 6; kontoen kan reserveres. ## Pris Én berikelse per rad med treff. Rader uten treff koster ingenting. --- # E-postvalidering https://firmasett.arnu.io/funksjoner/epost-validering # E-postvalidering Før en utsendelse: send lista til `POST /v1/epost/valider`. Per adresse får du: - `syntaks`: gyldig form - `domene_svarer`: MX- eller A-post finnes - `rolleadresse`: post@, info@, faktura@ … - `fridomene`: gmail, hotmail, online.no … - `engangsdomene`: mailinator o.l. - `kjent_i_datasettet`: vi har adressen knyttet til et selskap eller en leder - `vurdering`: gyldig (kjent), trolig gyldig, ukjent, risikabel, ugyldig - `grad`: A for kjent, C for trolig gyldig, D for ukjent, E for ugyldig Vi sender ikke SMTP-probe (det gir falske svar og blokkeringer); «kjent» er det sterkeste signalet, fordi vi har sett adressen i bruk. ```bash firmasett epost valider kari@firma.no post@firma.no feil@ ``` Én berikelse per adresse. --- # Omvendt e-postoppslag https://firmasett.arnu.io/funksjoner/omvendt-epost # Omvendt e-postoppslag `GET /v1/epost/omvendt?epost=kari@firma.no` eller `?domene=firma.no`. Vi finner selskapet gjennom daglig leders kjente adresser, selskapets registrerte e-post, adresser vi har sett på nettsida, og nettstedets domene. Svaret er hele selskapsbildet pluss `treff` som sier om adressen er daglig leders egen. Bruk: innkommende leads, skjemaer, support-innboks («hvem er dette og hvor stort er selskapet?»). Fridomener (gmail o.l.) gir `ikke_funnet`. Én berikelse ved treff. --- # Fakturasignaler og utestående https://firmasett.arnu.io/funksjoner/purresignaler # Fakturasignaler og utestående Dette finnes ikke samlet noe annet sted. For hvert selskap kombinerer vi kundefordringer fra regnskapet med bransjens betalingsvaner og det selskapet selv skriver på nettsida om fakturering. ## Signaler fra nettsida `fakturasignaler`: purregebyr, inkasso, forsinkelsesrente, avtalegiro, efaktura, EHF, abonnement, min side, nettbutikk, booking. `fakturerer_mange` er satt når sida nevner purring eller inkasso, altså når de har nok fakturaer til at det er et tema. `inkassoselskap` når et er nevnt. `betalingsmaate_nettside` når betalingsmåter er listet. ## Anslag - `utestaende_anslag`: 85 % av kundefordringene i siste regnskap, ellers omsetning × bransjens kredittdager / 365. - `kunder_anslag`, `fakturaer_anslag`: fra omsetning og bransjens typiske kjøp og fakturahyppighet. - `kundetype` og `betaling`: hva bransjen vanligvis er. Anslag er filtre, ikke fasit. Bruk dem til å rangere, ikke til å sitere. ## Hvem bruker dette Inkassoselskaper, purretjenester, factoring, regnskapsbyråer, betalingsløsninger, fakturasystemer. Spør: «B2C-selskaper på faktura i Vestland med anslått utestående over én million og purregebyr nevnt på nettsida». ```bash firmasett sok --kundetype B2C --fylke Vestland --utestaende-min 1000000 --signal purregebyr --sorter utestaende ``` --- # Norsk B2B-data-API https://firmasett.arnu.io/funksjoner/b2b-data-api # Norsk B2B-data-API For utviklere som trenger norske selskapsdata i et produkt: ett endepunkt per behov, én svarform, nøkkel i hodet, JSON ut. Ingen SDK nødvendig. - [OpenAPI](/openapi.json) for kodegenerering og agenter - [llms.txt](/llms.txt) for modeller - [MCP](/slik-virker-det/mcp) for samtaleklienter - [CLI](/slik-virker-det/cli) for filer og cron Data: 65 926 selskaper, 61 476 regnskap, 58 253 daglige ledere. [Alle felt](/data#felt). Grenser per plan og 5-timersvindu, 429 med Retry-After, bomskudd gratis. [REST-API](/slik-virker-det/api). --- # Vilkår for bruk https://firmasett.arnu.io/vilkar # Vilkår for bruk Gjelder fra 6. november 2026. Avtalen inngås mellom kunden (den som oppretter nøkkel) og Tiny Elephant AS, org.nr. [settes inn], «Firmasett». ## § 1 Tjenesten Firmasett gir tilgang til data om norske virksomheter og rollepersoner gjennom API, MCP-server, CLI og nettside. Innholdet er beskrevet på [Våre data](/data). Tjenesten leveres som den er; vi garanterer ikke at en enkelt verdi er korrekt, men angir kilde og sikkerhetsgrad for hver kontaktverdi. ## § 2 Konto og nøkkel Kontoen er knyttet til kundens e-postadresse og domene. Nøkkelen er personlig for kunden og skal ikke deles utenfor kundens virksomhet. Kunden er ansvarlig for all bruk med nøkkelen. Én konto per domene; flere nøkler kan opprettes på samme konto. ## § 3 Pris og betaling Priser står på [priser](/priser). Planer faktureres forskuddsvis per måned, telefonpoeng ved kjøp. Betalingsfrist 14 dager. Ved forsinket betaling påløper forsinkelsesrente etter forsinkelsesrenteloven; vi sender én purring før tilgangen stenges. Betalte perioder refunderes ikke. ## § 4 Tillatt bruk Kunden kan bruke dataene til egen og egne kunders salg, markedsføring, analyse, kundepleie og produkter, innenfor gjeldende rett (særlig personopplysningsloven/GDPR og markedsføringsloven) og [rimelig bruk](/rimelig-bruk). Kunden er behandlingsansvarlig for sin egen bruk av persondata hentet fra tjenesten. ## § 5 Ikke tillatt bruk Videresalg eller distribusjon av datasettet eller vesentlige deler av det; bygging av konkurrerende database; omgåelse av kvoter; bruk som bryter markedsføringsloven § 15 (uanmodet SMS/e-post til fysiske personer uten samtykke); henvendelser som ikke angår mottakerens virksomhet; bruk til kredittvurdering av privatpersoner. ## § 6 Bidragsdata Data kunden sender inn til tjenesten (orgnr, firma, domene, navn, e-post, telefon, LinkedIn, tittel, gjennom onboardingen, `sjekk`, `berik/person`, `epost/finn`, `epost/valider` og `epost/omvendt`) lagres og brukes til å bekrefte, rette og utvide datasettet. En verdi innarbeides når den bekrefter noe vi har, eller når den er sendt inn fra flere uavhengige kontoer. Kunden innestår for å ha rett til å dele disse opplysningene for dette formålet. Kunden kan reservere kontoen mot bidragslagring ved å skrive til hei@firmasett.no; da slettes kontoens bidrag og framtidige innsendinger lagres ikke utover det som trengs for å svare. ## § 7 Personvern Firmasett behandler personopplysninger om rollepersoner i virksomheter som beskrevet i [personvernerklæringen](/personvern) og [etterlevelse](/etterlevelse). Personer kan kreve innsyn, retting og sletting. ## § 8 Stenging Vi kan begrense eller stenge tilgang ved brudd på § 5 eller § 6, ved manglende betaling, eller ved bruk som skader tjenesten. Ved stenging for brudd gis ingen refusjon. ## § 9 Ansvar Firmasett er ikke ansvarlig for indirekte tap. Samlet ansvar er begrenset til det kunden har betalt siste tolv måneder. Kunden holder Firmasett skadesløs for krav som følger av kundens bruk i strid med § 4–6. ## § 10 Endringer Vilkår og priser kan endres med 30 dagers varsel på e-post. Fortsatt bruk etter varslet dato er aksept. ## § 11 Lovvalg Norsk rett. Verneting Stavanger tingrett. --- # Personvern og sletting https://firmasett.arnu.io/personvern # Personvernerklæring Tiny Elephant AS er behandlingsansvarlig for datasettet i Firmasett. Kontakt: hei@firmasett.no. ## Hvem vi har opplysninger om Personer som har en rolle i en norsk virksomhet: daglig leder, styreleder, regnskapsfører, revisor og kontaktpersoner i stillingsannonser. Vi har ikke opplysninger om privatpersoner uten slik rolle, og vi har ikke privatadresser. ## Hvilke opplysninger Navn, rolle og selskap (fra Enhetsregisteret). E-postadresse, telefonnummer og LinkedIn-profil knyttet til rollen (fra selskapets egen nettside, NAVs stillingsfeed, lederens eget selskap i Enhetsregisteret, og brukerbidrag). Andre selskaper personen har roller i. Fødselsdato fra Enhetsregisteret brukes bare internt for å skille personer med samme navn og leveres aldri ut. ## Hvorfor Formålet er å gjøre det mulig for virksomheter å finne og kontakte beslutningstakere i andre virksomheter om forhold som angår virksomheten (B2B-salg, markedsføring, kundepleie, analyse). Behandlingsgrunnlag: berettiget interesse, GDPR artikkel 6 nr. 1 bokstav f. Vurderingen står i [etterlevelse](/etterlevelse). ## Hvor lenge Så lenge personen har rollen, og inntil tolv måneder etter at rollen er avsluttet i registeret. Slettede personer legges på en sperreliste (bare navn og orgnr) så de ikke kommer inn igjen fra en ny kilde. ## Hvem får opplysningene Kunder av Firmasett som har godtatt [vilkårene](/vilkar), gjennom API, MCP og CLI. Kunden blir selv behandlingsansvarlig for sin bruk. Vi deler ikke med andre, og selger ikke datasettet. ## Bidragsdata Kunder sender inn egne kontaktopplysninger for å sjekke dem mot datasettet. Disse lagres og kan innarbeides som beskrevet i vilkårene § 6. Grunnlaget er det samme (berettiget interesse i korrekte rolleopplysninger). Kunden innestår for retten til å dele. ## Dine rettigheter Du har rett til innsyn, retting, sletting, begrensning og til å protestere mot behandlingen. Send en e-post til hei@firmasett.no med navn og selskap, så svarer vi innen 30 dager. Du trenger ikke begrunne en sletting. Du kan klage til Datatilsynet. ## Informasjon til de registrerte Opplysningene hentes ikke fra deg, men fra offentlige registre og nettsider (GDPR artikkel 14). Denne erklæringen er vår informasjon til deg. Vi sender ikke varsel til hver enkelt, fordi datasettet dekker 58 253 personer og opplysningene allerede er offentlige i sin opprinnelige form (artikkel 14 nr. 5 b). ## Kunders opplysninger Om kundene (de som har nøkkel) lagrer vi e-post, navn, plan, bruk per kall (tidspunkt, endepunkt, antall) og bidrag. Det brukes til å levere og fakturere tjenesten og håndheve rimelig bruk. Slettes tolv måneder etter at kontoen er avsluttet, regnskapsdata etter bokføringslovens frister. ## Informasjonskapsler Nettstedet bruker én sesjonskapsel for innlogging i konsollen. Ingen sporing, ingen tredjeparter. ## Underleverandører Står på [underleverandører](/underleverandorer). --- # Etterlevelse https://firmasett.arnu.io/etterlevelse # Etterlevelse Denne sida er skrevet for den som skal godkjenne Firmasett internt: personvernombud, compliance, innkjøp. Den sier hva vi gjør, hvorfor det er lov, og hva kunden selv må passe på. ## Hva Firmasett er, juridisk En database over norske virksomheter og rollepersoner, bygd på offentlige registre og offentlig tilgjengelig informasjon, levert til virksomheter for B2B-formål. Tiny Elephant AS er behandlingsansvarlig for databasen. Kunden er behandlingsansvarlig for sin bruk av det kunden henter ut. ## Behandlingsgrunnlag **Berettiget interesse (GDPR art. 6 nr. 1 f).** Interesseavveiningen: - **Interessen:** virksomheter har en legitim interesse i å finne riktig beslutningstaker i andre virksomheter. Datatilsynet har lagt til grunn at kontaktopplysninger knyttet til en arbeidsrolle kan behandles for B2B-markedsføring med dette grunnlaget. - **Nødvendighet:** opplysningene er begrenset til navn, rolle, selskap og kontaktpunkter for rollen. Ingen privatadresser, ingen opplysninger om privatliv, ingen fødselsdato ut. - **Den registrertes forventning:** en daglig leder forventer å bli kontaktet om virksomheten. Opplysningene er allerede offentlige i Enhetsregisteret og på selskapets egen nettside. - **Tiltak:** sletting på forespørsel uten begrunnelse, sperreliste, gradering som sier hvor sikker en verdi er, telefonpoeng som friksjon på mobilnumre, vilkår som forbyr bruk utenfor B2B. ## Markedsføringsloven - **§ 15:** elektronisk markedsføring (e-post, SMS) til fysiske personer krever samtykke. Unntak for e-post til roller i næringsvirksomhet når henvendelsen gjelder virksomheten. Mobilnumre vi leverer er næringskontakter, men SMS til et mobilnummer treffer en fysisk person; vi merker derfor `kan_sms` som teknisk mulighet, ikke tillatelse, og sier det i hvert svar. - **Telefon:** ringe en virksomhet er lov. Reservasjon i Reservasjonsregisteret gjelder privatpersoner; kunden bør likevel sjekke mot egne reservasjoner. - **Kunden** er ansvarlig for at utsendelser følger loven. Vilkårene § 5 forbyr annet. ## Kilder og rettigheter til data | Kilde | Lisens | |---|---| | Enhetsregisteret, roller, underenheter | NLOD (Norsk lisens for offentlige data) | | Regnskapsregisteret | Åpne data, NLOD | | NAVs stillingsfeed | Åpen, NLOD | | Selskapenes nettsider | Offentlig tilgjengelig, lest med vanlig nettleser-oppførsel, robots.txt respektert, kontakt- og ansattsider | | Brukerbidrag | Vilkår § 6, kunden innestår for retten | Ingen data fra LinkedIn er skrapet. LinkedIn-profiler vi viser er lenker selskapet selv har lagt ut, eller treff fra åpent nettsøk. ## Sletting og innsyn - E-post til hei@firmasett.no, svar innen 30 dager, ingen begrunnelse nødvendig. - Slettede personer legges på sperreliste (navn + orgnr) så de ikke kommer inn igjen. - Kunder får beskjed gjennom `status: "ikke_funnet"` og skal ikke beholde kopier av slettede personer utover egne lovlige grunnlag. ## Sikkerhet - Nøkler lagres som de er men er tilfeldige 32-tegns strenger; HTTPS overalt; nøkkelen kan roteres fra konsollen. - Drift på Hetzner i Tyskland (EU/EØS). Ingen overføring utenfor EØS. - Logg per kall (tidspunkt, endepunkt, antall) for fakturering og rimelig bruk, slettes etter tolv måneder. - Fødselsdato finnes ikke i produksjonsdatabasen. ## Databehandleravtale Når kunden sender inn egne persondata til `sjekk`, behandler vi dem både på kundens vegne (svaret) og på egne vegne (bidrag, § 6). For svaret er vi databehandler; standard databehandleravtale fås ved å skrive til hei@firmasett.no. For bidrag er vi selvstendig behandlingsansvarlig; kunden kan reservere kontoen. ## Underleverandører [Liste](/underleverandorer). ## Kontakt Personvernansvarlig: Svein Økland, hei@firmasett.no. --- # Rimelig bruk https://firmasett.arnu.io/rimelig-bruk # Rimelig bruk Planene er ubegrenset i mengde data og begrenset i fart. Det er bevisst: en selger, et byrå eller en agent skal aldri måtte telle, men hele basen skal ikke kunne hentes ut og selges videre. ## Vinduer - **Berikelser** og **søketreff** telles i et rullerende 5-timersvindu per konto (alle nøkler sammen). Grensen per plan står på [priser](/priser). - **Søk** har lavere grense enn berikelse fordi søk er det som brukes til masseuttrekk. - `antall_kun=ja`, `ikke_funnet`, `konto`, `bruk` og `bransjer` teller aldri. - Når grensen er nådd svarer vi 429 med `Retry-After`. Kapasitet frigjøres fortløpende. ## Det som er greit - Bygge lister til egen eller kunders salg og markedsføring. - Berike eget CRM, også hele basen i én kveld. - La en agent jobbe uten tilsyn innenfor vinduet. - Bruke dataene i et produkt dere selger, så lenge dere ikke selger selve datasettet. ## Det som ikke er greit - Systematisk uttrekk av hele eller store deler av basen for videresalg eller for å bygge en konkurrerende database. - Dele nøkkel eller konto på tvers av selskaper. - Bruke kontaktdata til henvendelser som ikke angår mottakerens virksomhet, eller SMS uten samtykke. - Omgå vinduet med flere kontoer. ## Hva vi gjør Ved mistanke tar vi kontakt først. Ved gjentatt eller åpenbart misbruk kan vi senke vinduet eller stenge kontoen uten refusjon, jf. [vilkårene](/vilkar) § 8. --- # Underleverandører https://firmasett.arnu.io/underleverandorer # Underleverandører | Leverandør | Formål | Sted | |---|---|---| | Hetzner Online GmbH | Drift av tjeneste og database | Tyskland (EU) | | Postmark / e-postleverandør | Transaksjons-e-post (nøkler, fakturaer) | EU | | Tripletex | Fakturering av kunder | Norge | Ingen data overføres utenfor EØS. Endringer varsles på denne sida og per e-post til kunder 30 dager før. --- # Priser https://firmasett.arnu.io/priser ## Telefonpoeng Mobilnumre til daglig leder koster 1,50 kr per nummer levert, aldri for oppslag uten treff. | Pakke | Poeng | Pris | Per nummer | |---|---|---|---| | 1 | 180 | 290 kr | 1,61 kr | | 2 | 650 | 990 kr | 1,52 kr | | 3 | 1300 | 1 990 kr | 1,53 kr | Poengene utløper ikke. Ikke tilgjengelig på gratisplanen. ## Hva betyr «per 5 timer»? Vinduet ruller. Hvert kall registreres med tidspunkt, og grensen gjelder summen av de siste fem timene. Når et gammelt kall blir mer enn fem timer gammelt, frigjøres plassen. Det gir plass til støt (en agent som beriker 10 000 rader på en kveld) uten å åpne for masseuttrekk av hele basen. Detaljer i [rimelig bruk](/rimelig-bruk). ## Hva teller? | Handling | Teller som | |---|---| | Søketreff levert (`selskaper/sok`, `personer/sok`) | 1 søketreff hver | | `antall_kun=ja` | ingenting | | Berikelse av selskap eller person, e-postfinn, omvendt oppslag | 1 berikelse | | Validering | 1 berikelse per adresse | | Sjekk | 1 berikelse per rad med treff | | Mobilnummer levert | 1 telefonpoeng | | `ikke_funnet`, `konto`, `bruk`, `bransjer` | ingenting | ## Betaling Faktura per måned (EHF eller e-post), 14 dagers betalingsfrist. Bestill plan eller poeng fra [konsollen](/konsoll); vi aktiverer innen én virkedag. Kortbetaling kommer. Si opp når som helst; planen løper ut perioden. Betalte perioder refunderes ikke. ## Spørsmål om pris **Kan jeg bytte plan midt i måneden?** Ja, oppgradering gjelder straks og avregnes. Nedgradering fra neste periode. **Hva om jeg trenger mer enn Team?** Skriv til hei@firmasett.no. Vi lager en avtale med høyere vindu eller eget uttrekk. **Kan jeg få en kopi av hele datasettet?** Ikke i planene. Store uttrekk gjøres som egen avtale med bruksvilkår. --- # Slik virker Firmasett https://firmasett.arnu.io/slik-virker-det # Slik virker Firmasett Firmasett er data, ikke et dashbord. Du logger ikke inn for å se på tabeller. Du kobler tjenesten til der du allerede jobber, og spør der. ## Fire veier inn | Vei | Passer når | Starter med | |---|---|---| | [MCP-server](/slik-virker-det/mcp) | Du jobber i Claude, ChatGPT, Cursor, Windsurf eller en annen MCP-klient og vil spørre med vanlige ord | `claude mcp add --transport http firmasett https://firmasett.arnu.io/mcp --header "Authorization: Bearer fs_…"` | | [CLI](/slik-virker-det/cli) | Du har en CSV-fil, et skript eller en kodeagent (Claude Code, Codex) som skal behandle mange rader | `firmasett sjekk kunder.csv` | | [REST-API](/slik-virker-det/api) | Du bygger noe selv, eller bruker n8n, Make, Zapier, Clay eller et CRM som kan kalle HTTP | `GET /v1/selskaper/sok` | | [Ferdigheter](/bibliotek) | Du vil at agenten skal vite *hvordan* den prospekterer, beriker og vasker, ikke bare hvilke verktøy som finnes | `firmasett skill install` | Alle fire bruker samme nøkkel, samme kvote og samme data. Det du finner i Claude kan du reprodusere med curl. ## Hva skjer når du spør 1. **Søk** finner selskaper eller daglige ledere med filtre på bransje, sted, størrelse, kundetype, anslått utestående og signaler fra nettsida. Hvert treff teller som ett søketreff. `antall_kun=ja` teller gratis. 2. **Berikelse** gir alt om ett selskap: register, siste regnskap, roller, konsern og kjede, anslag, fakturasignaler og daglig leder med beste e-post og LinkedIn, med kilde og sikkerhetsgrad A–E. Én berikelse per selskap. 3. **Mobilnummer** hentes separat og koster ett telefonpoeng per nummer vi faktisk leverer. Har vi ikke nummer, koster det ingenting. 4. **Sjekk** tar dine egne kontakter og sier per rad hva som stemmer, hva som avviker og hva som mangler. Svarene har alltid samme form: `status` (ok, ikke_funnet eller feil), `resultat` og `meta` med hvor mye kvote som er igjen. En agent kan derfor jobbe lenge uten tilsyn: den vet alltid hva den har brukt, og et bomskudd koster aldri noe. ## Hva vi har 65 926 norske selskaper med ansatte. 61 476 med siste årsregnskap. 58 253 daglige ledere, hvorav 15 357 med direkte e-post og 18 315 med mobilnummer. Les mer på [Våre data](/data). ## Hva det koster Fast månedspris for ubegrenset data innenfor et 5-timersvindu. Gratisplanen gir 1 000 berikelser og 100 søketreff uten kort. Se [priser](/priser). --- # For AI-agenter https://firmasett.arnu.io/slik-virker-det/ai-agenter # Gi AI-agenten din Firmasett Firmasett er laget for å brukes av agenter, ikke bare av folk. Alt agenten trenger å vite står på [https://firmasett.arnu.io/llms.txt](https://firmasett.arnu.io/llms.txt): hvordan den kobler seg til, hvilke verktøy som finnes, hva som koster, og hvilke regler som gjelder i Norge. ## Før du starter En agent kan ikke lage kontoen for deg. Gå til [konsollen](/konsoll), skriv inn e-posten din og kopier nøkkelen (den begynner med `fs_`). Gratisplanen gir 1 000 berikelser og 100 søketreff uten kort. Samme nøkkel brukes overalt: MCP, CLI og REST. ## Oppsettprompt Lim dette inn i Claude, ChatGPT, Cursor eller agenten din, med nøkkelen din i stedet for `fs_…`:
```text Les https://firmasett.arnu.io/llms.txt og følg «Kom i gang». Nøkkelen min er fs_… Sett opp tilkoblingen som passer deg (MCP over HTTP hvis du kan), forklar meg kort hva jeg eventuelt må gjøre manuelt, og bekreft at det virker ved å kalle konto. Si fra før du bruker telefonpoeng. ```
Agenten leser da reglene, velger MCP eller REST, og svarer med plan og kvote fra `konto`. Første gang stiller den deg også seks korte spørsmål (navn, mobil, jobb-e-post, firma, hva du bestemmer over, hva du påvirker) og lagrer svarene på kontoen. ## Tilkoblinger agenter kan velge ### MCP over HTTP (anbefalt for samtaleklienter) Adresse `https://firmasett.arnu.io/mcp`, nøkkel i `Authorization: Bearer fs_…`. Klienter som ikke kan sende hoder bruker `https://firmasett.arnu.io/mcp/fs_…` (nøkkelen i adressen; del aldri den adressen). ```bash claude mcp add --transport http firmasett https://firmasett.arnu.io/mcp --header "Authorization: Bearer fs_…" ``` Oppsett for Claude.ai, Claude Desktop, ChatGPT, Cursor, Windsurf og VS Code står på [MCP-sida](/slik-virker-det/mcp). ### CLI (anbefalt for kodeagenter og filer) Claude Code, Codex og lignende bør bruke [CLI-et](/slik-virker-det/cli) når det er en fil i bildet. Da holdes radene utenfor samtalen, jobben kan gjenopptas, og agenten får en ferdighet som sier hvordan den skal gjøre det: ```bash export FIRMASETT_NOKKEL=fs_… firmasett konto firmasett skill install firmasett sjekk kunder.csv --torrkjoring ``` ### REST (for egne agenter) ```bash curl -s "https://firmasett.arnu.io/v1/selskaper/sok?bransje=69.2&fylke=Rogaland&har_dl_epost=ja&antall=5" \ -H "Authorization: Bearer fs_…" ``` Svar: ```json {"status": "ok", "resultat": {"total": 212, "side": 1, "antall": 5, "treff": [{"orgnr": "9xxxxxxxx", "navn": "…", "daglig_leder": "…", "har_dl_epost": true, "har_dl_mobil": true, "…": "…"}]}, "meta": {"plan": "gratis", "vindu": "totalt", "berikelser": {"grense": 1000, "brukt": 0, "igjen": 1000}, "sok": {"grense": 100, "brukt": 5, "igjen": 95}, "telefonpoeng": 0, "belastet": {"sok": 5}}} ``` [OpenAPI-beskrivelsen](/openapi.json) kan limes rett inn i en agent som bygger verktøy selv. ## Regler agenten bør følge - **Les `status`, ikke HTTP-koden.** `ikke_funnet` er 200 og gratis. `feil` har en `kode` (ugyldig_nokkel, kvote_brukt, ingen_telefonpoeng, ugyldig_foresporsel) og en melding på norsk. - **Tell før du henter.** `antall_kun=ja` på søk er gratis. - **`meta` sier hva som er igjen.** Agenten trenger ikke spørre `konto` mellom hvert kall. - **Mobilnumre koster.** Spør brukeren før du henter mer enn noen få. - **Vis kilde og grad.** Hver e-post, hvert nummer og hver LinkedIn-profil kommer med `kilde` og `grad` A–E. Fortell brukeren hvor sikker verdien er. - **Norsk lov.** Ringe daglig leder på jobb: lov. E-post til jobbadresse om noe som gjelder virksomheten: lov. SMS til mobil til en fysisk person: krever samtykke (markedsføringsloven § 15). Les [etterlevelse](/etterlevelse). - **429 har Retry-After.** Vent det antall sekunder, ikke prøv igjen med en gang. ## Hvorfor det er bygd slik Flat pris betyr at en agent som går i løkke ikke lager en overraskende faktura. Gratis bomskudd betyr at agenten kan prøve seg fram. Kvote i hvert svar betyr at den kan planlegge. Én svarform betyr at den trenger færre eksempler for å gjøre det riktig. Og ferdighetsbiblioteket betyr at den slipper å finne opp framgangsmåten selv. ## Neste - [Ferdighetsbiblioteket](/bibliotek): ferdige framgangsmåter for prospektering, CRM-vask og møteforberedelse. - [Våre data](/data): hva feltene betyr og hvor de kommer fra. --- # MCP-server https://firmasett.arnu.io/slik-virker-det/mcp # Norske selskapsdata rett i AI-assistenten MCP-serveren gir Claude, ChatGPT, Cursor og andre MCP-klienter tilgang til alt Firmasett har: selskapssøk, regnskap, daglig leder med e-post og mobil, fakturasignaler, e-postvalidering og sjekk av egne lister. Du spør med vanlige ord. Assistenten velger verktøy. **Adresse:** `https://firmasett.arnu.io/mcp` (Streamable HTTP). Nøkkel i `Authorization: Bearer fs_…`, eller i adressen `https://firmasett.arnu.io/mcp/fs_…` for klienter som ikke kan sende hoder. **Lokal variant:** `mcp_server.py` (stdio, bare Python 3) for klienter som vil kjøre serveren selv. ## Virker med | Klient | Oppsett | |---|---| | **Claude Code** | `claude mcp add --transport http firmasett https://firmasett.arnu.io/mcp --header "Authorization: Bearer fs_…"` (legg til `--scope user` for alle prosjekter) | | **Claude.ai og Claude Desktop** | Innstillinger → Koblinger (Connectors) → Legg til egendefinert kobling → adresse `https://firmasett.arnu.io/mcp/fs_…`, uten autentisering. Nøkkelen ligger i adressen. | | **ChatGPT** (Plus/Team/Enterprise) | Innstillinger → Koblinger → Utviklermodus → Opprett → adresse `https://firmasett.arnu.io/mcp/fs_…`, autentisering «ingen». | | **Cursor** | `.cursor/mcp.json`: `{"mcpServers": {"firmasett": {"url": "https://firmasett.arnu.io/mcp", "headers": {"Authorization": "Bearer fs_…"}}}}` | | **Windsurf** | Cascade → MCP Servers → Add → HTTP, adresse og `Authorization`-hode som over. | | **VS Code (Copilot)** | `.vscode/mcp.json`: `{"servers": {"firmasett": {"type": "http", "url": "https://firmasett.arnu.io/mcp", "headers": {"Authorization": "Bearer fs_…"}}}}` | | **Egen klient** | POST JSON-RPC 2.0 til adressen. `initialize`, `tools/list`, `tools/call`, `ping`. Svar som `application/json`. Ingen sesjon kreves. | | **Lokalt (stdio)** | Last ned [mcp_server.py](https://firmasett.arnu.io/last-ned/mcp_server.py) og [mcp_felles.py](https://firmasett.arnu.io/last-ned/mcp_felles.py) i samme mappe: `claude mcp add firmasett -e FIRMASETT_NOKKEL=fs_… -- python3 /sti/mcp_server.py` | ## Verktøyene | Verktøy | Gjør | Koster | |---|---|---| | `sok_selskaper` | Selskaper med fritekst og filtre (bransje, fylke, kommune, kundetype, ansatte, omsetning, stiftelsesår, anslått utestående, fakturasignaler, regnskapsfører …) | 1 søketreff per treff; `antall_kun=ja` gratis | | `berik_selskap` | Alt om ett orgnr, inkl. daglig leder med beste e-post og LinkedIn | 1 berikelse | | `berik_selskaper` | Samme for inntil 100 orgnr | 1 per funnet | | `sok_personer` | Daglige ledere etter navn og samme filtre | 1 søketreff per treff | | `berik_person` | Beste e-post, LinkedIn og andre selskaper for en daglig leder | 1 berikelse | | `finn_mobil` | Mobilnummer til daglig leder med kilde og grad | 1 telefonpoeng per nummer | | `finn_epost` | Adresse for navn på domene (kjent eller mønster) | 1 berikelse | | `valider_epost` | Inntil 100 adresser: syntaks, MX, rolleadresse, kjent | 1 per adresse | | `omvendt_epost` | Hvem og hvilket selskap en adresse eller et domene tilhører | 1 berikelse | | `sjekk_liste` | Dine kontakter mot våre: lik, avviker, mangler | 1 per treff | | `bransjer`, `konto`, `bruk` | Næringskoder med dekning, plan og kvote, forbruk per dag | Gratis | | `onboarding`, `lagre_profil` | Første gang: serveren ber agenten spørre om fullt navn, mobil, jobb-e-post, firma, hva du bestemmer over og hva du påvirker, og lagre svarene | Gratis | ## Første gang: onboarding i samtalen Når en ny nøkkel kobles til, sier serveren fra til agenten i `initialize` at profilen ikke er fullført. Agenten stiller deg da seks korte spørsmål, gjerne ett eller to om gangen: fullt navn, mobilnummer, jobb-e-post, firma, hva du bestemmer over, og hva du påvirker beslutninger om. Svarene lagres på kontoen (`lagre_profil`) og vises i [konsollen](/konsoll). Du kan hoppe over et spørsmål med «-». Svarene brukes til å tilpasse tjenesten, nå deg om kontoen, og de regnes som bidrag etter [vilkårene](/vilkar) § 6. ## Slik bruker du den Et eksempel fra Claude: > **Du:** Her er 40 kunder fra Tripletex (orgnr og e-post til kontaktperson). Sjekk dem mot Firmasett og si hvem som har byttet daglig leder eller feil e-post. > > **Claude:** Kjørte `sjekk_liste` med 40 rader. 38 selskaper funnet. 6 har en kontaktperson som ikke lenger er daglig leder, 4 har e-post som avviker fra adressen vi har (grad A), 9 mangler e-post hos dere der vi har en. Vil du ha en tabell med forslag til ny adresse, eller skal jeg skrive CSV? Flere eksempler på spørsmål: - «Finn 25 tannlegekontorer i Trøndelag med over 5 ansatte, og vis daglig leder med e-post.» - «Hvilke regnskapsbyråer i Bergen nevner purregebyr på nettsida?» - «Berik orgnr 923 609 016 og lag et møtenotat.» - «Hent mobilnummeret til daglig leder i Jæren Regnskap. Det er greit å bruke ett telefonpoeng.» - «Valider disse 30 e-postadressene.» ## Bygd for agenter - **Flat pris.** En agent i løkke gir ingen overraskelse på fakturaen. - **Bomskudd er gratis.** `status: "ikke_funnet"` koster ingenting. - **Tell gratis.** `antall_kun=ja` før store søk. - **Kvote i hvert svar.** `meta` sier hva som er igjen, så agenten slipper å spørre. - **Én svarform.** Alle verktøy svarer `status`, `resultat`, `meta`. - **Instruksjoner i protokollen.** Serveren sender norske bruksregler i `initialize`, så agenten vet om telefonpoeng og markedsføringsloven uten at du trenger si det. ## Oppsett i tre steg
**Få nøkkel.** [Konsollen](/konsoll) gir deg en `fs_`-nøkkel på e-post-adressen din. Ingen kort.
**Legg til adressen.** Én kommando i Claude Code, eller lim inn adressen i Claude.ai, ChatGPT eller Cursor.
**Spør.** Verktøyene dukker opp automatisk. Første gang kan du spørre «hva har du på Lerøy Seafood?».
## Team Hver bruker lager egen nøkkel på samme plan ved å sende e-post til hei@firmasett.no. Kvoten deles på kontoen (domenet), slik at teamet ikke konkurrerer om vinduet uten å vite det. --- # CLI https://firmasett.arnu.io/slik-virker-det/cli # Firmasett i terminalen CLI-et kjører hvert oppslag som én kommando, og beriker eller sjekker en CSV-fil med én kommando. Utdata er JSON når du sender det videre i et rør, og en leselig tabell i terminalen. Kodeagenter som Claude Code bør bruke CLI-et framfor MCP når det er en fil å behandle. ## Installer ```bash curl -o /usr/local/bin/firmasett https://firmasett.arnu.io/static/firmasett && chmod +x /usr/local/bin/firmasett curl -o /usr/local/bin/mcp_server.py https://firmasett.arnu.io/last-ned/mcp_server.py curl -o /usr/local/bin/mcp_felles.py https://firmasett.arnu.io/last-ned/mcp_felles.py ``` Tre filer, bare Python 3. De to siste er HTTP-klienten CLI-et deler med MCP-serveren. ## Oppsett
**Få nøkkel.** [Konsollen](/konsoll) gir deg en `fs_`-nøkkel.
**Sett den i miljøet.** `export FIRMASETT_NOKKEL=fs_…` (eller `--api-key fs_…` per kommando). Skript, CI og agenter bruker miljøvariabelen.
**Sjekk.** `firmasett konto` viser plan, kvote og telefonpoeng. Gratis.
## Kommandoer ```text firmasett konto plan, kvoter og forbruk (gratis) firmasett bruk forbruk per dag siste 30 dager (gratis) firmasett sok "regnskap" --fylke Rogaland --har-dl-epost ja --antall 20 firmasett sok --bransje 69.2 --antall-kun ja bare tell, gratis firmasett sok --bransje 69.2 --alle --ut byraaer.csv alle treff til CSV firmasett berik 810034882 [flere orgnr …] firmasett personer "Nordmann" --fylke Oslo firmasett person --orgnr 810034882 firmasett mobil --orgnr 810034882 1 telefonpoeng firmasett epost finn --fornavn Kari --etternavn Nordmann --domene firma.no firmasett epost valider kari@firma.no ola@firma.no firmasett epost omvendt kari@firma.no firmasett sjekk kunder.csv --ut sjekket.csv egne kontakter mot Firmasett firmasett berik-fil liste.csv --kolonne orgnr --ut beriket.csv firmasett bransjer firmasett skill install [navn …] ferdigheter til ~/.claude/skills ``` Alle filtre fra søket finnes som flagg: `--bransje --fylke --kommune --kundetype --ansatte-min/-maks --omsetning-min/-maks --stiftet-min/-maks --utestaende-min --kunder-min --fakturaer-min --kan-sms --har-dl-mobil --har-dl-epost --har-dl-linkedin --har-nettside --fakturerer-mange --kjede --konsern --signal --regnskapsforer --revisor --sorter --antall --side`. ## Filflyt: tørrkjør, prøv, kjør ```bash firmasett sjekk kunder.csv --torrkjoring # finner kolonnene, teller rader, viser kvote. Ingen kall. firmasett sjekk kunder.csv --grense 10 # ti rader, se at resultatet ser riktig ut firmasett sjekk kunder.csv --ut sjekket.csv # hele fila ``` Hva som skjer underveis: - **Kolonner finnes automatisk.** `orgnr`, `firma`, `domene`, `navn`, `epost`, `telefon` gjenkjennes på vanlige norske og engelske overskrifter. `--kolonne` overstyrer orgnr-kolonnen. - **Bunker på 100.** Ett API-kall per hundre rader. - **Alle kolonner beholdes.** Utfila har de opprinnelige kolonnene pluss nye med `fs_`-prefiks: for sjekk `fs_treff`, `fs_epost_status`, `fs_beste_epost`, `fs_beste_epost_grad`, `fs_telefon_status`, `fs_har_mobil`; for berik-fil regnskap, bransje, daglig leder med e-post og grad, fakturasignaler. - **Framdrift lagres** etter hver bunke. Kjør samme kommando igjen for å fortsette. `--omstart` begynner på nytt. - **Kvote.** Før hver bunke vet CLI-et hva som er igjen (fra `meta`). Går vinduet tomt, venter det ti minutter om gangen, eller stopper med kode 3 hvis du gir `--ikke-vent`. - **Avslutningskoder:** 0 ok, 1 feil bruk, 2 feil fra tjenesten, 3 kvote brukt opp. Trygt i cron og CI. ## Eksempel: fra søk til ringeliste ```bash firmasett sok --bransje 86.23 --fylke "Trøndelag" --ansatte-min 5 --har-dl-epost ja --alle --ut tannleger.csv firmasett berik-fil tannleger.csv --ut tannleger-beriket.csv ``` Første kommando henter alle treff (søketreff). Andre beriker hvert orgnr (berikelser) og legger på regnskap, daglig leder med e-post og grad, og fakturasignaler. Mobilnumre henter du bevisst etterpå med `firmasett mobil --orgnr …`, ett telefonpoeng hver. ## Ferdighet for kodeagenter ```bash firmasett skill install ``` legger alle ferdighetene fra [biblioteket](/bibliotek) i `~/.claude/skills/firmasett-*/SKILL.md`. Claude Code lærer da når CLI-et er bedre enn MCP, å tørrkjøre først, å lese `fs_*`-kolonnene, og hva gradene betyr. `--dir` velger en annen mappe. ## Vanlige spørsmål **Kan jeg bruke en annen kolonne for e-post?** Gi fila en overskrift som heter `epost`, `email` eller `mail`. Andre overskrifter kan du døpe om i regnearket. **Kan jeg sende fast telefon?** Ja. Numre normaliseres (landkode og mellomrom fjernes) før de sammenlignes. **Lagres fila mi?** Nei. Radene sendes til `/v1/sjekk` og `/v1/selskaper/berik` og behandles som beskrevet i [vilkårene](/vilkar) § 6: kontaktverdier du sender inn kan brukes til å bekrefte og forbedre datasettet. --- # REST-API https://firmasett.arnu.io/slik-virker-det/api # Ett API, én svarform Firmasett API svarer alltid på samme måte, uansett om du søker, beriker eller validerer. Det gjør det lett å bygge mot, og lett for en agent å bruke riktig fra første forsøk. **Base:** `https://firmasett.arnu.io/v1` · **Nøkkel:** `Authorization: Bearer fs_…` · **Format:** JSON · **Beskrivelse:** [openapi.json](/openapi.json) ## Konvolutten ```json {"status": "ok", "resultat": {"…": "…"}, "meta": {"plan": "pro", "vindu": "5 timer", "berikelser": {"grense": 15000, "brukt": 412, "igjen": 14588}, "sok": {"grense": 7500, "brukt": 1200, "igjen": 6300}, "telefonpoeng": 143, "belastet": {"berikelse": 1}}} ``` - `status` er `ok`, `ikke_funnet` eller `feil`. **Les den, ikke bare HTTP-koden.** `ikke_funnet` er HTTP 200, `resultat` er null (eller delvis, for eksempel sentralbordnummer når vi mangler mobil), og det koster ingenting. - `meta` følger hvert svar og sier hva som er igjen og hva kallet kostet. - Ved `feil` kommer `feil.kode` (`ugyldig_foresporsel` 400, `ugyldig_nokkel` 401, `ingen_telefonpoeng` 403, `kvote_brukt` 429) og `feil.melding` på norsk. 429 har `Retry-After`-hode i sekunder. ## Endepunkter | Endepunkt | Gjør | Koster | |---|---|---| | `GET /konto` | Plan, kvoter, forbruk | gratis | | `GET /bruk` | Forbruk per dag siste 30 dager | gratis | | `GET /bransjer` | Næringskoder med antall og dekning, fylkene | gratis | | `GET /selskaper/sok` | Søk selskaper med fritekst og filtre (`register=ja` søker hele Enhetsregisteret) | 1 søketreff per treff, `antall_kun=ja` gratis | | `GET /selskaper/{orgnr}` | Alt om ett selskap | 1 berikelse | | `POST /selskaper/berik` | `{"orgnrs": [≤100]}` | 1 per funnet | | `GET /personer/sok` | Daglige ledere, samme filtre | 1 søketreff per treff | | `POST /berik/person` | `{"orgnr"}` eller `{"navn", "firma" | "domene"}` | 1 berikelse | | `POST /telefon/finn` | `{"orgnr" | "firma" | "domene"}` → mobil | 1 telefonpoeng per nummer | | `POST /epost/finn` | `{"fornavn", "etternavn", "domene" | "orgnr"}` | 1 berikelse | | `POST /epost/valider` | `{"eposter": [≤100]}` | 1 per adresse | | `GET /epost/omvendt` | `?epost=` eller `?domene=` | 1 berikelse | | `POST /sjekk` | `{"rader": [≤100 × {id, orgnr, firma, domene, navn, epost, telefon}]}` | 1 per treff | Hvert filter til søket står i [dokumentasjonen](/dok#filtre). ## Eksempel ```bash curl -s -X POST https://firmasett.arnu.io/v1/berik/person \ -H "Authorization: Bearer fs_…" -H "Content-Type: application/json" \ -d '{"navn": "Morten Aarrestad", "domene": "sandneselektriske.no"}' ``` ```json {"status": "ok", "resultat": {"navn": "Morten Aarrestad", "tittel": "Daglig leder", "orgnr": "810034882", "firma": "Sandnes Elektriske As", "epost": "morten@sandneselektriske.no", "epost_kilde": "navn i adressen", "epost_grad": "A", "epost_sikkerhet": "høy", "epost_alternativer": 1, "har_mobil": true, "mobil": "tilgjengelig", "mobil_grad": "A", "kan_sms": true, "linkedin": "", "andre_selskaper": "…"}, "meta": {"…": "…", "belastet": {"berikelse": 1}}} ``` Mobilnummeret hentes bevisst: ```bash curl -s -X POST https://firmasett.arnu.io/v1/telefon/finn -H "Authorization: Bearer fs_…" -H "Content-Type: application/json" -d '{"orgnr": "810034882"}' ``` ## Bunker `/selskaper/berik`, `/epost/valider` og `/sjekk` tar inntil 100 elementer. Hvert element får sin egen `status` i `resultater`, og bare treff belastes. ## Bruksområder - **Clay, n8n, Make, Zapier:** ett HTTP-steg per endepunkt. Se [integrasjoner](/slik-virker-det/integrasjoner). - **CRM-berikelse:** webhook ved ny kontakt → `/berik/person` → skriv tilbake e-post, grad og selskapsdata. - **Innkommende leads:** skjema med e-post → `/epost/omvendt` → fullt selskapsbilde. - **Egne agenter:** gi modellen [openapi.json](/openapi.json) eller [llms.txt](/llms.txt). - **Regnskapssystemer:** kunder fra Tripletex eller Fiken → `/sjekk` → avvik i kontaktinfo. ## Grenser og rimelig bruk Grensene gjelder per plan og per 5-timersvindu, delt av alle nøkler på kontoen. Søk har lavere grense enn berikelse fordi søk er det som brukes til masseuttrekk. [Rimelig bruk](/rimelig-bruk) forklarer hva som er greit. --- # Integrasjoner https://firmasett.arnu.io/slik-virker-det/integrasjoner # Integrasjoner Firmasett har ingen egen app du må flytte deg til. Dataene skal dit du jobber. Her er de vanligste veiene. ## CRM ### HubSpot - **Enkelt:** eksporter kontakter med e-post eller firma-domene til CSV, kjør `firmasett sjekk kontakter.csv`, importer `fs_`-kolonnene som egenskaper. [Ferdighet: HubSpot-vask](/bibliotek/hubspot-vask-og-utfyll). - **Automatisk:** HubSpot-arbeidsflyt → «Send webhook» til n8n/Make → `POST /v1/berik/person` → oppdater kontakt. Egenskaper å opprette: `fs_epost`, `fs_epost_grad`, `fs_daglig_leder`, `fs_omsetning`, `fs_bransje`, `fs_utestaende_anslag`. ### Pipedrive Samme mønster: eksport → `firmasett sjekk` → import på person-ID. Pipedrive-automatisering kan kalle n8n eller Make ved ny person. [Ferdighet: Pipedrive-utfyll](/bibliotek/pipedrive-utfyll). ### SuperOffice Eksport fra Selection → CSV → `firmasett berik-fil` på orgnr-kolonnen. SuperOffice har orgnr på firma, som gir eksakt treff. ## Regneark ### Google Sheets Apps Script som henter `GET /v1/selskaper/{orgnr}` per rad er ti linjer. Enklere: last ned arket som CSV, kjør CLI-et, last opp igjen. [Ferdighet: Google Sheets-berikelse](/bibliotek/google-sheets-berikelse). ### Excel Samme CSV-flyt. Utfila beholder alle kolonnene dine og legger til `fs_`-kolonner til høyre. ## Automatisering ### n8n HTTP Request-node: metode, adresse `https://firmasett.arnu.io/v1/…`, hode `Authorization: Bearer fs_…`, JSON-kropp. Les `$json.status` i en IF-node (`ok` / `ikke_funnet`). `meta.berikelser.igjen` kan styre en Wait-node. ### Make HTTP → Make a request. Samme hoder. «Parse response» på. Iterer over `resultat.treff`. ### Zapier Webhooks by Zapier → Custom Request. Begrensning: Zapier kjører ett oppslag per zap-kjøring, så bruk CLI-et for lister. ### Clay «HTTP API» som berikelseskolonne. Firmasett er den norske kilden Clay mangler: orgnr, regnskap og daglig leder med norsk e-post. ## Regnskap og økonomi ### Tripletex, Fiken, PowerOffice, Visma Eksporter kundelista (orgnr, kontaktperson, e-post) og kjør `firmasett sjekk`. Du får per kunde om kontaktpersonen fortsatt er daglig leder, om e-posten stemmer, og vår beste adresse der dere mangler. Nyttig før purrerunder, nyhetsbrev og årsoppgjør. ## AI-verktøy - **Claude.ai / Claude Desktop / Claude Code:** [MCP-server](/slik-virker-det/mcp). - **ChatGPT:** egendefinert kobling i utviklermodus. - **Cursor, Windsurf, VS Code:** MCP over HTTP. - **Egne agenter (Anthropic SDK, OpenAI, LangChain):** gi modellen [openapi.json](/openapi.json), eller bruk MCP-klientbibliotekene mot `https://firmasett.arnu.io/mcp`. ## Mangler din? Alt som kan sende HTTP kan bruke Firmasett. Skriv til hei@firmasett.no så lager vi en oppskrift. --- # Ferdighet: Berik en liste med orgnr https://firmasett.arnu.io/bibliotek/berik-liste-orgnr/SKILL.md # Berik en liste med orgnr Bruk CLI-et, ikke MCP, når det er en fil: radene holdes utenfor samtalen, framdrift lagres, og kvoten håndteres. ```bash firmasett berik-fil liste.csv --kolonne orgnr --torrkjoring # finner kolonnen, teller rader, viser kvote firmasett berik-fil liste.csv --kolonne orgnr --grense 10 # prøv ti firmasett berik-fil liste.csv --kolonne orgnr --ut beriket.csv # alt ``` - Orgnr-kolonnen finnes automatisk på `orgnr`, `organisasjonsnummer`, `org.nr`; `--kolonne` overstyrer. Mellomrom i numre fjernes. - Utfila har alle originale kolonner + `fs_status`, `fs_navn`, `fs_bransje`, `fs_ansatte`, `fs_fylke`, `fs_kommune`, `fs_omsetning`, `fs_driftsresultat`, `fs_kundetype`, `fs_utestaende_anslag`, `fs_daglig_leder`, `fs_dl_epost`, `fs_dl_epost_grad`, `fs_dl_har_mobil`, `fs_dl_linkedin`, `fs_hjemmeside`, `fs_fakturasignaler`. - `fs_status = ikke_funnet` betyr at orgnr ikke er i datasettet (ikke norsk, uten ansatte, eller feil nummer). Koster ingenting. - Stopper jobben (kvote, nett): kjør samme kommando igjen; den fortsetter. `--omstart` begynner på nytt. - Kvote: 1 berikelse per funnet rad. `firmasett konto` før store filer. Etterpå: oppsummer for brukeren hvor mange som ble funnet, hvor mange som har e-post av grad A–C, og hvor mange som har mobil (hentes separat, poeng). --- # Ferdighet: Bygg en målliste fra en ICP-beskrivelse https://firmasett.arnu.io/bibliotek/bygg-maalliste/SKILL.md # Bygg en målliste fra en ICP-beskrivelse ## Steg 1. **Avklar ICP i tre linjer:** bransje(r), geografi, størrelse. Spør bare om det som mangler; gjett resten og si hva du gjetter. 2. **Tell** med `sok_selskaper(antall_kun=ja)` for 2–3 varianter av filtrene (strengt, middels, løst). Vis tallene. La brukeren velge, eller velg den som gir 1,5–3× ønsket antall. 3. **Hent** søketreffene (inntil 100 per side). Sorter på det som betyr mest for brukeren: `utestaende` for faktura/inkasso, `omsetning` for de fleste, `nyeste` for oppstartsselgere. 4. **Berik** de N beste med `berik_selskaper` (inntil 100 per kall, 1 berikelse hver). Nå har du e-post med grad, LinkedIn, regnskap, fakturasignaler, `har_mobil`. 5. **Rangér** med enkel poengsum: grad A/B på e-post +2, `har_mobil` +1, signal som matcher brukerens produkt +2, ansatte i ønsket spenn +1. 6. **Mobil** til toppen av lista: si hvor mange poeng det koster, og vent på ja. 7. **Lever** som tabell og CSV (CLI: `firmasett berik-fil liste.csv`). Kolonner: Orgnr, Firma, Kommune, Ansatte, Omsetning, Daglig leder, E-post, Grad, Mobil (ja/nei eller nummer), LinkedIn, Signal, Utestående-anslag. ## Kostnadsbilde å si høyt «Dette koster rundt 300 søketreff og 100 berikelser. Mobil til 30 koster 30 poeng (45 kr).» `meta` i hvert svar har tallene. ## Feil å unngå - Ikke berik alle treff før brukeren har sett utvalget. - Ikke bland anslag med fakit: «anslått utestående» er et regnestykke per bransje. - Grad D/E på e-post skal valideres (`valider_epost`) før de går i en utsendelse. --- # Ferdighet: Finn selskaper etter fakturasignaler og utestående https://firmasett.arnu.io/bibliotek/fakturasignaler-og-utestaende/SKILL.md # Finn selskaper etter fakturasignaler og utestående ## Filtrene - `signal=purregebyr|inkasso|forsinkelsesrente|avtalegiro|efaktura|ehf|abonnement|nettbutikk`: ordet står på nettsida. - `fakturerer_mange=ja`: nettsida nevner purring eller inkasso. - `kundetype=B2C|B2B|begge`, `utestaende_min`, `kunder_min`, `fakturaer_min`: anslag per bransje og regnskap. - Sortering: `sorter=utestaende` eller `fakturaer`. - I berikelsen: `regnskap.fordringer` og `fordringer_andel` (faktiske tall), `signaler.inkassoselskap`, `signaler.betalingsmaate_nettside`. ## Framgangsmåte 1. Tell med `antall_kun=ja`. Signalfiltrene er strenge (de krever at ordet står på sida); start med `fakturerer_mange=ja` og stram inn. 2. Hent og berik toppen. Vis `fordringer` fra regnskapet ved siden av anslaget, så brukeren ser hva som er målt og hva som er regnet. 3. Si tydelig: «Utestående-anslag er 85 % av kundefordringene i siste regnskap, eller omsetning × bransjens kredittdager når regnskap mangler.» ## Hvem passer hva | Brukerens produkt | Filtre | |---|---| | Purretjeneste / inkasso | `kundetype=B2C`, `signal=purregebyr`, `utestaende_min` | | Factoring | `kundetype=B2B`, `omsetning_min`, høy `fordringer_andel` i berikelsen | | Avtalegiro / betaling | `signal=abonnement`, `fakturaer_min` | | Regnskapsbyrå | `ansatte_min=3`, uten `regnskapsforer` (gjør det ikke selv ennå), nyeste | --- # Ferdighet: Finn e-post fra navn og domene https://firmasett.arnu.io/bibliotek/finn-epost-fra-navn/SKILL.md # Finn e-post fra navn og domene 1. `finn_epost(fornavn, etternavn, domene)`. Svar: `epost`, `grad`, `kilde`, `alternativer`. 2. Tolk graden: A/B = kjent adresse (personen er daglig leder). C = domenets mønster er bekreftet av andre adresser; bruk, men valider. D = vanligste norske mønster uten bekreftelse; valider og vurder alternativene. 3. For grad C/D: `valider_epost([epost, …alternativer])`. Domenet som svarer og ingen rolleadresse → «trolig gyldig». Vi gjør ikke SMTP-probe, så «trolig gyldig» er det beste du får uten å sende. 4. Vis hovedforslag og alternativer med grad. Anbefal å sende til hovedforslaget og ha alternativet klart hvis det spretter. Flere personer: én `finn_epost` per person (1 berikelse hver), så én `valider_epost` med alle (1 per adresse). --- # Ferdighet: Finn kontaktinfo til daglig leder https://firmasett.arnu.io/bibliotek/finn-kontakt/SKILL.md # Finn kontaktinfo til daglig leder 1. **Identifiser selskapet.** Orgnr er sikrest. Domene nest. Navn sist (`sok_selskaper(q=navn, antall=3)` og velg riktig; spør hvis to ligner). 2. **Berik personen:** `berik_person(orgnr=…)`. Svar: navn, e-post + kilde + grad, `har_mobil` + `mobil_grad`, LinkedIn, andre selskaper. 1 berikelse. 3. **Vis** e-posten med grad og kilde i klartekst: «kari.nordmann@firma.no (A, navnet i adressen på firma.no)». 4. **Mobil** bare hvis brukeren ber om det eller har sagt at poeng er greit: `finn_mobil(orgnr=…)`. Si kilde og grad. Minn om at SMS krever samtykke. 5. **Ikke daglig leder?** Hvis brukeren spør etter en annen person, svarer `berik_person` `ikke_funnet` med hvem som er daglig leder. Si det, og tilby `finn_epost` (mønster på domenet) for personen brukeren spurte om. Svar alltid med kilde og grad. Si fra om `epost_alternativer` > 0: «vi kjenner én adresse til, den best rangerte er …». --- # Ferdighet: Google Sheets: berik et ark https://firmasett.arnu.io/bibliotek/google-sheets-berikelse/SKILL.md # Google Sheets: berik et ark ## CSV-veien (anbefalt) 1. Fil → Last ned → CSV. 2. `firmasett berik-fil ark.csv --kolonne orgnr --ut ark-beriket.csv` (eller `sjekk` hvis arket har kontaktpersoner). 3. Fil → Importer → erstatt gjeldende ark. `fs_`-kolonnene ligger til høyre. ## Apps Script-veien ```javascript function FIRMASETT(orgnr, felt) { var r = UrlFetchApp.fetch("https://firmasett.arnu.io/v1/selskaper/" + orgnr, {headers: {Authorization: "Bearer " + PropertiesService.getScriptProperties().getProperty("FS")}, muteHttpExceptions: true}); var d = JSON.parse(r.getContentText()); if (d.status !== "ok") return d.status; var deler = felt.split("."); var v = d.resultat; deler.forEach(function(k){ v = v ? v[k] : ""; }); return v; } ``` `=FIRMASETT(A2; "regnskap.omsetning")`, `=FIRMASETT(A2; "daglig_leder.epost")`. Hver celle er én berikelse; lim inn som verdier etterpå så arket ikke kaller på nytt. ## Mobil Hent mobil separat og bevisst (`finn_mobil`, poeng). Ikke legg numre i delte ark uten grunn. --- # Ferdighet: HubSpot: vask og fyll kontakter og selskaper https://firmasett.arnu.io/bibliotek/hubspot-vask-og-utfyll/SKILL.md # HubSpot: vask og fyll ## Forberedelse i HubSpot Opprett egenskaper på Selskap: `fs_orgnr`, `fs_bransje`, `fs_ansatte`, `fs_omsetning`, `fs_kundetype`, `fs_utestaende_anslag`, `fs_daglig_leder`, `fs_dl_epost`, `fs_dl_epost_grad`, `fs_fakturasignaler`. På Kontakt: `fs_treff`, `fs_epost_status`, `fs_beste_epost`. ## Selskaper 1. Eksporter selskaper med Record ID, navn, domene, og orgnr hvis dere har det. 2. `firmasett sjekk selskaper.csv --ut selskaper-sjekket.csv` (finner orgnr via domene eller navn) → så `firmasett berik-fil selskaper-sjekket.csv --kolonne fs_orgnr --ut selskaper-beriket.csv`. 3. Importer på Record ID; map `fs_`-kolonnene til egenskapene. ## Kontakter 1. Eksporter kontakter med Record ID, fornavn, etternavn, e-post, telefon, tilknyttet selskap-domene. 2. Legg til en kolonne `navn` (fornavn + etternavn) og `domene`. `firmasett sjekk kontakter.csv --ut kontakter-sjekket.csv`. 3. Importer `fs_treff`, `fs_epost_status`, `fs_beste_epost`. Lag en liste «fs_treff = selskap og navn finnes» = kontakt som ikke er daglig leder lenger; lag en arbeidsflyt som oppretter ny kontakt fra `fs_daglig_leder` + `fs_beste_epost`. ## Fortløpende HubSpot-arbeidsflyt «Send webhook» til n8n/Make → `POST /v1/berik/person` → oppdater egenskaper. Nøkkel i `Authorization`-hodet. --- # Ferdighet: Berik innkommende leads automatisk https://firmasett.arnu.io/bibliotek/innkommende-lead-berikelse/SKILL.md # Berik innkommende leads automatisk 1. **Inn:** e-post fra skjema. Fridomene? Hopp over (privat). 2. **Oppslag:** `GET /v1/epost/omvendt?epost=…`. `ikke_funnet` → prøv `?domene=` → fortsatt ikke: marker «ukjent selskap». 3. **Ut:** `selskap.navn`, `orgnr`, `bransje`, `ansatte`, `regnskap.omsetning`, `anslag.kundetype`, `daglig_leder.navn` og `epost` med grad, `treff` (er innsenderen daglig leder?). 4. **Rut:** ansatte ≥ 50 eller omsetning ≥ 50 mill → senior; bransje i ICP → prioritert; innsender er daglig leder → ring i dag. 5. **Skriv tilbake** til CRM-et. 1 berikelse per lead. n8n: HTTP Request (GET, hode `Authorization: Bearer fs_…`) → IF `$json.status == "ok"` → Set → CRM-node. Make: HTTP → Router. Hold nøkkelen i en credential, ikke i noden. --- # Ferdighet: Kald e-post i Norge som er lovlig og blir lest https://firmasett.arnu.io/bibliotek/kald-epost-norge/SKILL.md # Kald e-post i Norge ## Lov - Jobbadresse, innhold som angår virksomheten: lov uten samtykke (markedsføringsloven § 15 tredje ledd). - Privatadresse (gmail, hotmail): ikke. SMS: ikke uten samtykke. - Tydelig avsender, enkel måte å si nei, ingen villedende emne. ## Data å bruke - Send bare til grad A/B, eller C etter validering. - Bruk ett konkret signal fra berikelsen i teksten: `fakturasignaler`, `ansatte`, `avdelinger`, siste `omsetning`, nylig stiftet. Ikke list alt; velg ett. - Ikke nevn anslag som fakta («dere har 1,2 mill utestående»). Si heller «selskaper på deres størrelse har gjerne …». ## Form - Emne under 6 ord, uten store bokstaver og utropstegn. - 4–6 setninger. Første: hvorfor akkurat dem (signalet). Andre: hva dere gjør, i én setning. Tredje: hva det gir, konkret. Fjerde: et lavt spørsmål («er det verdt ti minutter?»). - «Hei Kari,» og «Hilsen» + fornavn. Ikke «kjære», ikke «mvh». - Bokmål, nøkternt. Ingen «revolusjonerende». ## Oppfølging Én oppfølging etter 5–7 dager, kortere, samme tråd. Ikke flere uten svar. --- # Ferdighet: Kartlegg kjeder og konsern https://firmasett.arnu.io/bibliotek/kjede-og-konsern/SKILL.md # Kartlegg kjeder og konsern - `kjede=ja` i søk gir selskaper vi har merket som kjede (navneliste eller 3+ avdelinger). `konsern=ja` gir selskaper i konsern (fra registeret). - I berikelsen: `selskap.kjede`, `kjedesignal` (hvorfor vi tror det), `konsern`, `morselskap`, `avdelinger` (antall underenheter), `holding`. - Framgangsmåte for «hvor tas beslutningen»: berik selskapet → se `morselskap` → berik morselskapet (holding er tillatt på orgnr) → daglig leder der. Si hvem som sitter hvor. - For lister: filtrer bort kjede når brukeren selger noe som kjøpes sentralt, eller behold dem og gå på morselskapet. Beslutningstaker i en kjedeavdeling er sjelden avdelingens daglige leder for innkjøp av systemer; si det. --- # Ferdighet: Møteforberedelse på to minutter https://firmasett.arnu.io/bibliotek/moteforberedelse/SKILL.md # Møteforberedelse på to minutter 1. Finn orgnr (`sok_selskaper(q=navn, antall=3)` om nødvendig) og `berik_selskap`. 1 berikelse. 2. Skriv notatet i denne rekkefølgen, kort: - **Selskapet:** navn, bransje, kommune, stiftet, ansatte, avdelinger, konsern/kjede og morselskap, `formaal`/`beskrivelse` i én setning. - **Økonomi:** omsetning, driftsresultat, årsresultat, egenkapital, kundefordringer og andel. Trend får du ikke; si «siste regnskap (år)». - **Hvem:** daglig leder (med e-post og grad, LinkedIn hvis vi har), styreleder, regnskapsfører, revisor, lederens andre selskaper. - **Hvordan de fakturerer:** kundetype, betaling, fakturasignaler, anslått utestående/kunder/fakturaer (merk at det er anslag), regnskapssystem/inkassoselskap hvis kjent. - **Tre spørsmål til møtet** utledet av tallene (høy fordringsandel → «hvordan følger dere opp forfalte fakturaer?»). 3. Tilby mobil til daglig leder hvis `har_mobil` (1 poeng), og LinkedIn-lenken. Ikke finn på ting som ikke står i svaret. Si «ukjent» der feltet er tomt. --- # Ferdighet: Hvem er denne e-posten? https://firmasett.arnu.io/bibliotek/omvendt-epost/SKILL.md # Hvem er denne e-posten? `omvendt_epost(epost=…)` eller `omvendt_epost(domene=…)`. Svar: hele selskapsbildet + `treff` (daglig leders adresse / selskapets domene). Fridomener gir `ikke_funnet` (gratis): si at det er en privatadresse. Presenter: Selskap, orgnr, bransje, kommune, ansatte, omsetning, daglig leder, om adressen er lederens egen. For lead-kvalifisering: legg til `kundetype` og `utestaende_anslag` hvis det er relevant for brukerens produkt. Flere adresser: ett kall per adresse (1 berikelse hver ved treff). --- # Ferdighet: Pipedrive: fyll organisasjoner og personer https://firmasett.arnu.io/bibliotek/pipedrive-utfyll/SKILL.md # Pipedrive: fyll organisasjoner og personer 1. Egendefinerte felt på Organisasjon: Orgnr, Bransje, Ansatte, Omsetning, Daglig leder, DL e-post, DL grad, Fakturasignaler. 2. Eksporter organisasjoner (ID, navn, nettside, orgnr). `firmasett sjekk org.csv --ut org-sjekket.csv` → `firmasett berik-fil org-sjekket.csv --kolonne fs_orgnr --ut org-beriket.csv`. 3. Importer med ID som nøkkel. Pipedrive matcher på ID når kolonnen heter «ID». 4. Personer: eksporter med ID, navn, e-post, telefon, organisasjonens nettside som `domene`. `firmasett sjekk personer.csv`. Importer `fs_epost_status` og `fs_beste_epost`; filtrer på «avviker» og «du_mangler». 5. Automasjon: «Organisasjon opprettet» → webhook til n8n/Make → `GET /v1/selskaper/{orgnr}` eller `POST /v1/berik/person` med domene → oppdater felt. --- # Ferdighet: Finn kundene til et regnskapsbyrå eller en revisor https://firmasett.arnu.io/bibliotek/regnskapsforer-kunder/SKILL.md # Finn kundene til et regnskapsbyrå eller en revisor `sok_selskaper(regnskapsforer="azets", fylke="Rogaland")` eller `revisor="bdo"`. Delstreng, ikke eksakt; «Azets Insight AS» treffer på «azets». Tell først med `antall_kun=ja`. Vanlige bruk: - Byrået selv: porteføljeoversikt med regnskap og daglig leder (berik), for rådgivning og mersalg. - Leverandør til byråer: finn byråer med mange kunder i en bransje (søk kunder, grupper på `roller.regnskapsforer` etter berikelse). - Konkurrent: hvilke selskaper har byttet? (sammenlign to kjøringer over tid). Regnskapsfører mangler for selskaper som fører selv; det er også et signal (de er kandidater for et byrå). --- # Ferdighet: Sjekk CRM-et mot Firmasett https://firmasett.arnu.io/bibliotek/sjekk-crm-mot-firmasett/SKILL.md # Sjekk CRM-et mot Firmasett ## Med fil (anbefalt) ```bash firmasett sjekk kunder.csv --torrkjoring firmasett sjekk kunder.csv --ut sjekket.csv ``` Kolonner gjenkjennes: orgnr, firma, domene/nettside, navn/kontaktperson, epost/email, telefon/mobil. Minst orgnr, domene, firma eller en jobb-e-post per rad. ## I samtale (inntil 100 rader) `sjekk_liste(rader=[{id, orgnr, firma, domene, navn, epost, telefon}, …])`. ## Tolk svaret per rad | Felt | Betyr | Gjør | |---|---|---| | `treff=ingen` | Selskapet finnes ikke hos oss | Sjekk orgnr; kan være uten ansatte eller utenlandsk | | `treff=selskap` + `melding` | Kontaktpersonen er ikke daglig leder (lenger) | Foreslå ny kontakt: `daglig_leder` i svaret | | `epost_status=lik` | Stemmer | Ingenting | | `epost_status=avviker` | Vi har en annen adresse | Vis `beste_epost` + grad; anbefal bytte hvis grad A/B | | `epost_status=vi_mangler` | Dere har noe vi ikke har | Ingenting (dere har bidratt) | | `epost_status=du_mangler` | Vi har, dere mangler | Fyll inn `beste_epost` | | `telefon_status=avviker` | Vi har et annet nummer | Tilby `finn_mobil` (poeng) | | `telefon_status=du_mangler` + `har_mobil` | Vi har nummer | Tilby `finn_mobil` (poeng) | ## Rapport til brukeren Tell per kategori: «38 av 40 funnet. 6 har byttet daglig leder. 4 e-poster avviker (3 av dem grad A hos oss). 9 mangler e-post som vi har. 12 mangler mobil som vi har (12 poeng).» Tilby CSV med forslag, og spør før mobil. ## Merk Innsendte verdier lagres som bidrag (vilkår § 6). Si det kort hvis brukeren spør hva som skjer med dataene. --- # Ferdighet: Sjekk kvote og forbruk https://firmasett.arnu.io/bibliotek/sjekk-mitt-forbruk/SKILL.md # Sjekk kvote og forbruk - `konto`: plan, grenser, brukt, igjen, telefonpoeng. Gratis, teller ikke. - `bruk`: per dag siste 30 dager (berikelser, søketreff, telefon). - Alle svar har `meta` med det samme; du trenger sjelden å kalle `konto` mellom kall. Før en stor jobb: si «du har X berikelser og Y søketreff igjen i dette 5-timersvinduet; jobben trenger ca. Z». Gratisplanen teller totalt, ikke per vindu. Ved 429: vent `Retry-After` sekunder; CLI-et gjør det selv. --- # Ferdighet: Søk B2B-prospekter i Norge https://firmasett.arnu.io/bibliotek/sok-prospekter/SKILL.md # Søk B2B-prospekter i Norge Bruk når brukeren vil finne selskaper eller daglige ledere i Norge etter kriterier. Forutsetter at Firmasett er koblet til (MCP-verktøyene `sok_selskaper`, `sok_personer`, `berik_selskap`), eller CLI-et `firmasett`. ## Framgangsmåte 1. **Oversett kriteriene til filtre.** Bransje → NACE-prefiks (`bransjer` gir lista; vanlige: 69.2 regnskap, 86.23 tannlege, 41 bygg, 56.1 restaurant, 85.1 barnehage, 47 detaljhandel, 62 IT). Sted → `fylke` (flere med komma) eller `kommune`. Størrelse → `ansatte_min/maks`, `omsetning_min/maks`. Kundetype → `B2B|B2C|begge|offentlig`. Fakturering → `signal` (purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement) eller `fakturerer_mange=ja`. Kontakt → `har_dl_epost=ja`, `har_dl_mobil=ja`. 2. **Tell først.** Kall `sok_selskaper` med `antall_kun=ja`. Gratis. Er totalen over det brukeren trenger, stram inn (mindre område, flere ansatte, sortering). Under 10: løsne det minst viktige filteret. 3. **Hent.** `antall` inntil 100 per side, `side` for neste. Hvert treff teller som søketreff; `meta.sok.igjen` sier hva som er igjen. Ikke hent flere sider enn brukeren ba om. 4. **Vis.** Tabell med Firma, Orgnr, Kommune, Ansatte, Omsetning, Daglig leder, E-post (ja/nei), Mobil (ja/nei). Si totalen og hvor mange som vises. 5. **Tilby neste steg.** Berike de valgte (`berik_selskap`, 1 berikelse hver) gir e-post med grad og regnskap. Mobil (`finn_mobil`) koster telefonpoeng: spør før du henter mer enn 3. ## Regler - Vis alltid `grad` (A–E) ved kontaktverdier. A/B kan brukes direkte, C med forbehold, D/E må valideres. - Rapporter `meta.sok.igjen` når den nærmer seg null. Ved 429: vent `Retry-After` sekunder. - Ikke SMS uten samtykke; si det hvis brukeren foreslår SMS. - Holding og inkasso er filtrert bort i søk; det er ment. ## Utdata Tabell i samtalen, eller CSV via CLI: `firmasett sok --bransje 86.23 --fylke "Trøndelag" --ansatte-min 5 --har-dl-epost ja --alle --ut tannleger.csv`. --- # Ferdighet: Valider en e-postliste https://firmasett.arnu.io/bibliotek/valider-epostliste/SKILL.md # Valider en e-postliste 1. `valider_epost(eposter=[…])`, maks 100 per kall. 1 berikelse per adresse. 2. Del i fire bunker: **send** (vurdering «gyldig (kjent)» eller «trolig gyldig», ikke rolleadresse), **send med forbehold** (rolleadresse, går til postmottak), **valider mer** (ukjent), **fjern** (ugyldig, engangsdomene). 3. Fridomener (gmail o.l.) er gyldige, men er privatadresser: ikke markedsføring dit uten samtykke. 4. Vis tabellen og tallene. Tilby CSV. Vi probe-r ikke SMTP. «Kjent» er sterkeste signal: vi har sett adressen i bruk på en nettside, i register eller fra andre kunder. --- # OpenAPI ```json { "openapi": "3.1.0", "info": { "title": "Firmasett API", "version": "1.1", "summary": "Norsk B2B-søk og berikelse for folk og AI-agenter", "description": "66 000 norske selskaper med 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.", "contact": { "email": "hei@firmasett.no", "url": "https://firmasett.arnu.io" }, "termsOfService": "https://firmasett.arnu.io/vilkar" }, "servers": [ { "url": "https://firmasett.arnu.io" } ], "security": [ { "nokkel": [] } ], "tags": [ { "name": "konto", "description": "Gratis, teller ikke mot kvoten" }, { "name": "selskaper" }, { "name": "personer" }, { "name": "epost" }, { "name": "telefon" }, { "name": "sjekk" } ], "paths": { "/v1/konto": { "get": { "tags": [ "konto" ], "summary": "Plan, kvoter og forbruk", "operationId": "konto", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/bruk": { "get": { "tags": [ "konto" ], "summary": "Forbruk per dag siste 30 dager", "operationId": "bruk", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/onboarding": { "get": { "tags": [ "konto" ], "summary": "Onboarding: lagret profil, hva som mangler, spørsmålene", "operationId": "onboarding", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } }, "post": { "tags": [ "konto" ], "summary": "Lagre svar fra onboardingen (delvis er greit, «-» = hoppet over)", "operationId": "lagreProfil", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "navn": { "type": "string" }, "telefon": { "type": "string" }, "epost": { "type": "string" }, "firma": { "type": "string" }, "bestemmer": { "type": "string", "description": "Hva brukeren bestemmer over" }, "paavirker": { "type": "string", "description": "Hva brukeren påvirker beslutninger om" } } } } } }, "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/bransjer": { "get": { "tags": [ "konto" ], "summary": "Næringskoder med antall og dekning, pluss fylker", "operationId": "bransjer", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/selskaper/sok": { "get": { "tags": [ "selskaper" ], "summary": "Søk selskaper", "operationId": "sokSelskaper", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Fritekst: firmanavn, daglig leder eller orgnr" }, { "name": "bransje", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Næringskode-prefiks, flere med komma (69.2,85.1)" }, { "name": "fylke", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Fylke(r), flere med komma" }, { "name": "kommune", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Kommune" }, { "name": "kundetype", "in": "query", "required": false, "schema": { "type": "string" }, "description": "B2B | B2C | begge | offentlig" }, { "name": "ansatte_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "ansatte_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "omsetning_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "kr" }, { "name": "omsetning_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "kr" }, { "name": "stiftet_min", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "år" }, { "name": "stiftet_maks", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "år" }, { "name": "utestaende_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått utestående, kr" }, { "name": "utestaende_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "kunder_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått antall kunder" }, { "name": "fakturaer_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått fakturaer per år" }, { "name": "kan_sms", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei – selskapet har mobilnummer" }, { "name": "har_dl_mobil", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_dl_epost", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_dl_linkedin", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_nettside", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_regnskap", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "status", "in": "query", "required": false, "schema": { "type": "string" }, "description": "aktiv (standard) | konkurs | avvikling | tvangsavvikling | alle" }, { "name": "register", "in": "query", "required": false, "schema": { "type": "string" }, "description": "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." }, { "name": "fakturerer_mange", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei – nettsida nevner purregebyr/inkasso/avtalegiro/efaktura" }, { "name": "kjede", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "konsern", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "signal", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng i fakturasignaler: purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement" }, { "name": "regnskapsforer", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "revisor", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "regnskapssystem", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "sorter", "in": "query", "required": false, "schema": { "type": "string" }, "description": "omsetning | ansatte | utestaende | kunder | fakturaer | nyeste | navn" }, { "name": "antall", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "1–100, standard 25" }, { "name": "side", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "standard 1" }, { "name": "antall_kun", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja – bare tell treff. Gratis, teller ikke mot kvoten." } ], "description": "Hvert treff som leveres teller som ett søketreff. Med antall_kun=ja får du bare totalen, gratis.", "responses": { "200": { "description": "resultat: {total, side, antall, treff: [SelskapKort]}", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } }, "429": { "description": "Feil", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Feil" } } } } } } }, "/v1/selskaper/{orgnr}": { "get": { "tags": [ "selskaper" ], "summary": "Berik ett selskap", "operationId": "berikSelskap", "parameters": [ { "name": "orgnr", "in": "path", "required": true, "schema": { "type": "string" } } ], "description": "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.", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } }, "429": { "description": "Feil", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Feil" } } } } } } }, "/v1/selskaper/berik": { "post": { "tags": [ "selskaper" ], "summary": "Berik inntil 100 selskaper", "operationId": "berikSelskaper", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "orgnrs": { "type": "array", "items": { "type": "string" }, "maxItems": 100 } }, "required": [ "orgnrs" ] } } } }, "description": "Én berikelse per selskap som finnes. resultat: {antall, funnet, resultater: [{orgnr, status, …Selskap}]}", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/personer/sok": { "get": { "tags": [ "personer" ], "summary": "Søk daglige ledere", "operationId": "sokPersoner", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Fritekst: firmanavn, daglig leder eller orgnr" }, { "name": "bransje", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Næringskode-prefiks, flere med komma (69.2,85.1)" }, { "name": "fylke", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Fylke(r), flere med komma" }, { "name": "kommune", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Kommune" }, { "name": "kundetype", "in": "query", "required": false, "schema": { "type": "string" }, "description": "B2B | B2C | begge | offentlig" }, { "name": "ansatte_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "ansatte_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "omsetning_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "kr" }, { "name": "omsetning_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "kr" }, { "name": "stiftet_min", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "år" }, { "name": "stiftet_maks", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "år" }, { "name": "utestaende_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått utestående, kr" }, { "name": "utestaende_maks", "in": "query", "required": false, "schema": { "type": "number" }, "description": "" }, { "name": "kunder_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått antall kunder" }, { "name": "fakturaer_min", "in": "query", "required": false, "schema": { "type": "number" }, "description": "anslått fakturaer per år" }, { "name": "kan_sms", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei – selskapet har mobilnummer" }, { "name": "har_dl_mobil", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_dl_epost", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_dl_linkedin", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_nettside", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "har_regnskap", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "status", "in": "query", "required": false, "schema": { "type": "string" }, "description": "aktiv (standard) | konkurs | avvikling | tvangsavvikling | alle" }, { "name": "register", "in": "query", "required": false, "schema": { "type": "string" }, "description": "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." }, { "name": "fakturerer_mange", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei – nettsida nevner purregebyr/inkasso/avtalegiro/efaktura" }, { "name": "kjede", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "konsern", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja|nei" }, { "name": "signal", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng i fakturasignaler: purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement" }, { "name": "regnskapsforer", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "revisor", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "regnskapssystem", "in": "query", "required": false, "schema": { "type": "string" }, "description": "delstreng" }, { "name": "sorter", "in": "query", "required": false, "schema": { "type": "string" }, "description": "omsetning | ansatte | utestaende | kunder | fakturaer | nyeste | navn" }, { "name": "antall", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "1–100, standard 25" }, { "name": "side", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "standard 1" }, { "name": "antall_kun", "in": "query", "required": false, "schema": { "type": "string" }, "description": "ja – bare tell treff. Gratis, teller ikke mot kvoten." } ], "responses": { "200": { "description": "resultat: {total, side, antall, treff: [{navn, tittel, orgnr, firma, bransje, fylke, kommune, ansatte, har_epost, har_mobil, har_linkedin}]}" } } } }, "/v1/berik/person": { "post": { "tags": [ "personer" ], "summary": "Berik en person (daglig leder)", "operationId": "berikPerson", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "orgnr": { "type": "string" }, "navn": { "type": "string" }, "firma": { "type": "string" }, "domene": { "type": "string" } } } } } }, "description": "Gi orgnr, eller navn + firma/domene. 1 berikelse ved treff. resultat = DagligLeder + orgnr, firma, bransje, fylke, hjemmeside.", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/telefon/finn": { "post": { "tags": [ "telefon" ], "summary": "Mobilnummer til daglig leder", "operationId": "finnMobil", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "orgnr": { "type": "string" }, "firma": { "type": "string" }, "domene": { "type": "string" } } } } } }, "description": "1 telefonpoeng per nummer levert; ikke_funnet koster ingenting. resultat: {orgnr, firma, navn, mobil, kilde, grad, sikkerhet, kan_sms, alternativer, merk}", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } }, "403": { "description": "Ingen telefonpoeng", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Feil" } } } } } } }, "/v1/epost/finn": { "post": { "tags": [ "epost" ], "summary": "Finn e-post for navn på domene", "operationId": "finnEpost", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "fornavn": { "type": "string" }, "etternavn": { "type": "string" }, "navn": { "type": "string" }, "domene": { "type": "string" }, "orgnr": { "type": "string" }, "firma": { "type": "string" } } } } } }, "description": "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.", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/epost/valider": { "post": { "tags": [ "epost" ], "summary": "Valider inntil 100 e-postadresser", "operationId": "validerEpost", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "eposter": { "type": "array", "items": { "type": "string" }, "maxItems": 100 }, "epost": { "type": "string" } } } } } }, "description": "Per adresse: syntaks, domene_svarer (MX/A), rolleadresse, fridomene, engangsdomene, kjent_i_datasettet, vurdering, grad. 1 berikelse per adresse.", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/epost/omvendt": { "get": { "tags": [ "epost" ], "summary": "Omvendt oppslag på e-post eller domene", "operationId": "omvendtEpost", "parameters": [ { "name": "epost", "in": "query", "required": false, "schema": { "type": "string" }, "description": "" }, { "name": "domene", "in": "query", "required": false, "schema": { "type": "string" }, "description": "" } ], "description": "resultat = Selskap + treff (daglig leders adresse | selskapets domene). 1 berikelse ved treff.", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } }, "/v1/sjekk": { "post": { "tags": [ "sjekk" ], "summary": "Sjekk egne kontakter mot Firmasett", "operationId": "sjekk", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "rader": { "type": "array", "maxItems": 100, "items": { "type": "object", "properties": { "id": { "type": "string" }, "orgnr": { "type": "string" }, "firma": { "type": "string" }, "domene": { "type": "string" }, "navn": { "type": "string" }, "epost": { "type": "string" }, "telefon": { "type": "string" }, "linkedin": { "type": "string" }, "tittel": { "type": "string" } } } } }, "required": [ "rader" ] } } } }, "description": "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).", "responses": { "200": { "description": "Konvolutt", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Konvolutt" } } } } } } } }, "components": { "securitySchemes": { "nokkel": { "type": "http", "scheme": "bearer", "bearerFormat": "fs_…", "description": "Gratis nøkkel på https://firmasett.arnu.io/konsoll" } }, "schemas": { "Konvolutt": { "type": "object", "required": [ "status", "resultat", "meta" ], "properties": { "status": { "type": "string", "enum": [ "ok", "ikke_funnet", "feil" ], "description": "ikke_funnet gir HTTP 200 og koster ingenting." }, "resultat": { "description": "Avhenger av endepunktet; null ved ikke_funnet." }, "melding": { "type": "string", "description": "Forklaring ved ikke_funnet." }, "meta": { "$ref": "#/components/schemas/Meta" } } }, "Meta": { "type": "object", "description": "Kvotestatus etter kallet, så agenten slipper å spørre /v1/konto.", "properties": { "plan": { "type": "string", "enum": [ "gratis", "solo", "pro", "team" ] }, "vindu": { "type": "string", "example": "5 timer" }, "berikelser": { "$ref": "#/components/schemas/Kvote" }, "sok": { "$ref": "#/components/schemas/Kvote" }, "telefonpoeng": { "type": "integer" }, "belastet": { "type": "object", "description": "Hva dette kallet kostet, f.eks. {\"berikelse\": 1}", "additionalProperties": { "type": "integer" } } } }, "Kvote": { "type": "object", "properties": { "grense": { "type": "integer" }, "brukt": { "type": "integer" }, "igjen": { "type": "integer" } } }, "Feil": { "type": "object", "properties": { "status": { "type": "string", "const": "feil" }, "feil": { "type": "object", "properties": { "kode": { "type": "string", "enum": [ "ugyldig_foresporsel", "ugyldig_nokkel", "ingen_telefonpoeng", "ikke_funnet", "feil_metode", "kvote_brukt", "serverfeil" ] }, "melding": { "type": "string" }, "http": { "type": "integer" } } }, "meta": { "$ref": "#/components/schemas/Meta" } } }, "Grad": { "type": "string", "enum": [ "A", "B", "C", "D", "E", "" ], "description": "A = bekreftet ved navnet på egen nettside/i register, B = egen/stillingsannonse, C = mønster/annet selskap, D = gjett med støtte, E = gjett. Se /data." }, "DagligLeder": { "type": "object", "description": "Daglig leder med den best rangerte verdien per slag. Mobilnummer leveres bare av /v1/telefon/finn.", "properties": { "navn": { "type": "string" }, "tittel": { "type": "string" }, "epost": { "type": "string" }, "epost_kilde": { "type": "string", "example": "navn i adressen" }, "epost_grad": { "$ref": "#/components/schemas/Grad" }, "epost_sikkerhet": { "type": "string", "enum": [ "høy", "middels", "lav", "" ] }, "epost_alternativer": { "type": "integer", "description": "Antall andre kjente adresser (vises ikke)." }, "har_mobil": { "type": "boolean" }, "mobil": { "type": "string", "description": "«tilgjengelig» eller tom; selve nummeret fra /v1/telefon/finn." }, "mobil_grad": { "$ref": "#/components/schemas/Grad" }, "kan_sms": { "type": "boolean" }, "linkedin": { "type": "string" }, "linkedin_kilde": { "type": "string" }, "linkedin_grad": { "$ref": "#/components/schemas/Grad" }, "andre_selskaper": { "type": "string" } } }, "Selskap": { "type": "object", "properties": { "selskap": { "type": "object", "description": "Register: orgnr, navn, orgform, bransje_kode, bransje, ansatte, stiftet, fylke, kommune, poststed, adresse, telefon, mobil, kan_sms, epost, hjemmeside, mva, konsern, morselskap, avdelinger, kjede, holding, linkedin_firma, beskrivelse, tidligere_navn, formaal", "additionalProperties": true }, "regnskap": { "type": "object", "description": "Siste innsendte årsregnskap i kr: regnskapsaar, omsetning, driftsresultat, aarsresultat, egenkapital, fordringer, fordringer_andel, bank, lonn, aksjekapital", "additionalProperties": true }, "anslag": { "type": "object", "description": "Våre anslag: kundetype (B2B/B2C/begge/offentlig), betaling (faktura/kort/blandet), utestaende_anslag, kunder_anslag, fakturaer_anslag, dager_anslag", "additionalProperties": true }, "signaler": { "type": "object", "description": "Fra nettsida: fakturasignaler (purregebyr, inkasso, avtalegiro, efaktura, ehf, abonnement …), fakturerer_mange, betalingsmaate_nettside, regnskapssystem, inkassoselskap", "additionalProperties": true }, "roller": { "type": "object", "description": "daglig_leder, styreleder, regnskapsforer, revisor", "additionalProperties": true }, "daglig_leder": { "$ref": "#/components/schemas/DagligLeder" } } }, "SelskapKort": { "type": "object", "description": "Treff i søk.", "properties": { "orgnr": { "type": "string" }, "navn": { "type": "string" }, "bransje_kode": { "type": "string" }, "bransje": { "type": "string" }, "ansatte": { "type": "integer" }, "stiftet": { "type": "string" }, "fylke": { "type": "string" }, "kommune": { "type": "string" }, "omsetning": { "type": "number" }, "kundetype": { "type": "string" }, "hjemmeside": { "type": "string" }, "utestaende_anslag": { "type": "number" }, "kunder_anslag": { "type": "number" }, "daglig_leder": { "type": "string" }, "har_dl_epost": { "type": "boolean" }, "har_dl_mobil": { "type": "boolean" }, "har_dl_linkedin": { "type": "boolean" }, "kan_sms": { "type": "boolean" } } } } } } ```