Business Holmes

Query official bureaus and Stark Infra's internal datasets to investigate a legal entity (CNPJ). Each request targets a specific bureau by type and returns that bureau's structured payload alongside a paging cursor.

Use Business Holmes to run KYB, judicial, anti-fraud, sanctions, QSA (corporate structure) and federal-revenue checks on a company before onboarding it, granting credit or releasing a high-risk operation.

Every call is synchronous, scoped to your workspace and logged on Stark Infra's side — there is no resource lifecycle to track.

NOTE: Read Core Concepts before continuing this guide.

RESOURCE SUMMARY
Single GET endpoint that dispatches to one bureau per call and returns its raw, structured payload.

Setup

For each environment (Sandbox and Production):

1. Create an account at Stark Bank.

2. Get in touch with your account manager to enable Business Holmes on your workspace — each bureau is contracted independently, so let us know which type values you intend to use.

3. Have the CNPJ you want to investigate ready in unmasked or masked form — Stark Infra normalizes both before sending it to the bureau.

4. Generate your ECDSA credentials by following How to Create ECDSA Keys and authenticate every request with the Access-Id, Access-Time and Access-Signature headers.

Business Holmes Overview

Business Holmes investigates a company (CNPJ) against an external bureau or an internal dataset. Every request targets a specific bureau by type; the response wraps the bureau's raw payload under a key named exactly after the type you queried.

All bureaus are queried through the same endpoint signature, with the same validation pipeline and the same paging contract. Only the two JusBrasil bureaus — civil and criminal — return a real cursor; every other bureau returns null.

Query a Business Bureau

Path params identify what to look up. The taxId is the company's CNPJ (14 digits, masked or unmasked); the type selects the bureau and the shape of the response.

Query params control paging. Only civil and criminal honour cursor — repeat the request with the returned cursor to fetch the next page.

ENDPOINT
GET /business-holmes/:taxId/:type

Response Envelope

Every successful response carries the bureau's payload under a key named after the type queried, plus a cursor field. The concrete envelope for each bureau is shown in the sections below.

Cursor semantics: populated only for civil/criminal. null for every other bureau.

Civil Lawsuits

Civil lawsuits sourced from JusBrasil. Paginated — repeat with the returned cursor until null. Returns a list of processes; typification is always [] for civil.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="civil",
    limit=50,
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "civil",
    limit: 50
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/civil?limit=50' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": "ChsSFWoNZX5zdGFyay1pbmZyYXIMCxIFQ2l2aWwYAQw=",
    "civil": [
        {
            "processType": "Civil",
            "latestUpdateDate": "2026-05-22",
            "associationConfidence": "ALTA",
            "status": {
                "date": "2026-05-22",
                "inferred": "Ativo",
                "normalized": "Em andamento",
                "court": null
            },
            "identifiedTypification": null,
            "typification": [],
            "occurrenceType": "Execução de Título Extrajudicial",
            "occurrenceDescription": "Execução de Título Extrajudicial",
            "legislation": "Lei nº 13.105/2015",
            "nature": "EXECUÇÃO DE TÍTULO EXTRAJUDICIAL",
            "proceduralClass": "OUTROS",
            "subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Títulos de Crédito (7707)",
            "processYear": "2025",
            "role": "Exequente",
            "processNumber": "1098765-12.2025.8.26.0100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/1098765-12.2025.8.26.0100"
        }
    ]
}
  

Javascript

