Guide · Sweden · Lookup and validation
Sweden company data API: look up and validate an organisationsnummer
A customer types an organisationsnummer, a Swedish VAT number or the first letters of a name; your form fills in the legal name, legal form, status and registered address from Bolagsverket, the Swedish Companies Registration Office. One key, and the same response shape as every other country the API covers.
Sweden at a glance
Register: Bolagsverket
Identifiers Organisationsnummer
- Company recordsYes
- OfficersNo
- Insolvency noticesYes
- Corporate eventsRegister changes
- MonitoringYes
- Financial statementsAnnual accounts
- VAT numberBuilt from the number
- NACE classYes
- UpdatedWeekly
The guide below states the limits of every row. Financial statements are on the Scale plan and above; the other plans and the free trial get 10 calls a month.
Price From EUR 9.99 a month (Starter plan)
In other languagesSvenska
Sign upTry Sweden live
Look up a company in Sweden with the shared demo key. No sign-up.
The demo key is shared and capped per page view; your own key has the limits of your plan.
Is there an official Swedish company registry API?
As at 5 Nov 2026, yes, in part. Bolagsverket lists APIs and downloadable files for retrieving company information, and describes its free datasets (company data from Bolagsverket and SCB) as available free of charge and without an agreement; its overview page names no key requirement and no limits. One API across the live countries adds a company record keyed on the organisationsnummer in the same response shape as every other country, with insolvency notices and monitoring. Scope limits for Sweden: company records only, no officers, sole traders are never served, and the data is updated weekly.
What you get, and what you do not
Company records from the Swedish Companies Registration Office (Bolagsverket): legal name, legal form, status, registered address, activity code and dates; with register-change events and monitoring, but no officers and no registry-compliance signal (corporate insolvency notices are linked by organisationsnummer), and sole traders (enskild näringsverksamhet) are never served.
That is the record of a Swedish company as an onboarding form, an invoice or a CRM row needs it. If you need board members or a change history from before 2026-09-30 for Sweden, this is not the API for it. If you want to know what the register itself is, start with What is Bolagsverket? (also på svenska).
What the Swedish record gives your product
- Exact match on the organisationsnummer.
company_number=556012-5790withcountry=SE. The hyphen is optional, and the check digit is verified server-side: a number that fails it, or whose third digit is below 2, is a 400 validation error, so a typo never looks like a missing company. - The VAT number as an alias.
vat=SE556012579001reaches the same company. The Swedish VAT number isSE, the ten digits of the organisationsnummer and01. - Autocomplete by name.
?name=is a normalised, partial match ranked by a match score. Call it on every keystroke; each call is one request. - The fields a form needs. Legal name, legal form, status, registered address, postal code and city, the SNI activity code where it is published, and the registration and deregistration dates.
- The register's own state. A company in bankruptcy, restructuring, administration or liquidation carries that in
statusand is not served as plain active. - One schema for every country. The same response shape as
country=ES|FR|GB|IE|PL|NO|FI|SE|BE|HR|DK|EE|SK|CH|LV|CY|RO|US|LT|CA|AU|JP|IL|SG|CO|TW|BR|CZ|DE|AR|UA|RS|SI|EC|NL|CL|NL|MX. Fields the Swedish register does not publish, such as share capital or employee counts, come back empty.
| Field | What it holds for Sweden |
|---|---|
company_number | The organisationsnummer, written with the hyphen: 556012-5790. |
company_name | The registered name. |
legal_form, local_legal_form, local_legal_form_name | The standard abbreviation in legal_form (null when the form is not mapped), Bolagsverket's form code, such as AB, HB, KB, EK or BRF, in local_legal_form and the full Swedish name in local_legal_form_name. |
local_status, status, stage | The register's own value in local_status: one of active, bankrupt, in_restructuring, in_administration, in_liquidation, deregistered or merged. status carries the standard reading and stage the lifecycle stage, null where the value is not recognised. |
address, postal_code, city | The registered address where the register holds one; the city is written in capitals, as the register prints it. |
activity_code | Five digits in the SNI 2025 classification from Statistics Sweden (SCB), which corresponds to NACE Rev. 2.1, written without a dot. Served where it is published. |
founding_date, dissolution_date | The registration date, which is also the founding date, and the deregistration date where there is one. |
Validate before you call
The check digit is a Luhn digit over all ten digits, and the third digit must be 2 or higher: a personal identity number (personnummer) has a third digit of 0 or 1, so a person's number can never pass as a company's. That makes an organisationsnummer one of the identifiers you can reject offline, in your own code, before it costs a call. The identifier validator runs the same arithmetic in the browser; this is the version to paste into a form handler:
// Organisationsnummer: ten digits, a Luhn check digit over all ten, third digit 2 or higher
export function checkOrgnr(input) {
const digits = String(input).replace(/[\s-]/g, '')
if (!/^\d{10}$/.test(digits)) return null
if (digits[2] < '2') return null // the shape of a personnummer: never a company
let sum = 0
for (let i = 0; i < 10; i++) {
let d = Number(digits[9 - i]) // from the right
if (i % 2 === 1) { d *= 2; if (d > 9) d -= 9 } // double every second digit
sum += d
}
return sum % 10 === 0 ? `${digits.slice(0, 6)}-${digits.slice(6)}` : null
}
checkOrgnr('556012-5790') // '556012-5790' (Aktiebolaget Volvo)
checkOrgnr('5560125790') // '556012-5790'
checkOrgnr('556012-5791') // null: the check digit should be 0A passing check digit says the number is well-formed, never that the company exists or is still registered. That is what the lookup is for.
Three calls
# 1. By organisationsnummer curl -H "Authorization: Bearer rk_live_..." \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?company_number=556012-5790&country=SE" # 2. By the VAT number curl -H "Authorization: Bearer rk_live_..." \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?vat=SE556012579001&country=SE" # 3. By name, for a type-ahead field curl -H "Authorization: Bearer rk_live_..." \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?name=volvo&country=SE&limit=5"
To resolve a list, POST /companies/lookup takes up to 100 items in one call, each one counted as one request:
curl -X POST "https://api.prometiam.com/functions/v1/risk-api/companies/lookup" \
-H "Authorization: Bearer rk_live_..." \
-H "Content-Type: application/json" \
-d '{"items":[{"country":"SE","company_number":"556012-5790"},{"country":"SE","vat":"SE556012579001"},{"country":"SE","name":"Volvo"}]}'The search returns the record's id; pass it to GET /companies/{id} for the detail.
An autocomplete endpoint in Node
Your server keeps the key and proxies the search; the form calls your server. A well-formed organisationsnummer goes to the exact filter, anything else is a name, and a malformed number is rejected before it costs a call:
// server: /api/se-company?q=... (keep the key out of the browser)
app.get('/api/se-company', async (req, res) => {
const q = String(req.query.q || '').trim()
const looksLikeId = /^[\d\s-]+$/.test(q)
const orgnr = looksLikeId ? checkOrgnr(q) : null
if (looksLikeId && !orgnr) return res.status(422).json({ error: 'That is not a valid organisationsnummer' })
const params = new URLSearchParams({ country: 'SE', limit: '6', ...(orgnr ? { company_number: orgnr } : { name: q }) })
const r = await fetch('https://api.prometiam.com/functions/v1/risk-api/companies/search?' + params,
{ headers: { Authorization: 'Bearer ' + process.env.PROMETIAM_API_KEY } })
const { data } = await r.json()
res.json(data.map(c => ({ id: c.id, name: c.company_name, orgnr: c.company_number, form: c.legal_form,
status: c.status, city: c.city, postal_code: c.postal_code, address: c.address })))
})What Sweden does not carry
- Officers and board members. Not part of the Swedish record.
- Gazette notices. The register-change events are not gazette notices: they show a change to the name, status, legal form or registered address dated when it first appears in the register data, and none is dated before 2026-09-30. Monitoring is available for every live country except France and Chile.
- A registry-compliance signal. Not served for Sweden.
- More than the register states. The notices are Bolagsverket's procedure data (konkurs, företagsrekonstruktion, ackordsförhandling), updated weekly, with no court, case number or source link; proceedings that ended before collection are not included. They are linked by organisationsnummer, and the register's bankruptcy, restructuring, administration and liquidation states are also in the company's
status. - Beneficial owners. Not served for Sweden.
- Financial statements. Annual accounts as filed are served from the Scale plan, for digitally filed iXBRL accounts only.
- Sole traders. Never served, so a lookup of one returns nothing even though the business exists.
Pricing
Sweden is included in every tier at no upcharge. Starter begins with a 14-day trial: 500 credits in total, 10 requests/minute, card required, nothing charged for 14 days. Subscribing keeps the same key working. Then Starter at €9.99/month (1,000 credits, 60 requests/minute), Professional at €29.99/month (10,000 credits, 120 requests/minute) and Scale at €99.99/month (50,000 credits, 300 requests/minute), monthly or annual; annual is ten months' price for twelve. A company record costs 1 credit, an autocomplete keystroke costs 1 credit, and error responses cost nothing, so a product onboarding a few hundred Swedish customers a month stays inside Starter.
FAQ
How do I look up a Swedish company by organisationsnummer from an API?
Call GET /companies/search?company_number=556012-5790&country=SE. The hyphen is optional, and a number whose check digit does not match, or whose third digit is below 2, is a 400 validation error rather than an empty list.
Can I look up a Swedish company by its VAT number?
Yes: vat=SE556012579001 with country=SE resolves to the same company as the organisationsnummer.
Does the Swedish record include officers, company events or insolvency notices?
Partly. Sweden is company-level: legal name, legal form, status, registered address, activity code and dates. There are no officers and no registry-compliance signal. Register-change events (name, status, legal form and registered address, dated when the change first appears in the register data, none before 2026-09-30) and monitoring are available, and corporate insolvency notices (Bolagsverket's procedure data (konkurs, företagsrekonstruktion, ackordsförhandling), updated weekly, with no court, case number or source link; proceedings that ended before collection are not included) are linked by organisationsnummer. The register's bankruptcy, restructuring, administration and liquidation states are also in the company's status.
Does it cover Swedish sole traders?
No. They are never served, so a lookup of one returns nothing even though the business exists.
Can I call the API from the browser?
You can, but a key in the browser is public. Proxy the search through your server, as in the sample above. Rate limits are per key.
Is there a way to try it before signing up?
Yes: the free organisationsnummer lookup runs the same call with a shared key, and a Swedish-language organisationsnummer search is there for Swedish-speaking users.
Everything about Sweden
Free tools
In other languages
Svenska 16
- Vad är Bolagsverket
- Sök organisationsnummer
- Validera organisationsnummer
- UC-alternativ
- KYB och kundkännedom via API
- Leverantörskontroll via API
- Konkursbevakning via API
- Konkurser och rekonstruktioner per månad i Sverige
- Bolagsverket API
- Roaring-alternativ
- Företags-API
- Momsregistreringsnummer
- Konkurser: sök företag i konkurs på namn eller orgnr
- Säljsignaler
- Sverige: format för företagsidentifierare (Organisationsnummer)
- Allabolag API och alternativ
More countries: Nordics
Contains data from Bolagsverket (the Swedish Companies Registration Office) and Statistics Sweden (SCB).