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_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.
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));
}
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());
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));
}
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());
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
Bolagsverkets öppna register (Värdefulla datamängder v1) + officiellt API
Automatisk veckosynk, ca 3 miljoner bolag
search_name.php: Access-Control-Allow-Origin: *
Övriga endpoints: same-origin
OAuth2 hanteras server-side. Ingen nyckel behövs från klienten.
get_data.php: 60 req/min, 5000/dygn per IP
Lokala endpoints: ingen gräns
JSON, UTF-8. HTTP 400 vid ogiltigt indata, 503 vid db-fel.
MySQL FULLTEXT (InnoDB, boolean mode). Min tokenlängd: 3 tecken.
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