{
    "cursor": "ChsSFWoNZX5zdGFyay1pbmZyYXIMCxIFQ2l2aWwYAQw=",
    "civil": [
        {
            "processType": "Civil",
            "latestUpdateDate": "2026-05-22",
            "associationConfidence": "ALTA",
            "status": {
                "date": "2026-05-22",
                "inferred": "Ativo",
                "normalized": "Em andamento",
                "court": null
            },
            "identifiedTypification": null,
            "typification": [],
            "occurrenceType": "Execução de Título Extrajudicial",
            "occurrenceDescription": "Execução de Título Extrajudicial",
            "legislation": "Lei nº 13.105/2015",
            "nature": "EXECUÇÃO DE TÍTULO EXTRAJUDICIAL",
            "proceduralClass": "OUTROS",
            "subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Títulos de Crédito (7707)",
            "processYear": "2025",
            "role": "Exequente",
            "processNumber": "1098765-12.2025.8.26.0100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/1098765-12.2025.8.26.0100"
        }
    ]
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": "ChsSFWoNZX5zdGFyay1pbmZyYXIMCxIFQ2l2aWwYAQw=",
    "civil": [
        {
            "processType": "Civil",
            "latestUpdateDate": "2026-05-22",
            "associationConfidence": "ALTA",
            "status": {
                "date": "2026-05-22",
                "inferred": "Ativo",
                "normalized": "Em andamento",
                "court": null
            },
            "identifiedTypification": null,
            "typification": [],
            "occurrenceType": "Execução de Título Extrajudicial",
            "occurrenceDescription": "Execução de Título Extrajudicial",
            "legislation": "Lei nº 13.105/2015",
            "nature": "EXECUÇÃO DE TÍTULO EXTRAJUDICIAL",
            "proceduralClass": "OUTROS",
            "subject": "DIREITO CIVIL (899) - Obrigações (10431) - Espécies de Títulos de Crédito (7707)",
            "processYear": "2025",
            "role": "Exequente",
            "processNumber": "1098765-12.2025.8.26.0100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/1098765-12.2025.8.26.0100"
        }
    ]
}
  

Criminal Lawsuits

Same JusBrasil source as civil. Returns a list of processes with the same shape, but the typification field is populated with the criminal codes invoked.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="criminal",
    limit=50,
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "criminal",
    limit: 50
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/criminal?limit=50' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "criminal": [
        {
            "processType": "Criminal",
            "latestUpdateDate": "2026-03-18",
            "associationConfidence": "MEDIA",
            "status": {
                "date": "2026-03-18",
                "inferred": "Arquivado",
                "normalized": "Extinto",
                "court": "Extinto"
            },
            "identifiedTypification": "Crime tributário",
            "typification": [
                {
                    "occurrenceCode": "1",
                    "occurrenceType": "Sonegação Fiscal",
                    "occurrenceDescription": "Suprimir ou reduzir tributo mediante condutas descritas em lei",
                    "legislation": [
                        {"lei": "Art. 1º da Lei nº 8.137/1990", "pena_prevista": "Reclusão, de 2 a 5 anos, e multa"}
                    ]
                }
            ],
            "occurrenceType": "Ação Penal",
            "occurrenceDescription": "Ação Penal - Procedimento Ordinário",
            "legislation": "Lei nº 8.137/1990",
            "nature": "Ação Penal de Competência do Juiz Singular",
            "proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
            "subject": "DIREITO PENAL (287) - Crimes contra a Ordem Tributária (3603)",
            "processYear": "2022",
            "role": "Ré",
            "processNumber": "0054321-09.2022.4.03.6100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/0054321-09.2022.4.03.6100"
        }
    ]
}
  

Javascript

{
    "cursor": null,
    "criminal": [
        {
            "processType": "Criminal",
            "latestUpdateDate": "2026-03-18",
            "associationConfidence": "MEDIA",
            "status": {
                "date": "2026-03-18",
                "inferred": "Arquivado",
                "normalized": "Extinto",
                "court": "Extinto"
            },
            "identifiedTypification": "Crime tributário",
            "typification": [
                {
                    "occurrenceCode": "1",
                    "occurrenceType": "Sonegação Fiscal",
                    "occurrenceDescription": "Suprimir ou reduzir tributo mediante condutas descritas em lei",
                    "legislation": [
                        {"lei": "Art. 1º da Lei nº 8.137/1990", "pena_prevista": "Reclusão, de 2 a 5 anos, e multa"}
                    ]
                }
            ],
            "occurrenceType": "Ação Penal",
            "occurrenceDescription": "Ação Penal - Procedimento Ordinário",
            "legislation": "Lei nº 8.137/1990",
            "nature": "Ação Penal de Competência do Juiz Singular",
            "proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
            "subject": "DIREITO PENAL (287) - Crimes contra a Ordem Tributária (3603)",
            "processYear": "2022",
            "role": "Ré",
            "processNumber": "0054321-09.2022.4.03.6100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/0054321-09.2022.4.03.6100"
        }
    ]
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "criminal": [
        {
            "processType": "Criminal",
            "latestUpdateDate": "2026-03-18",
            "associationConfidence": "MEDIA",
            "status": {
                "date": "2026-03-18",
                "inferred": "Arquivado",
                "normalized": "Extinto",
                "court": "Extinto"
            },
            "identifiedTypification": "Crime tributário",
            "typification": [
                {
                    "occurrenceCode": "1",
                    "occurrenceType": "Sonegação Fiscal",
                    "occurrenceDescription": "Suprimir ou reduzir tributo mediante condutas descritas em lei",
                    "legislation": [
                        {"lei": "Art. 1º da Lei nº 8.137/1990", "pena_prevista": "Reclusão, de 2 a 5 anos, e multa"}
                    ]
                }
            ],
            "occurrenceType": "Ação Penal",
            "occurrenceDescription": "Ação Penal - Procedimento Ordinário",
            "legislation": "Lei nº 8.137/1990",
            "nature": "Ação Penal de Competência do Juiz Singular",
            "proceduralClass": "PROCEDIMENTO COMUM CRIMINAL",
            "subject": "DIREITO PENAL (287) - Crimes contra a Ordem Tributária (3603)",
            "processYear": "2022",
            "role": "Ré",
            "processNumber": "0054321-09.2022.4.03.6100",
            "relatedProcesses": null,
            "link": "https://www.jusbrasil.com.br/consulta-pro/processos/0054321-09.2022.4.03.6100"
        }
    ]
}
  

