/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). 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."
}