curl --request GET \
--url https://app.sajn.se/api/v1/company-registry/{orgNumber} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sajn.se/api/v1/company-registry/{orgNumber}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sajn.se/api/v1/company-registry/{orgNumber}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.sajn.se/api/v1/company-registry/{orgNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sajn.se/api/v1/company-registry/{orgNumber}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.sajn.se/api/v1/company-registry/{orgNumber}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sajn.se/api/v1/company-registry/{orgNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"basic": {
"name": "Anställningsavtal – Kai Lindqvist",
"orgNumber": "5566778899",
"lastUpdated": "2026-09-28T09:15:00.000Z",
"status": "COMPLETED"
},
"contact": {
"phoneNumbers": [
"+46851234567"
],
"address": {
"careOf": "",
"street": "Exempelgatan 1",
"postalCode": "11122",
"city": "Stockholm"
}
},
"legalInfo": {
"orgNumber": "5566778899",
"companyName": "Nordljus AB",
"companyForm": "Aktiebolag",
"domicile": "Stockholm",
"registration": {
"companyFormed": "2012-03-01",
"companyRegistered": "2012-03-15",
"registrationDate": "2012-03-15",
"articlesOfAssociation": "2012-03-01"
}
},
"taxInfo": {
"employer": "Ja",
"fTax": "Ja",
"vat": "Ja",
"vatNumber": "SE556677889901"
},
"business": {
"sni": [
{
"code": "70220",
"description": "Konsultverksamhet avseende företags organisation"
}
],
"activityDescription": "Konsultverksamhet inom HR och rekrytering.",
"companySignature": "Styrelsen"
},
"responsiblePersons": {
"executives": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"board": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"auditors": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"owners": [
{
"name": "Kim Nordin",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"role": "Styrelseledamot",
"control": "Mer än 25 %",
"personUrl": "https://example.com/personer/kai-lindqvist"
}
]
},
"location": {
"latitude": 59.3326,
"longitude": 18.0649
}
}{
"code": "INVALID_API_VERSION",
"message": "Unknown API version \"2026-13\". Supported versions: 2026-09, 2026-10.",
"userMessage": "API-versionen finns inte.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "UNAUTHORIZED",
"message": "Invalid API token",
"userMessage": "Ogiltig API-nyckel",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "INSUFFICIENT_SCOPE",
"message": "Insufficient OAuth scope: requires contacts:read",
"userMessage": "Applikationen saknar behörighet (scope) för denna åtgärd.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2",
"requiredScopes": [
"contacts:read"
],
"grantedScopes": [
"profile:read"
]
}{
"code": "NOT_FOUND",
"message": "Document not found",
"userMessage": "Resursen hittades inte.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2",
"resource": "document"
}{
"code": "INVALID_STATE",
"message": "The resource's current state doesn't allow the operation, such as editing a document that was already sent or downloading a file that isn't produced yet.",
"userMessage": "Åtgärden är inte möjlig i resursens nuvarande status.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"userMessage": "För många förfrågningar. Försök igen om en stund.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"userMessage": "Något gick fel.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "UPSTREAM_UNAVAILABLE",
"message": "A service the operation depends on, such as an eID provider or a connected integration, failed or is unavailable. Retry with exponential backoff.",
"userMessage": "En extern tjänst svarar inte just nu. Försök igen om en stund.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}Look up a company in the company registry
Look up a company in the external company registry by organization number, including its signatories. This searches the registry, not the companies in your workspace. Results are cached for 3 days.
Response includes:
- Basic company info (name, status, organization number)
- Contact information (phone, address)
- Legal information (company form, domicile, registration dates)
- Tax information (VAT registration, verified against the EU VIES registry;
employerandfTaxaren’t populated) - Business info (SNI codes, activity description, company signature)
- Responsible persons (executives, board members, auditors, owners)
- Location coordinates
curl --request GET \
--url https://app.sajn.se/api/v1/company-registry/{orgNumber} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.sajn.se/api/v1/company-registry/{orgNumber}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.sajn.se/api/v1/company-registry/{orgNumber}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.sajn.se/api/v1/company-registry/{orgNumber}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.sajn.se/api/v1/company-registry/{orgNumber}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.sajn.se/api/v1/company-registry/{orgNumber}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sajn.se/api/v1/company-registry/{orgNumber}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"basic": {
"name": "Anställningsavtal – Kai Lindqvist",
"orgNumber": "5566778899",
"lastUpdated": "2026-09-28T09:15:00.000Z",
"status": "COMPLETED"
},
"contact": {
"phoneNumbers": [
"+46851234567"
],
"address": {
"careOf": "",
"street": "Exempelgatan 1",
"postalCode": "11122",
"city": "Stockholm"
}
},
"legalInfo": {
"orgNumber": "5566778899",
"companyName": "Nordljus AB",
"companyForm": "Aktiebolag",
"domicile": "Stockholm",
"registration": {
"companyFormed": "2012-03-01",
"companyRegistered": "2012-03-15",
"registrationDate": "2012-03-15",
"articlesOfAssociation": "2012-03-01"
}
},
"taxInfo": {
"employer": "Ja",
"fTax": "Ja",
"vat": "Ja",
"vatNumber": "SE556677889901"
},
"business": {
"sni": [
{
"code": "70220",
"description": "Konsultverksamhet avseende företags organisation"
}
],
"activityDescription": "Konsultverksamhet inom HR och rekrytering.",
"companySignature": "Styrelsen"
},
"responsiblePersons": {
"executives": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"board": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"auditors": [
{
"name": "Kim Nordin",
"role": "Styrelseledamot",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"personUrl": "https://example.com/personer/kai-lindqvist"
}
],
"owners": [
{
"name": "Kim Nordin",
"personId": "cm4k2x9p10043abcd1234efgh",
"age": 46,
"role": "Styrelseledamot",
"control": "Mer än 25 %",
"personUrl": "https://example.com/personer/kai-lindqvist"
}
]
},
"location": {
"latitude": 59.3326,
"longitude": 18.0649
}
}{
"code": "INVALID_API_VERSION",
"message": "Unknown API version \"2026-13\". Supported versions: 2026-09, 2026-10.",
"userMessage": "API-versionen finns inte.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "UNAUTHORIZED",
"message": "Invalid API token",
"userMessage": "Ogiltig API-nyckel",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "INSUFFICIENT_SCOPE",
"message": "Insufficient OAuth scope: requires contacts:read",
"userMessage": "Applikationen saknar behörighet (scope) för denna åtgärd.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2",
"requiredScopes": [
"contacts:read"
],
"grantedScopes": [
"profile:read"
]
}{
"code": "NOT_FOUND",
"message": "Document not found",
"userMessage": "Resursen hittades inte.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2",
"resource": "document"
}{
"code": "INVALID_STATE",
"message": "The resource's current state doesn't allow the operation, such as editing a document that was already sent or downloading a file that isn't produced yet.",
"userMessage": "Åtgärden är inte möjlig i resursens nuvarande status.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"userMessage": "För många förfrågningar. Försök igen om en stund.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"userMessage": "Något gick fel.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}{
"code": "UPSTREAM_UNAVAILABLE",
"message": "A service the operation depends on, such as an eID provider or a connected integration, failed or is unavailable. Retry with exponential backoff.",
"userMessage": "En extern tjänst svarar inte just nu. Försök igen om en stund.",
"requestId": "req_V1StGXR8Z5jdHi6BmyT2"
}Authorizations
Personal API key, e.g. Authorization: Bearer sajn_sk_.... Not scope-limited — acts as the issuing user.
Headers
API version for this request. Without it, the request uses the organization's default version; an organization without a default is pinned to the latest version by its first request.
2026-09, 2026-10 Path Parameters
Organization number of the company, with or without a hyphen
1"5560000000"
Response
Company details from the external company registry, including signatories
Company details from the external company registry, including signatories
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?

