Tillbaka till verktyget
SV | EN

Dokumentation och API-referens

6 HTTP-endpoints returnerar JSON. Ingen API-nyckel krävs. Databasen täcker 3 miljoner svenska bolag.

Snabbstart

Namnssök med CORS (anropsbar från valfri domän):

const res = await fetch('https://mackan.eu/tools/bolagsverket/search_name.php?q=IKEA');
const { results } = await res.json();
console.log(results[0]);
// { orgnr: "5560747551", name: "IKEA Aktiebolag", form: "AB",
//   active: true, city: "Älmhult", reg_year: 1958 }

Adresssökning med bransch- och formfilter:

const url = new URL('https://mackan.eu/tools/bolagsverket/search_address.php');
url.searchParams.set('addr', 'Drottninggatan Stockholm');
url.searchParams.set('branch', 'mode');
url.searchParams.set('form', 'AB');
url.searchParams.set('limit', '100');

const { results, total } = await fetch(url).then(r => r.json());
console.log(`${total} bolag hittade, visar ${results.length}`);

Registreringsvågor: se när en bransch tog fart:

const res = await fetch(
    'https://mackan.eu/tools/bolagsverket/reg_waves.php'
    + '?q=restaurang&min_year=1990&max_year=2024'
);
const { years, counts, anomalies } = await res.json();

// Toppår (statistisk avvikelse, mean + 2σ):
const peaks = years.filter((_, i) => anomalies[i]);
console.log(peaks); // e.g. [1999, 2000, 2021]

Adressnätverk: vilka bolag delar adress med ett givet bolag?

const res = await fetch(
    'https://mackan.eu/tools/bolagsverket/address_network.php?orgnr=5560747551'
);
const { nodes, total, address } = await res.json();
console.log(`${total} bolag på ${address}`);
const active = nodes.filter(n => n.active).length;
console.log(`${active} aktiva, ${total - active} avregistrerade`);

Funktionsguide

Snabbsök

  • Ange ett organisationsnummer (10 siffror, bindestreck spelar ingen roll) och klicka Sök.
  • Skriv ett bolagsnamn istället så visas förslag direkt. Klicka på ett förslag för att fylla i orgnr automatiskt.
  • Visas "Menade du?" finns inga exakta träffar men liknande bolag föreslås.
  • Resultatet visar namn, adress, SNI-koder, registreringsdatum, verksamhetsbeskrivning och årsredovisningar.
  • Knapparna JSON, CSV och Kopiera exporterar aktuell sökning.

Djuplänk: Länka direkt till ett bolag med ?orgnr=5560747551 i URL:en. Sökningen startar automatiskt.

Batch-sökning

  • Klistra in organisationsnummer i textrutan (ett per rad) eller ladda upp en CSV/TXT-fil.
  • Klicka Sök alla: verktyget hämtar alla bolag i tur och ordning.
  • Resultaten visas i en tabell med status per rad (OK, Hittades ej, Fel).
  • Exportera hela resultatet som CSV, JSON eller Excel via knapparna ovanför tabellen.
  • Välj bolag i tabellen och klicka Visa på karta för att se adresser i kartfliken.

Tips: Lägg till ett bolag från Snabbsök till Batch via knappen + Lägg till batch i resultatvyn.

Bevakning

  • Klicka Bevaka i ett sökresultat för att spara bolaget i bevakningslistan.
  • Listan lagras i webbläsarens localStorage. Den finns kvar mellan sessioner men är kopplad till enheten.
  • Klicka på ett bolag i bevakningslistan för att söka upp det direkt i Snabbsök.
  • Ta bort enskilda bolag eller rensa hela listan med knapparna i fliken.

Notera: Bevakningen är lokal och inte serversynkad. Rensas webbläsarens localStorage tas listan bort.

Adresssökning

  • Fyll i adress, gata, ort eller postnummer i det övre fältet.
  • Lägg till ett branschnyckelord i det nedre fältet (eller klicka på ett chip) för att filtrera på verksamhetstyp.
  • Filtrera på bolagsform (AB, HB, Brf ...) och välj om bara aktiva bolag ska visas.
  • Klicka på ett bolag i resultattabellen för att öppna bolagsdrawern med fyra snabbåtgärder.
  • Sortera tabellen på namn, form, ort eller registreringsår via kolumnrubrikerna.
  • Exportera alla hämtar upp till 500 matchande bolag och laddar ner dem som CSV.

