curl --request POST \
--url https://api.croma.run/co/supersociedades/shareholders/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_number": "900249127"
}
'import requests
url = "https://api.croma.run/co/supersociedades/shareholders/v1"
payload = { "document_number": "900249127" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_number: '900249127'})
};
fetch('https://api.croma.run/co/supersociedades/shareholders/v1', 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://api.croma.run/co/supersociedades/shareholders/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_number' => '900249127'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.croma.run/co/supersociedades/shareholders/v1"
payload := strings.NewReader("{\n \"document_number\": \"900249127\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.croma.run/co/supersociedades/shareholders/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_number\": \"900249127\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/supersociedades/shareholders/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_number\": \"900249127\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"found": true,
"document_number": "<string>",
"company": {
"name": "<string>"
},
"filing": {
"year": 123,
"cutoff_date": "<string>",
"filing_id": "<string>",
"statement_type": "individual",
"niif_group": "plenas"
},
"shareholders": [
{
"name": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"country": "<string>",
"shares": 123,
"participation_pct": 123
}
],
"foreign_investors": [
{
"name": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"country": "<string>",
"shares": 123,
"participation_pct": 123,
"movement": "<string>"
}
],
"subsidiaries": [
{
"name": "<string>",
"document_number": "<string>",
"place_of_business": "<string>",
"country": "<string>",
"non_controlling_interest_pct": 123,
"non_controlling_voting_pct": 123
}
],
"associates": [
{
"name": "<string>",
"document_number": "<string>",
"place_of_business": "<string>",
"country": "<string>",
"ownership_pct": 123,
"voting_pct": 123
}
],
"officers": [
{
"role": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"first_names": "<string>",
"last_names": "<string>",
"professional_card": "<string>",
"chamber_registration_date": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Supersociedades Shareholders
Shareholders or partners a Colombian company declared in the notes of its annual financial statements filed with the Superintendencia de Sociedades, by NIT: each holder’s name, identity document, shares and percentage, plus the foreign investors, subsidiaries, associates and officers (legal representatives, accountant, revisor fiscal) declared in the same filing. Latest fiscal year by default, or a given year. Only companies that file with the Superintendencia (about 30,000 a year) are covered.
curl --request POST \
--url https://api.croma.run/co/supersociedades/shareholders/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_number": "900249127"
}
'import requests
url = "https://api.croma.run/co/supersociedades/shareholders/v1"
payload = { "document_number": "900249127" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_number: '900249127'})
};
fetch('https://api.croma.run/co/supersociedades/shareholders/v1', 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://api.croma.run/co/supersociedades/shareholders/v1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_number' => '900249127'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.croma.run/co/supersociedades/shareholders/v1"
payload := strings.NewReader("{\n \"document_number\": \"900249127\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.croma.run/co/supersociedades/shareholders/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_number\": \"900249127\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/supersociedades/shareholders/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_number\": \"900249127\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"found": true,
"document_number": "<string>",
"company": {
"name": "<string>"
},
"filing": {
"year": 123,
"cutoff_date": "<string>",
"filing_id": "<string>",
"statement_type": "individual",
"niif_group": "plenas"
},
"shareholders": [
{
"name": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"country": "<string>",
"shares": 123,
"participation_pct": 123
}
],
"foreign_investors": [
{
"name": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"country": "<string>",
"shares": 123,
"participation_pct": 123,
"movement": "<string>"
}
],
"subsidiaries": [
{
"name": "<string>",
"document_number": "<string>",
"place_of_business": "<string>",
"country": "<string>",
"non_controlling_interest_pct": 123,
"non_controlling_voting_pct": 123
}
],
"associates": [
{
"name": "<string>",
"document_number": "<string>",
"place_of_business": "<string>",
"country": "<string>",
"ownership_pct": 123,
"voting_pct": 123
}
],
"officers": [
{
"role": "<string>",
"document_type": "<string>",
"document_number": "<string>",
"first_names": "<string>",
"last_names": "<string>",
"professional_card": "<string>",
"chamber_registration_date": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Authorizations
Use Authorization: Bearer YOUR_API_KEY
Headers
Optional client-chosen key for this request (any string up to 255 characters, e.g. a UUID). Every Croma operation is an idempotent lookup: repeating a request with the same body returns the same result and creates nothing, so retrying after a timeout or network failure is always safe. The key is echoed back in the Idempotency-Key response header so you can correlate a retry with its first attempt. Each attempt that reaches the API counts against the rate limit.
255"0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b"
Body
Response
Successful response
Show child attributes
Show child attributes