KYC

BigDataCorp empresas/kyc dataset. Not paginated. Empty result returns {}. The history[] is filtered to entries with matchRate >= 80.

Note: the legacy sanctions bureau is an alias for this one and returns the same payload. Prefer kyc in new integrations.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="kyc",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "kyc"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/kyc' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "kyc": {
        "wasPreviouslySanctioned": false,
        "isCurrentlySanctioned": false,
        "history": [
            {
                "matchRate": 88,
                "source": "cgu",
                "standardizedSanctionType": "ADMINISTRATIVE SANCTIONS",
                "type": "Compliance",
                "creationDate": "2021-05-10T00:00:00",
                "endDate": "2024-05-10T00:00:00",
                "charges": "irregularities in public procurement",
                "sanctionName": "STARK BANK S.A."
            }
        ]
    }
}
  

Javascript

{
    "cursor": null,
    "kyc": {
        "wasPreviouslySanctioned": false,
        "isCurrentlySanctioned": false,
        "history": [
            {
                "matchRate": 88,
                "source": "cgu",
                "standardizedSanctionType": "ADMINISTRATIVE SANCTIONS",
                "type": "Compliance",
                "creationDate": "2021-05-10T00:00:00",
                "endDate": "2024-05-10T00:00:00",
                "charges": "irregularities in public procurement",
                "sanctionName": "STARK BANK S.A."
            }
        ]
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "kyc": {
        "wasPreviouslySanctioned": false,
        "isCurrentlySanctioned": false,
        "history": [
            {
                "matchRate": 88,
                "source": "cgu",
                "standardizedSanctionType": "ADMINISTRATIVE SANCTIONS",
                "type": "Compliance",
                "creationDate": "2021-05-10T00:00:00",
                "endDate": "2024-05-10T00:00:00",
                "charges": "irregularities in public procurement",
                "sanctionName": "STARK BANK S.A."
            }
        ]
    }
}
  

Fraud Score

Quod anti-fraud score for the CNPJ. Not paginated.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="frauds",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "frauds"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/frauds' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "frauds": {
        "type": "normal",
        "reason": "no-confirmed-fraud",
        "risk": "low",
        "totalConfirmedFrauds": 0,
        "frauds": [
            {"reason": "fake-merchant", "date": "2025-11-03", "channel": "pix", "isConfirmed": "SIM"}
        ]
    }
}
  

Javascript