Kombinationssökning: Prova "Drottninggatan Stockholm" som adress och "mode kläder" som bransch för att hitta modebutiker på just den gatan.

Analys-fliken

Innehåller två separata OSINT-verktyg:

Adressnätverk

  • Ange ett organisationsnummer och klicka Visa adressnätverk.
  • Diagrammet visar det sökta bolaget i mitten (nav) och alla bolag på samma registrerade adress runtomkring (ekrar).
  • Gröna noder är aktiva bolag, grå är avregistrerade.
  • Klicka på en nod för att söka upp det bolaget i Snabbsök.

Registreringsvågor

  • Ange ett sökord (bransch eller verksamhet) och välj eventuellt bolagsform och tidsintervall.
  • Stapeldiagrammet visar hur många bolag registrerades varje år.
  • Orangea staplar är statistiska avvikelser (mer än 2 standardavvikelser från medelvärdet). Boomår syns tydligt.

Skillnad mot Nätverk-fliken: Adressnätverk i Analys utgår från ett enskilt bolag. Nätverk-fliken ritar kopplingar mellan bolag i en batch-sökning.

Nätverk-fliken

  • Kör en batch-sökning med flera organisationsnummer.
  • Nätverk-fliken ritar automatiskt en graf där linjer dras mellan bolag som delar registrerad adress.
  • Nodernas storlek speglar antal adresskopplingar. Isolerade noder delar ingen adress med övriga i batchen.
  • Exportera grafen som SVG, JSON eller CSV via knapparna under grafen.
  • Delningsbild skapar en PNG-bild av grafen för artiklar och rapporter.

Viktigt: Delad adress innebär inte ägande eller juridisk koppling. Det kan bero på kontorshotell eller liknande.

API-referens

Bas-URL: https://mackan.eu/tools/bolagsverket/ — alla svar: JSON, UTF-8.

GET get_data.php

Hämtar fullständig bolagsinformation direkt från Bolagsverkets officiella API och returnerar svaret obearbetat.

Parametrar

Namn Typ Beskrivning
orgnr krav string 10 siffror, bindestreck tillåtet

Exempel

const res = await fetch(
    'https://mackan.eu/tools/bolagsverket/get_data.php?orgnr=556074-7551'
);
const data = await res.json();
// data.namn, data.juridiskForm, data.adress.gatuadress,
// data.sniKoder, data.registreringsDatum, data.beskrivning, ...
console.log(data.namn); // "IKEA Aktiebolag"

curl

curl "https://mackan.eu/tools/bolagsverket/get_data.php?orgnr=5560747551"

Anropet proxyas server-side mot Bolagsverkets API (OAuth2 Client Credentials). Rate-limit: 60 anrop/minut. Ingen nyckel behövs från klienten.

GET search_name.php

Fulltextsökning på bolagsnamn i lokal databas (3 miljoner bolag). Returnerar upp till 8 träffar. Faller tillbaka på LIKE-sökning om FULLTEXT ger noll resultat.

CORS: Access-Control-Allow-Origin: * — anropsbar från vilken domän som helst.

Parametrar

Namn Typ Beskrivning
q krav string Bolagsnamn (min 2 tecken)

Svarsformat

{
  "results": [
    {
      "orgnr":       "5560747551",
      "name":        "IKEA Aktiebolag",
      "extra_names": ["INGKA Holding"],   // tidigare eller alternativa namn
      "form":        "AB",
      "active":      true,
      "city":        "Älmhult",
      "reg_year":    1958
    }
  ],
  "mode": "exact"   // "exact" | "menade_du" | "empty"
}

Exempel

const res = await fetch(
    'https://mackan.eu/tools/bolagsverket/search_name.php?q=Spotify'
);
const { results, mode } = await res.json();

if (mode === 'menade_du') {
    console.log('Inga exakta träffar, förslag:', results.map(r => r.name));
} else {
    results.forEach(r => console.log(r.orgnr, r.name, r.city));
}
GET search_address.php

Söker bolag på adress, gata, ort eller postnummer med FULLTEXT. Kombinera med branschsökning mot verksamhetsbeskrivningen. Filtrera på bolagsform och aktivitetsstatus.

Parametrar

Namn Typ Beskrivning
addr valfri string Adress, gata, ort eller postnummer (min 2 tecken)
branch valfri string Bransch eller verksamhetssökning mot beskrivningsfältet (min 2 tecken)
form valfri string Bolagsform: AB, HB, KB, EK, E, I, BRF, S, FL
active valfri int 1 = bara aktiva (standard), 0 = alla
limit valfri int 1–500, standard 20

Svarsformat

{
  "results": [
    {
      "orgnr":       "5566012345",
      "name":        "Modebutiken AB",
      "form":        "AB",
      "active":      true,
      "city":        "Stockholm",
      "zip":         "11122",
      "address":     "Drottninggatan 42 11122 Stockholm",
      "description": "Detaljhandel med kläder och accessoarer",
      "reg_year":    2012
    }
  ],
  "total": 47,   // totalt antal matchande bolag i databasen
  "shown": 20    // antal i detta svar
}

Exempel

// Aktiva AB på Storgatan i Malmö
const { results, total } = await fetch(
    'https://mackan.eu/tools/bolagsverket/search_address.php'
    + '?addr=Storgatan+Malmö&form=AB&limit=100'
).then(r => r.json());
console.log(total, 'totalt');
// Alla bolag (aktiva + avregistrerade) på ett postnummer
const { results } = await fetch(
    'https://mackan.eu/tools/bolagsverket/search_address.php'
    + '?addr=11122&active=0&limit=500'
).then(r => r.json());
GET address_network.php

Returnerar alla bolag som delar samma registrerade adress som ett givet bolag. Användbart för att kartlägga kontorshotell och bolagsstrukturer. Max 50 bolag i svaret.

Parametrar

Namn Typ Beskrivning
orgnr krav string 10 siffror

Svarsformat

{
  "address":    "Storgatan 10",
  "city":       "Stockholm",
  "root_orgnr": "5560747551",
  "root_name":  "IKEA Aktiebolag",
  "total":      12,           // totalt matchande bolag (kan vara fler än nodes)
  "nodes": [
    {
      "orgnr":    "5566012345",
      "name":     "Grannbolaget AB",
      "form":     "AB",
      "active":   true,
      "city":     "Stockholm",
      "reg_year": 2018
    }
  ]
}

Exempel

const res = await fetch(
    'https://mackan.eu/tools/bolagsverket/address_network.php?orgnr=5560747551'
);
const { nodes, total, address } = await res.json();
console.log(`${total} bolag på "${address}"`);

const dissolved = nodes.filter(n => !n.active);
if (dissolved.length > 0) {
    console.log(`${dissolved.length} avregistrerade:`, dissolved.map(n => n.name));
}
GET reg_waves.php

Registreringsvågor: antal nyregistrerade bolag per år för en sökning. Inkluderar avvikelsedetektion med mean + 2σ för att markera statistiskt avvikande år.

Parametrar

Namn Typ Beskrivning
q valfri string Namn- eller verksamhetssökning (min 3 tecken per ord)
form valfri string Bolagsform: AB, HB, KB, EK, E, I, BRF, S, FL
min_year valfri int Startår (standard 1970)
max_year valfri int Slutår (standard: innevarande år)

Svarsformat

{
  "years":     [1990, 1991, ..., 2024],
  "counts":    [14, 18, ..., 312],      // registrerade bolag per år
  "active":    [8, 11, ..., 240],       // av dessa fortfarande aktiva
  "anomalies": [false, false, ..., true],  // true = avviker statistiskt
  "total":     4821,
  "mean":      178.6,
  "stddev":    89.2,
  "threshold": 356.9,    // gränsvärde för anomali (mean + 2σ)
  "query":     "restaurang"
}

Exempel

// IT-booms i Sverige: leta toppår för teknikbolag
const { years, counts, anomalies, threshold } = await fetch(
    'https://mackan.eu/tools/bolagsverket/reg_waves.php'
    + '?q=teknik&form=AB&min_year=1995&max_year=2024'
).then(r => r.json());

const peaks = years
    .map((y, i) => ({ year: y, count: counts[i], anomaly: anomalies[i] }))
    .filter(d => d.anomaly);
console.log('Toppår:', peaks);
// [{year: 1999, count: 487, anomaly: true}, {year: 2000, ...}]
// Alla AB-registreringar utan filtrering (historisk översikt)
const data = await fetch(
    'https://mackan.eu/tools/bolagsverket/reg_waves.php?form=AB&min_year=1900'
).then(r => r.json());
GET bv_sync_info.php

Returnerar tidpunkt för senaste databassynkronisering och ungefärligt antal bolag. Svaret cachas i 1 timme.

Svarsformat

