# Business Holmes

Business Holmes queries an external bureau or one of Stark Infra's internal datasets to investigate a legal entity (CNPJ). Each request targets a single bureau through the `type` path parameter and returns that bureau's payload under a key named after the `type` queried.

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.

### Query a Business Bureau

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

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` (JusBrasil) honour `cursor` — repeat the request with the returned cursor to fetch the next page.

**Parameters**

| Name | Required | Description |
| --- | --- | --- |
| `taxId` | REQUIRED | CNPJ of the company being investigated, masked or unmasked. Example: `20.018.183/0001-80`. |
| `type` | REQUIRED | Bureau to query. Options: `civil`, `criminal`, `kyc`, `frauds`, `data`, `dict`, `jointResolution6`, `federalRevenueRegistry`, `negativeMedia`, `qsa`. |
| `limit` | OPTIONAL | Maximum number of items per page for paginated bureaus. Integer in the `1..100` range. Defaults to `100`. |
| `cursor` | OPTIONAL | Opaque page token returned by the previous call. Only meaningful for `civil` and `criminal`; ignored by every other bureau. |

**Request**

```python
import starkinfra

result = starkinfra.request.get(
    path="/business-holmes/20018183000180/kyc"
).json()

print(result)
```

**Response**

```python
The payload key and its inner shape depend on the bureau "type" queried. For each type (civil, criminal, kyc, frauds, data, dict, jointResolution6, federalRevenueRegistry, negativeMedia, qsa) the response is documented in the corresponding section of the <a href="/get-started/business-holmes" class="link">get-started</a>.
```

## Available Languages

Code samples on this page are in Python. The same content is available with samples in:

- [Python](https://docs.starkinfra.com/api/v2/business-holmes-python.md)
- [Node.js](https://docs.starkinfra.com/api/v2/business-holmes-node.md)
- [PHP](https://docs.starkinfra.com/api/v2/business-holmes-php.md)
- [Java](https://docs.starkinfra.com/api/v2/business-holmes-java.md)
- [Ruby](https://docs.starkinfra.com/api/v2/business-holmes-ruby.md)
- [Elixir](https://docs.starkinfra.com/api/v2/business-holmes-elixir.md)
- [.NET](https://docs.starkinfra.com/api/v2/business-holmes-dotnet.md)
- [Go](https://docs.starkinfra.com/api/v2/business-holmes-go.md)
- [Clojure](https://docs.starkinfra.com/api/v2/business-holmes-clojure.md)
- [cURL](https://docs.starkinfra.com/api/v2/business-holmes-curl.md)