{
    "cursor": null,
    "frauds": {
        "type": "normal",
        "reason": "no-confirmed-fraud",
        "risk": "low",
        "totalConfirmedFrauds": 0,
        "frauds": [
            {"reason": "fake-merchant", "date": "2025-11-03", "channel": "pix", "isConfirmed": "SIM"}
        ]
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "frauds": {
        "type": "normal",
        "reason": "no-confirmed-fraud",
        "risk": "low",
        "totalConfirmedFrauds": 0,
        "frauds": [
            {"reason": "fake-merchant", "date": "2025-11-03", "channel": "pix", "isConfirmed": "SIM"}
        ]
    }
}
  

Business Data

BigDataCorp business profile, assembled from ondemand, empresas/relationships and (conditionally) empresas/basic_data when the legal nature matches MEI. Not paginated. Empty result returns {}.

Note: the legacy activity bureau is an alias for this one and returns the same payload. Prefer data in new integrations.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="data",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "data"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/data' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "data": {
        "officialName": "STARK BANK S.A.",
        "businessName": "STARK BANK",
        "status": "ATIVA",
        "legalNature": "Sociedade Anônima Fechada",
        "legalNatureCode": "2054",
        "founded": "2017-02-15",
        "activity": "Bancos múltiplos, com carteira comercial",
        "secondaryActivities": ["Atividades de intermediação e agenciamento de serviços e negócios em geral"],
        "companyType": "MATRIZ",
        "emails": ["contato@example.com"],
        "phones": ["+551133224455"],
        "address": [
            {
                "street": "Avenida Brigadeiro Faria Lima",
                "number": "1811",
                "complement": "Conjunto 81",
                "neighborhood": "Jardim Paulistano",
                "city": "São Paulo",
                "state": "SP",
                "zipCode": "01452-001"
            }
        ],
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            }
        ],
        "isFamilyCompany": false,
        "isFamilyOperated": false,
        "totalRelationships": 1,
        "totalOwners": 1,
        "taxRegime": "LUCRO REAL"
    }
}
  

Javascript

{
    "cursor": null,
    "data": {
        "officialName": "STARK BANK S.A.",
        "businessName": "STARK BANK",
        "status": "ATIVA",
        "legalNature": "Sociedade Anônima Fechada",
        "legalNatureCode": "2054",
        "founded": "2017-02-15",
        "activity": "Bancos múltiplos, com carteira comercial",
        "secondaryActivities": ["Atividades de intermediação e agenciamento de serviços e negócios em geral"],
        "companyType": "MATRIZ",
        "emails": ["contato@example.com"],
        "phones": ["+551133224455"],
        "address": [
            {
                "street": "Avenida Brigadeiro Faria Lima",
                "number": "1811",
                "complement": "Conjunto 81",
                "neighborhood": "Jardim Paulistano",
                "city": "São Paulo",
                "state": "SP",
                "zipCode": "01452-001"
            }
        ],
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            }
        ],
        "isFamilyCompany": false,
        "isFamilyOperated": false,
        "totalRelationships": 1,
        "totalOwners": 1,
        "taxRegime": "LUCRO REAL"
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "data": {
        "officialName": "STARK BANK S.A.",
        "businessName": "STARK BANK",
        "status": "ATIVA",
        "legalNature": "Sociedade Anônima Fechada",
        "legalNatureCode": "2054",
        "founded": "2017-02-15",
        "activity": "Bancos múltiplos, com carteira comercial",
        "secondaryActivities": ["Atividades de intermediação e agenciamento de serviços e negócios em geral"],
        "companyType": "MATRIZ",
        "emails": ["contato@example.com"],
        "phones": ["+551133224455"],
        "address": [
            {
                "street": "Avenida Brigadeiro Faria Lima",
                "number": "1811",
                "complement": "Conjunto 81",
                "neighborhood": "Jardim Paulistano",
                "city": "São Paulo",
                "state": "SP",
                "zipCode": "01452-001"
            }
        ],
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            }
        ],
        "isFamilyCompany": false,
        "isFamilyOperated": false,
        "totalRelationships": 1,
        "totalOwners": 1,
        "taxRegime": "LUCRO REAL"
    }
}
  

Pix User

Looks the CNPJ up on Stark Infra's internal Dict (Pix directory) microservice. Returns the raw user object on success.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="dict",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "dict"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/dict' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "dict": {
        "name": "STARK BANK S.A.",
        "taxIdNumber": "20.018.183/0001-80",
        "personType": "legalPerson",
        "keys": [
            {"key": "contato@example.com", "type": "email", "status": "registered"},
            {"key": "20.018.183/0001-80", "type": "taxId", "status": "registered"}
        ]
    }
}
  

Javascript

{
    "cursor": null,
    "dict": {
        "name": "STARK BANK S.A.",
        "taxIdNumber": "20.018.183/0001-80",
        "personType": "legalPerson",
        "keys": [
            {"key": "contato@example.com", "type": "email", "status": "registered"},
            {"key": "20.018.183/0001-80", "type": "taxId", "status": "registered"}
        ]
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "dict": {
        "name": "STARK BANK S.A.",
        "taxIdNumber": "20.018.183/0001-80",
        "personType": "legalPerson",
        "keys": [
            {"key": "contato@example.com", "type": "email", "status": "registered"},
            {"key": "20.018.183/0001-80", "type": "taxId", "status": "registered"}
        ]
    }
}
  

Joint Resolution 6

Quod's RUFRA block, used to comply with Brazilian Joint Resolution 6 (BCB/CMN). Not paginated.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="jointResolution6",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "jointResolution6"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/jointResolution6' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "jointResolution6": {
        "rufra": {
            "isPresent": false,
            "lastUpdate": "2026-06-10T00:00:00",
            "occurrences": []
        }
    }
}
  

