/v1/sni/searchSNI-sökning
Sök efter företag baserat på deras SNI-kod (branschklassificering).
Översikt
SNI-sökning-endpointen låter dig hitta företag som har en specifik SNI-kod registrerad som en av sina affärsverksamheter. Du kan även filtrera på stad. Som standard returneras alla bolag med någon omsättningssignal, exakt från digital årsredovisning eller intervall från SCB:s storleksklass (cirka 85 % av aktiva aktiebolag). Skicka exact_only: true för att smala av till bolag med exakta nyckeltal från digital årsredovisning (cirka 60 %). Detta är användbart för marknadsundersökningar, konkurrentanalys eller för att hitta företag i en specifik bransch.
Flera SNI-koder
Resultatbaserad debitering
1 kredit = 1 returnerat företag.
Om du begär 100 företag och 47 hittas, debiteras du 47 krediter. Fältet creditsCharged i metadata visar alltid exakt vad som debiterades.
Om stora resultatmängder
offset för att hämta data i omgångar.Omsättningssignal: exakt eller intervall
revenue_estimate-envelope (och en motsvarande employees_estimate) med fält type (exact, interval eller none), value, interval_low/interval_high och en källangivelse source (annual_report eller scb). Skicka exact_only: true för att smala av till bolag med exakta nyckeltal från digital årsredovisning. Källa: Bolagsverket, SCB och PRV.Förfrågan
Förfrågningskropp
Skicka ett JSON-objekt med SNI-koden att söka efter, samt valfria filter:
{
"sni_code": "70200",
"city": "Stockholm",
"limit": 10
}
Parametrar
| Parameter | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
| sni_code | string | Obligatorisk | 5-siffrig SNI-kod (t.ex. "70200"). |
| city | string | Valfri | Filtrera på stadsnamn (skiftlägesokänslig, partiell matchning). |
| limit | number | Valfri | Max antal företag per anrop. Standard: 100, Max: 100. |
| offset | number | Valfri | Pagineringsoffset. Standard: 0. |
| exact_only | boolean | Valfri | Smala av till bolag med exakta nyckeltal från digital årsredovisning (cirka 60 % av aktiva aktiebolag). Standard: false, vilket inkluderar både exakt nettoomsättning och SCB:s storleksklass-intervall (cirka 85 % täckning). När true påverkas även revenue-filter och sortering: enbart exakt nettoomsättning räknas som signal. |
| has_annual_report | boolean | Valfri | Explicit filter på digital årsredovisning. true = endast bolag med årsredovisning, false = endast bolag utan. Standard: utelämnad (inget filter). För att smala av till bolag med exakta nyckeltal, använd hellre exact_only, vars semantik även styr revenue-filter och sortering. |
| min_revenue | number | Valfri | Lägsta omsättning i hela SEK. Matchar på exakt nettoomsättning ELLER SCB-intervall som överlappar gränsvärdet. Sätt exact_only: true för att enbart matcha på exakt nettoomsättning. |
| max_revenue | number | Valfri | Högsta omsättning i hela SEK. Matchar på exakt nettoomsättning ELLER SCB-intervall som överlappar gränsvärdet. Sätt exact_only: true för att enbart matcha på exakt nettoomsättning. |
| sort | string | Valfri | Sortering av resultat. Värden: revenue_desc (störst omsättning först, default), revenue_asc, name (bokstavsordning). |
Paginering
offset och limit för paginering. Fältet hasMore i svaret indikerar om fler resultat finns.Kvoter och begränsningar
| Plan | Månatlig kvot | Max resultat per anrop |
|---|---|---|
| Free | 500 krediter | 100 företag |
| Starter | 5 000 krediter | 100 företag |
| Pro | 50 000 krediter | 100 företag |
Kodexempel
Här är exempel på flera programmeringsspråk:
12345# Sök företag med SNI-kod, filtrera på stad
curl -X POST 'https://data.foretagsapi.se/v1/sni/search' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{"sni_code": "70200", "city": "Stockholm", "limit": 10}'
Svar
Lyckat svar (200 OK)
Returnerar ett JSON-objekt med matchande företag:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293{
"companies": [
{
"id": 123456,
"name": "Konsultbolaget AB",
"orgNumber": "5567012345",
"legalForm": "AB",
"postalAddress": {
"street": "Storgatan 1",
"postalCode": "11122",
"city": "STOCKHOLM"
},
"registrationDate": "2015-03-15",
"deregistrationDate": null,
"deregistrationReason": null,
"businessDescription": "Företagskonsulttjänster",
"ongoingRestructuring": null,
"ftgstat": 1,
"jestat": null,
"jurform": 49,
"reklamsparr": 1,
"sniCodes": {
"sni1": "70200",
"sni2": null,
"sni3": null,
"sni4": null,
"sni5": null,
"sni1_name": "Konsultverksamhet avseende företagsledning",
"sni2_name": null,
"sni3_name": null,
"sni4_name": null,
"sni5_name": null
},
"score": 1.0,
"hasDigitalAnnualReport": true,
"financials": {
"year": 2023,
"taxonomy": "k2",
"currency": "SEK",
"revenue": 8200000,
"operatingResult": 940000,
"netResult": 712000,
"totalAssets": 5100000,
"equity": 3050000,
"solidity": 0.598,
"operatingMargin": 0.1146,
"employees": 7,
"fiscalYearStart": "2023-01-01",
"fiscalYearEnd": "2023-12-31"
},
"revenue_estimate": {
"value": 8200000,
"type": "exact",
"interval_low": null,
"interval_high": null,
"reference_year": 2023,
"source": "annual_report",
"scb_class": null,
"label_sv": null
},
"employees_estimate": {
"value": 7,
"type": "exact",
"interval_low": null,
"interval_high": null,
"source": "annual_report",
"scb_class": null,
"label_sv": null
}
}
],
"metadata": {
"sniCode": "70200",
"sniDescription": "Konsultverksamhet avseende företagsledning och företagsstyrning",
"city": "Stockholm",
"resultCount": 10,
"totalCount": 4523,
"offset": 0,
"limit": 10,
"hasMore": true,
"creditsCharged": 10,
"filters": {
"hasAnnualReport": null,
"exactOnly": false,
"minRevenue": null,
"maxRevenue": null,
"sort": "revenue_desc"
},
"processingTimeMs": 230,
"timestamp": "2026-01-29T12:00:00.000Z",
"mode": "api"
}
}
Metadata-fält
| Fält | Typ | Beskrivning |
|---|---|---|
| sniCode | string | SNI-koden som söktes |
| sniDescription | string | null | Beskrivning av SNI-koden |
| city | string | null | Stadsfilter som användes (om angivet) |
| resultCount | number | Antal företag i detta svar |
| totalCount | number | Totalt antal matchande företag |
| offset | number | Aktuell pagineringsoffset |
| limit | number | Limit som användes |
| hasMore | boolean | True om fler resultat finns att hämta |
| creditsCharged | number | Antal krediter som debiterades |
| filters | object | Återspeglar de aktiva filtren för anropet: hasAnnualReport (boolean | null), exactOnly (boolean), minRevenue (number | null), maxRevenue (number | null) och sort (string). Användbart för att visa tillämpade filter i klienten. |
| processingTimeMs | number | Bearbetningstid i millisekunder |
| timestamp | string | ISO 8601 tidsstämpel |
| mode | string | Alltid "api" för autentiserade anrop |
Företagsfält
Varje företag i companies-arrayen innehåller:
| Fält | Typ | Beskrivning |
|---|---|---|
| name | string | Företagets namn |
| orgNumber | string | 10-siffrigt organisationsnummer |
| id | number | Internt databas-ID |
| legalForm | string | Juridisk form som textkod (kortform). Vanliga värden: AB (Aktiebolag), HB (Handelsbolag), KB (Kommanditbolag), BRF (Bostadsrättsförening), EK (Ekonomisk förening). Offentliga organisationer, som inte registreras hos Bolagsverket, hämtas från SCB och har koderna KOMMUN, REGION, STAT (statlig enhet), KOMMUNALFORBUND, OFFENTLIG (offentlig korporation eller anstalt) och HYPOTEKSFORENING. Enskilda firmor ingår för närvarande inte i datasetet. |
| postalAddress | object | Objekt med street, postalCode, city |
| registrationDate | string | Registreringsdatum (YYYY-MM-DD) |
| deregistrationDate | string | null | Avregistreringsdatum om företaget är avregistrerat |
| businessDescription | string | Verksamhetsbeskrivning |
| ftgstat | number | F-skattestatus (0=aldrig, 1=aktiv, 9=inaktiv) |
| reklamsparr | number | Reklamspärr (0=okänd, 1=ingen spärr, 2=spärrad). Värdet 2 betyder att mottagaren har avsagt sig direktreklam via post, telefon eller kombo. Gäller ej e-post. Källa: Bolagsverket och SCB. |
| jestat | number | null | Status för juridisk enhet (1=aktiv, null=ej tillgänglig) |
| jurform | number | null | Juridisk formkod (numerisk). Vanliga: 10=Enskild firma, 31=Handelsbolag, 49=Aktiebolag, 51=Ekonomisk förening |
| ongoingRestructuring | string | null | Kod för pågående avveckling/rekonstruktion. Prefix: LI=likvidation, KK=konkurs, FR=företagsrekonstruktion. Null om inget pågår. |
| deregistrationReason | string | null | Orsakskod vid avregistrering. Vanliga: KKAV-AVORG (konkurs), FUAV-AVORG (fusion), LIAV-AVORG (likvidation). Null om ej avregistrerat. |
| score | number | Matchningspoäng 0.0-1.0 (vid SNI-sökning baserat på relevans) |
| sniCodes | object | Upp till 5 SNI-koder med beskrivningar |
| hasDigitalAnnualReport | boolean | Sant om företaget har lämnat in digital årsredovisning och finansiell data finns i systemet. Alltid med i svaret. |
| financials | object | null | Finansiell data från senaste årsredovisning, eller null om data saknas. Fält: year, revenue, operatingResult, netResult, totalAssets, equity, solidity, operatingMargin, employees, med mera. Alla belopp i hela SEK. Negativa värden är legitima. |
| revenue_estimate | object | Källmedveten omsättnings-envelope. type: "exact" = värdet kommer från digital årsredovisning (samma som financials.revenue). type: "interval" = SCB-baserad omsättningsklass; interval_low/interval_high ger bandets gränser, label_sv är en färdigformaterad svensk etikett (t.ex. "1-5 Mkr" eller "≥ 10 mdkr"). type: "none" = ingen storleksuppgift finns. Övriga fält: value, source ("annual_report"|"scb"|null), reference_year, scb_class. |
| employees_estimate | object | Källmedveten anställda-envelope. Samma struktur som revenue_estimate men för antal anställda (saknar reference_year). För bolag med digital årsredovisning är value samma som financials.employees. För bolag utan AR finns ofta ett SCB-intervall (BRF, HB, KB och ekonomiska föreningar omfattas). |
SNI-koder objekt
{
"sni1": "70200",
"sni2": "62020",
"sni3": null,
"sni4": null,
"sni5": null,
"sni1_name": "Konsultverksamhet avseende företagsledning",
"sni2_name": "Datakonsultverksamhet",
"sni3_name": null,
"sni4_name": null,
"sni5_name": null
}
Användningsområden
Vanliga användningsområden för SNI-sökning inkluderar:
- Marknadsundersökning: Hitta företag i en specifik branschsektor (standard inkluderar både exakt nettoomsättning och SCB-intervall)
- Konkurrentanalys: Identifiera företag med liknande affärsverksamhet
- Lead-generering: Bygg riktade listor för B2B-försäljning
- Branschrapporter: Aggregera data för sektoranalys
Paginering
Använd offset och limit för att paginera. Fältet hasMore indikerar om fler resultat finns.
// Sida 1
{"sni_code": "70200", "limit": 100, "offset": 0}
// Sida 2
{"sni_code": "70200", "limit": 100, "offset": 100}
// Sida 3
{"sni_code": "70200", "limit": 100, "offset": 200}
Felsvar
| Status | Fel | Orsak |
|---|---|---|
| 400 | Missing required parameter: sni_code | Ingen SNI-kod angavs |
| 400 | Invalid SNI code format. Must be 5 digits. | Koden är inte exakt 5 siffror |
| 400 | Threshold exceeded | SNI-koden har >5000 företag utan stadsfilter. Lägg till city-parameter. |
| 405 | Method not allowed | Använd POST, inte GET |
| 402 | Krediterna är slut. Uppgradera din plan eller köp fler krediter. | Månatlig kvot/krediter slut |
| 429 | Rate limit exceeded | Per-minut-cap (Cloudflare) uppnådd — vänta och försök igen |
| 500 | Database error during search | Internt fel (försök igen) |
Exempel på threshold-fel (400)
Returneras när SNI-koden har över 5000 företag och inget stadsfilter anges:
{
"error": "Threshold exceeded",
"message": "SNI-koden 70200 har 85 393 företag. Lägg till ett stadsfilter för att begränsa resultaten.",
"requiresCity": true,
"totalCount": 85393,
"sniCode": "70200"
}
Exempel på kvotfel (402)
{
"error": "Krediterna är slut. Uppgradera din plan eller köp fler krediter."
}