{
  "last_updated": "2026-05-12 03:00:00",
  "approx_rows":  3014820
}

Exempel

const { last_updated, approx_rows } = await fetch(
    'https://mackan.eu/tools/bolagsverket/bv_sync_info.php'
).then(r => r.json());

const date = new Intl.DateTimeFormat('sv-SE').format(new Date(last_updated));
console.log(`${approx_rows.toLocaleString()} bolag, senast synkat ${date}`);

Funktioner

Funktion Beskrivning Flik
Snabbsök (orgnr) Hämtar fullständiga registeruppgifter direkt från Bolagsverkets API Snabbsök
Namnssök med autocomplete Fulltextsökning mot lokal databas, förslag visas direkt vid inmatning. Hanterar stavvarianter och alternativnamn. Snabbsök
Bevaka-lista Spara bolag lokalt i webbläsaren för snabb återupprepning Snabbsök
Årsredovisningar Visa och länka direkt till inlämnade årsredovisningar Snabbsök
Aktivitetsindikator Baserad på regelbundenhet i årsredovisningshistoriken Snabbsök
Batch-sökning Importera CSV/TXT med organisationsnummer, sök alla och exportera resultaten Batch
Adresssökning Sök bolag på adress, gata, ort eller postnummer. Kombinera med bransch- och formfilter. Adress
Sorterbar adresstabell Klicka på kolumnhuvud för att sortera på namn, bolagsform, ort eller registreringsår Adress
Bolagsdrawer Klicka på ett bolag i adressresultaten för snabbvy. Knappar: Till Batch, Visa på karta, Adressnätverk, Hämta full info. Adress
Exportera alla (upp till 500) Hämtar upp till 500 adresssökresultat och laddar ner som CSV i ett steg Adress
Kartvy Visualiserar bolagsadresser på interaktiv karta via Leaflet och OpenStreetMap Karta
Nätverksgraf Ritar kopplingar mellan bolag i en batch-sökning som delar samma adress Nätverk
Adressnätverk (hub-and-spoke) SVG-visualisering av alla bolag på samma adress som ett enskilt bolag. Grön = aktivt, grå = avregistrerat. Analys
Registreringsvågor Stapeldiagram med nyregistreringar per år. Orange staplar markerar statistiska avvikelser (mean + 2σ). Analys
Export: CSV / JSON / Excel Exportera sökresultat till valfritt format. Kopiera-knapp för urklipp. Alla
Djuplänk Länka direkt till en sökning: ?orgnr=5560747551 eller ?orgnr=5560747551&lang=en
Validering (checksumma) Separat sida som verifierar organisationsnummer med Luhn-algoritmen, steg för steg validera/
Tvåspråkig (SV/EN) Hela gränssnittet och dokumentationen finns på svenska och engelska

Teknisk information

Datakälla

Bolagsverkets öppna register (Värdefulla datamängder v1) + officiellt API

Databassynk

Automatisk veckosynk, ca 3 miljoner bolag

CORS

search_name.php: Access-Control-Allow-Origin: *
Övriga endpoints: same-origin

Autentisering

OAuth2 hanteras server-side. Ingen nyckel behövs från klienten.

Rate limit

get_data.php: 60 req/min, 5000/dygn per IP
Lokala endpoints: ingen gräns

Svarsformat

JSON, UTF-8. HTTP 400 vid ogiltigt indata, 503 vid db-fel.

Sökteknik

MySQL FULLTEXT (InnoDB, boolean mode). Min tokenlängd: 3 tecken.

Kartor

Leaflet + OpenStreetMap + Nominatim (geocoding)

Felkoder

Svar HTTP Förklaring
{"error":"invalid_orgnr"} 400 Ogiltigt organisationsnummer
{"error":"db_unavailable"} 503 Databasen nådd inte
{"error":"no_address"} 200 Bolaget saknar gatuadress i databasen (address_network.php)
{"error":"too_short"} 200 Söktermen är för kort (reg_waves.php)
{"results":[],"mode":"empty"} 200 Inga träffar (search_name.php)

Djuplänk till sökning

Länka direkt till en orgnr-sökning via URL-parameter. Sökningen startar automatiskt.

https://mackan.eu/tools/bolagsverket/?orgnr=5560747551
https://mackan.eu/tools/bolagsverket/?orgnr=5560747551&lang=en
Tillbaka till verktyget Uppgifterna är offentliga registeruppgifter från Bolagsverket och görs inga juridiska bedömningar.