Get the company's group structure
curl --request GET \
--url https://lens-api.tic.io/companies/{id}/group \
--header 'x-api-key: <api-key>'import requests
url = "https://lens-api.tic.io/companies/{id}/group"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://lens-api.tic.io/companies/{id}/group', 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://lens-api.tic.io/companies/{id}/group",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://lens-api.tic.io/companies/{id}/group"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://lens-api.tic.io/companies/{id}/group")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://lens-api.tic.io/companies/{id}/group")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"isInGroup": true,
"membershipAsOf": "2023-11-07T05:31:56Z",
"companyKey": "<string>",
"ultimateParentKey": "<string>",
"memberCount": 123,
"swedishMemberCount": 123,
"foreignMemberCount": 123,
"levels": 123,
"path": [
"<string>"
],
"members": [
{
"key": "<string>",
"companyId": 123,
"name": "<string>",
"registrationNumber": "<string>",
"countryCode": "<string>",
"leiCode": "<string>",
"level": 123,
"parentKey": "<string>",
"childCount": 123,
"positionKnown": true,
"parentSource": "<string>",
"parentAsOf": "2023-11-07T05:31:56Z",
"sourceCount": 123,
"ownershipPercentage": 123,
"ownershipSource": "<string>",
"ownershipAsOf": "2023-11-07T05:31:56Z",
"isForeign": true,
"isAggregate": true
}
],
"formerMembers": [
{
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>",
"leftOn": "2023-11-07T05:31:56Z",
"leftGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
},
"nowInGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
}
}
],
"previousGroups": [
{
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>",
"leftOn": "2023-11-07T05:31:56Z",
"leftGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
},
"nowInGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
}
}
]
}Companies
Get the company's group structure
Returns every member of the company’s group with its immediate parent, level, and the source and date behind the parent. A flat list: build the tree from parentKey. Without asOf it also lists the companies the registry put outside the group in the last 12 months (formerMembers) and the groups the company itself left (previousGroups).
GET
/
companies
/
{id}
/
group
Get the company's group structure
curl --request GET \
--url https://lens-api.tic.io/companies/{id}/group \
--header 'x-api-key: <api-key>'import requests
url = "https://lens-api.tic.io/companies/{id}/group"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://lens-api.tic.io/companies/{id}/group', 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://lens-api.tic.io/companies/{id}/group",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$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://lens-api.tic.io/companies/{id}/group"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://lens-api.tic.io/companies/{id}/group")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://lens-api.tic.io/companies/{id}/group")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"isInGroup": true,
"membershipAsOf": "2023-11-07T05:31:56Z",
"companyKey": "<string>",
"ultimateParentKey": "<string>",
"memberCount": 123,
"swedishMemberCount": 123,
"foreignMemberCount": 123,
"levels": 123,
"path": [
"<string>"
],
"members": [
{
"key": "<string>",
"companyId": 123,
"name": "<string>",
"registrationNumber": "<string>",
"countryCode": "<string>",
"leiCode": "<string>",
"level": 123,
"parentKey": "<string>",
"childCount": 123,
"positionKnown": true,
"parentSource": "<string>",
"parentAsOf": "2023-11-07T05:31:56Z",
"sourceCount": 123,
"ownershipPercentage": 123,
"ownershipSource": "<string>",
"ownershipAsOf": "2023-11-07T05:31:56Z",
"isForeign": true,
"isAggregate": true
}
],
"formerMembers": [
{
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>",
"leftOn": "2023-11-07T05:31:56Z",
"leftGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
},
"nowInGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
}
}
],
"previousGroups": [
{
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>",
"leftOn": "2023-11-07T05:31:56Z",
"leftGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
},
"nowInGroup": {
"companyId": 123,
"registrationNumber": "<string>",
"name": "<string>"
}
}
]
}Enterprise+ tier
Returns the group the company belongs to: every member, each with one immediate parent, its level and the source and date behind that parent. Where the ownership tree shows every ownership link found in any source, this endpoint gives one placement per company, decided by fixed rules.
The members come as a flat list. Build the tree from
Group membership and the ultimate parent always come from the registry. The immediate parent is the most recent placement that agrees with the current membership. When no source places a member, it hangs directly under the ultimate parent with
parentKey: the member whose parentKey is null is the ultimate parent, and path lists the keys from the ultimate parent down to the requested company. A company that belongs to no group returns isInGroup: false and an empty members list.
asOf (yyyy-MM-dd) returns the group as it was on that date. History is available from October 2026.
Response
| Field | Description |
|---|---|
isInGroup | False when the company belongs to no group on the date |
membershipAsOf | When the registry last confirmed the company’s group membership |
companyKey | The requested company’s key |
ultimateParentKey | The ultimate parent’s key |
memberCount | All members, the ultimate parent included |
swedishMemberCount, foreignMemberCount | Members registered in Sweden and elsewhere |
levels | The deepest known level |
path | Keys from the ultimate parent down to the company |
members | Every member of the group |
formerMembers | Companies the registry put outside the group in the last 12 months, newest first; see below. Without asOf only |
previousGroups | The groups the requested company itself left in the last 12 months, in the same shape. Without asOf only |
Members
| Field | Description |
|---|---|
key | The member’s key within the response |
companyId | The internal company ID, when the member is a company in the register |
name | The company’s name |
registrationNumber | The organisation number; null for a foreign member |
countryCode | ISO country code, when known |
leiCode | The member’s LEI, when it has one |
level | 1 for the ultimate parent, 2 directly below it, and so on; null when the position is not known |
parentKey | The immediate parent’s key; null for the ultimate parent |
childCount | Members directly below this one |
positionKnown | False when only the ultimate parent is known |
parentSource | Where the immediate parent comes from, see below |
parentAsOf | The date that source describes |
sourceCount | How many independent sources name the same parent |
ownershipPercentage | The share (0-100) the immediate parent holds in the member; null when unknown |
ownershipSource | Where the share comes from (registry, lei or other); null when unknown |
ownershipAsOf | The date the share’s source describes |
isForeign | True for a member registered outside Sweden |
isAggregate | True for an entry that stands for the group’s remaining companies rather than one company |
Former members
formerMembers lists the companies the registry has taken out of the group in the last 12 months. That can mean a company was sold or merged into another company, or that the registry no longer holds its group membership. A company that is a member now is never listed. When the ultimate parent of an earlier group is now itself part of this group, the companies that left that earlier group are listed here too. For a company that belongs to no group, formerMembers lists the companies that left the group it led.
| Field | Description |
|---|---|
companyId | The internal company ID, when the company is in the register |
registrationNumber | The organisation number |
name | The company’s name |
leftOn | The first day the registry put the company outside the group |
leftGroup | The ultimate parent of the group it left: companyId, registrationNumber (null when foreign) and name |
nowInGroup | The ultimate parent of the group it belongs to now, in the same shape; null when it belongs to none |
Sources
parentSource | Meaning |
|---|---|
registry | The official business register |
lei | The parent relationships in the global LEI register |
other | Other sources |
positionKnown: false and level: null; members below it then have no level either.
The ownership share is given only when a source states it for that same parent, with its own source and date. Otherwise ownershipPercentage is null: the share is unknown, not zero.
Example
{
"isInGroup": true,
"membershipAsOf": "2026-10-16T00:00:00",
"companyKey": "0:5560000002",
"ultimateParentKey": "0:5560000001",
"memberCount": 3,
"swedishMemberCount": 2,
"foreignMemberCount": 1,
"levels": 3,
"path": ["0:5560000001", "0:5560000002"],
"members": [
{ "key": "0:5560000001", "companyId": 101, "name": "Example Group AB", "registrationNumber": "5560000001", "countryCode": "SE", "level": 1, "parentKey": null, "childCount": 1, "positionKnown": true, "parentSource": null, "isForeign": false },
{ "key": "0:5560000002", "companyId": 102, "name": "Example Holding AB", "registrationNumber": "5560000002", "countryCode": "SE", "level": 2, "parentKey": "0:5560000001", "childCount": 1, "positionKnown": true, "parentSource": "registry", "parentAsOf": "2026-05-31T00:00:00", "sourceCount": 2, "ownershipPercentage": 100.0, "ownershipSource": "other", "ownershipAsOf": "2024-06-20T00:00:00", "isForeign": false },
{ "key": "1:163300000003", "companyId": null, "name": "Example GmbH", "registrationNumber": null, "countryCode": "DE", "level": 3, "parentKey": "0:5560000002", "childCount": 0, "positionKnown": true, "parentSource": "registry", "parentAsOf": "2026-05-31T00:00:00", "sourceCount": 1, "ownershipPercentage": null, "ownershipSource": null, "ownershipAsOf": null, "isForeign": true }
],
"formerMembers": [
{ "companyId": 104, "registrationNumber": "5560000004", "name": "Example Sales AB", "leftOn": "2026-03-30T00:00:00", "leftGroup": { "companyId": 101, "registrationNumber": "5560000001", "name": "Example Group AB" }, "nowInGroup": null }
],
"previousGroups": []
}
Authorizations
Path Parameters
Internal company ID
Query Parameters
The group as it was on this date (yyyy-MM-dd). Default today.
Response
The company's group; isInGroup is false when it belongs to none
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes