---
title: "Search companies ($0.01 via x402). At least one filter required."
method: GET
path: "/v1/cnpj/busca"
---

# Search companies ($0.01 via x402). At least one filter required.

`GET /v1/cnpj/busca`

## Request

- Base URL: `https://api.brazilayer.com`
- URL: `https://api.brazilayer.com/v1/cnpj/busca`
- Auth: none declared

## Query parameters

- `nome` string
- `uf` string
- `municipio` string
- `cnae` string
- `porte` 'micro_empresa' | 'pequeno_porte' | 'demais' | 'nao_informado'
- `situacao` 'ativa' | 'baixada' | 'suspensa' | 'inapta' | 'nula'
- `pagina` integer
- `por_pagina` integer

## Response `200`

Paginated results; total capped at "10000+"

- object
  - `total` union
    - integer
    - '10000+'
  - `pagina` integer
  - `resultados` object[]
    - `cnpj` string
    - `razao_social` string, nullable
    - `nome_fantasia` string, nullable
    - `uf` string, nullable
    - `municipio` string, nullable
    - `cnae_principal` string, nullable
    - `situacao` string, nullable
  - `fonte` Fonte: Data source and reference month
    - `base` 'RFB/CNPJ'
    - `referencia` string, nullable: YYYY-MM

## Other responses

- `400`: Error envelope: { erro: { codigo, mensagem } }
- `402`: x402 payment required. The `payment-required` response header carries base64 JSON with accepted payment options (scheme "exact", USDC on Base, amount in 6-decimal units, payTo address). Sign an EIP-3009 authorization and retry with the `payment-signature` header. x402 client libraries automate this. If you are not using an x402 client, read the JSON body instead: it states the price and links the free sample of this dataset plus the free tools.

---

[API](https://skmtc.dev/brazilayer/apis/brazilayer-brazilian-company-data-cnpj.md) · [All operations](https://skmtc.dev/brazilayer/apis/brazilayer-brazilian-company-data-cnpj/llms.txt) · [OpenAPI document](https://skmtc.dev/brazilayer/apis/brazilayer-brazilian-company-data-cnpj/revisions/609368003291?raw)