Javascript

{
    "cursor": null,
    "jointResolution6": {
        "rufra": {
            "isPresent": false,
            "lastUpdate": "2026-06-10T00:00:00",
            "occurrences": []
        }
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "jointResolution6": {
        "rufra": {
            "isPresent": false,
            "lastUpdate": "2026-06-10T00:00:00",
            "occurrences": []
        }
    }
}
  

Federal Revenue Registry

BigDataCorp empresas/basic_data dataset, used to confirm the CNPJ's status with the Receita Federal. Not paginated.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="federalRevenueRegistry",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "federalRevenueRegistry"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/federalRevenueRegistry' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "federalRevenueRegistry": {
        "taxIdStatus": "ATIVA"
    }
}
  

Javascript

{
    "cursor": null,
    "federalRevenueRegistry": {
        "taxIdStatus": "ATIVA"
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "federalRevenueRegistry": {
        "taxIdStatus": "ATIVA"
    }
}
  

Negative Media

BigDataCorp empresas/media_profile_and_exposure dataset. Not paginated. Empty result returns {}.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="negativeMedia",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "negativeMedia"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/negativeMedia' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "negativeMedia": {
        "mediaProfileAndExposure": {
            "totalMatches": 0,
            "lastUpdate": "2026-06-12T00:00:00",
            "matches": []
        }
    }
}
  

Javascript

{
    "cursor": null,
    "negativeMedia": {
        "mediaProfileAndExposure": {
            "totalMatches": 0,
            "lastUpdate": "2026-06-12T00:00:00",
            "matches": []
        }
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "negativeMedia": {
        "mediaProfileAndExposure": {
            "totalMatches": 0,
            "lastUpdate": "2026-06-12T00:00:00",
            "matches": []
        }
    }
}
  

Corporate Structure / QSA

BigDataCorp empresas/dynamic_qsa_data dataset, exposing the company's QSA — the list of partners and administrators (Quadro de Sócios e Administradores). Not paginated. Empty result returns {}.

Python

import starkinfra

result = starkinfra.businessholmes.get(
    tax_id="20018183000180",
    type="qsa",
)

print(result)
  

Javascript

const starkinfra = require('starkinfra')

const result = await starkinfra.businessHolmes.get({
    taxId: "20018183000180",
    type: "qsa"
})

console.log(result)
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

curl --location --request GET '{{baseUrl}}/business-holmes/20018183000180/qsa' \
--header 'Access-Id: {{accessId}}' \
--header 'Access-Time: {{accessTime}}' \
--header 'Access-Signature: {{accessSignature}}'
  
RESPONSE

Python

{
    "cursor": null,
    "qsa": {
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            },
            {
                "taxId": "098.765.432-10",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Jon Snow",
                "type": "naturalPerson",
                "role": "Diretor de Riscos e Compliance",
                "level": 1,
                "startDate": "2018-06-20",
                "endDate": null
            }
        ]
    }
}
  

Javascript

{
    "cursor": null,
    "qsa": {
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            },
            {
                "taxId": "098.765.432-10",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Jon Snow",
                "type": "naturalPerson",
                "role": "Diretor de Riscos e Compliance",
                "level": 1,
                "startDate": "2018-06-20",
                "endDate": null
            }
        ]
    }
}
  

PHP

Java

Ruby

Elixir

C#

Go

Clojure

Curl

{
    "cursor": null,
    "qsa": {
        "relationships": [
            {
                "taxId": "012.345.678-90",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Daenerys Targaryen Stormborn",
                "type": "naturalPerson",
                "role": "Diretor Presidente",
                "level": 1,
                "startDate": "2017-02-15",
                "endDate": null
            },
            {
                "taxId": "098.765.432-10",
                "taxIdType": "CPF",
                "taxIdCountry": "BRAZIL",
                "name": "Jon Snow",
                "type": "naturalPerson",
                "role": "Diretor de Riscos e Compliance",
                "level": 1,
                "startDate": "2018-06-20",
                "endDate": null
            }
        ]
    }
}