docs · base agosto/2026Atualizado em

GET /v1/cnpjs

Buscar empresas por filtros

Página de até 20 empresas com campos basic, ordenação fixa por CNPJ, paginação por cursor. Custa 1 crédito por empresa retornada; página vazia não custa. Não disponível no plano Free.

Créditos

por empresa retornada · 1 crédito página máx. · 20 empresas

Parâmetros

NomeEmTipoObrigatórioDescrição
ufquerystring—Sigla da UF (2 letras maiúsculas). Nível 1 — até 50 valores separados por vírgula.
municipioquerystring—Código IBGE de município existente (7 dígitos). Nível 1 — até 50 valores separados por vírgula.
cnaequerystring—CNAE fiscal (2, 3, 5 ou 7 dígitos: divisão, grupo, classe, subclasse). Nível 1 — até 50 valores separados por vírgula.
portequerystring—Porte: ME, EPP ou DEMAIS. Nível 1 — até 50 valores separados por vírgula.
situacaoquerystring—Situação: ATIVA, SUSPENSA, INAPTA, BAIXADA ou NULA. Nível 1 — até 50 valores separados por vírgula.
simplesqueryboolean——
meiqueryboolean——
naturezaquerystring—Código da natureza jurídica (4 dígitos). Nível 1 — até 50 valores separados por vírgula.
capital_minquerynumber
mín. 0
——
capital_maxquerynumber
mín. 0
——
abertura_dequerystring
formato: date
——
abertura_atequerystring
formato: date
——
regimequerystring—Nível 2 — Starter ou superior. Regime: LUCRO_PRESUMIDO, LUCRO_REAL, LUCRO_ARBITRADO, IMUNE ou ISENTA; até 50 valores separados por vírgula.
cnae_secundarioqueryboolean—Nível 2 — Starter ou superior. Com true, inclui CNAEs secundários; exige cnae.
natureza_categoriaquerystring—Nível 2 — Starter ou superior. Primeiro dígito da natureza jurídica (1 a 5); até 50 valores separados por vírgula.
matriz_filialquerystring
enum: MATRIZ, FILIAL
—Nível 2 — Starter ou superior. Tipo de estabelecimento.
filiais_minqueryinteger
mín. 0
—Nível 2 — Starter ou superior. Mínimo de filiais; deve ser menor ou igual a filiais_max.
filiais_maxqueryinteger
mín. 0
—Nível 2 — Starter ou superior. Máximo de filiais; deve ser maior ou igual a filiais_min.
situacao_data_dequerystring
formato: date
—Nível 2 — Starter ou superior. Data mínima da situação (YYYY-MM-DD), até situacao_data_ate; exclui a sentinela 1925-01-01.
situacao_data_atequerystring
formato: date
—Nível 2 — Starter ou superior. Data máxima da situação (YYYY-MM-DD), desde situacao_data_de; exclui a sentinela 1925-01-01.
motivo_situacaoquerystring—Nível 2 — Starter ou superior. Código do motivo da situação (2 dígitos); até 50 valores separados por vírgula.
situacao_especialquerystring—Nível 2 — Starter ou superior. Código da situação especial (1 a 8); até 50 valores separados por vírgula.
municipio_excluirquerystring—Nível 2 — Starter ou superior. Código IBGE de município existente (7 dígitos); até 50 valores separados por vírgula, todos excluídos.
cepquerystring—Nível 2 — Starter ou superior. Prefixo do CEP (1 a 8 dígitos).
bairroquerystring
máx. 100 caracteres
—Nível 2 — Starter ou superior. Bairro por igualdade exata (1 a 100 caracteres).
com_emailqueryboolean—Nível 2 — Starter ou superior. true exige e-mail; false exige ausência.
com_sitequeryboolean—Nível 2 — Starter ou superior. true exige site; false exige ausência.
com_telefonequeryboolean—Nível 2 — Starter ou superior. true exige telefone; false exige ausência.
com_celularqueryboolean—Nível 2 — Starter ou superior. true exige celular; false exige ausência.
nomequerystring
máx. 100 caracteres
—Nível 2 — Starter ou superior. Texto contido na razão social ou nome fantasia (3 a 100 caracteres), sem diferenciar maiúsculas; barras e curingas são literais.
socio_nomequerystring
máx. 100 caracteres
—Nível 3 — Pro ou superior. Texto contido no nome de algum sócio (3 a 100 caracteres), sem diferenciar maiúsculas; barras e curingas são literais.
socio_cnpjquerystring—Nível 3 — Pro ou superior. CNPJ de sócio PJ, numérico ou alfanumérico: 14 caracteres após remover pontuação; CPF não é aceito.
socio_qualificacaoquerystring—Nível 3 — Pro ou superior. Código de qualificação do sócio (1 ou 2 dígitos); até 50 valores separados por vírgula.
cep_raioquerystring—Nível 3 — Pro ou superior. CEP de 8 dígitos com coordenada conhecida; exige raio_metros e restringe ao município do CEP.
raio_metrosqueryinteger
mín. 100
máx. 20000
—Nível 3 — Pro ou superior. Raio em metros (100 a 20000); exige cep_raio.
faturamentoquerystring—Nível 3 — Pro ou superior. Faixa do perfil full: ATE_360MIL, DE_360MIL_A_4_8MI ou ACIMA_4_8MI; até 50 valores separados por vírgula.
funcionarios_minqueryinteger
mín. 0
—Nível 3 — Pro ou superior. Mínimo do valor esperado de funcionários arredondado, como no perfil full; até funcionarios_max. Distribuição inválida não casa.
funcionarios_maxqueryinteger
mín. 0
—Nível 3 — Pro ou superior. Máximo do valor esperado de funcionários arredondado, como no perfil full; desde funcionarios_min. Distribuição inválida não casa.
cursorquerystring—Cursor opaco da página anterior (meta.next_cursor).
explicacaoquerystring—Ignorada. Presente para que a saída de generateFilter possa ser repassada inteira; não filtra e não conta como filtro.

Respostas

200 OK

Página de resultados.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-Credits-ChargedintegerCréditos debitados nesta resposta.
X-Credits-RemainingintegerCréditos restantes (franquia + pacotes).
X-Credits-Resetstring
formato: date-time
Instante do próximo reset da franquia (RFC 3339).
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
{
  "data": [
    {
      "cnpj": "00000000669822",
      "raiz_cnpj": "00000000",
      "razao_social": "BANCO DO BRASIL SA",
      "nome_fantasia": "TIRADENTES / BNC (SP)",
      "matriz_filial": {
        "codigo": "2",
        "descricao": "Filial"
      },
      "n_filiais": 0,
      "data_inicio_atividade": "2009-04-16",
      "situacao_cadastral": {
        "codigo": "02",
        "descricao": "Ativa"
      },
      "data_situacao_cadastral": "2009-04-16",
      "motivo_situacao_cadastral": {
        "codigo": "00",
        "descricao": "Sem motivo"
      },
      "situacao_especial": null,
      "data_situacao_especial": null,
      "natureza_juridica": {
        "codigo": "2038",
        "descricao": "Sociedade de Economia Mista"
      },
      "porte": {
        "codigo": "05",
        "descricao": "Demais"
      },
      "capital_social": 120000000000,
      "cnae_fiscal": {
        "codigo": "6422100",
        "descricao": "Bancos múltiplos, com carteira comercial"
      },
      "cnaes_secundarios": [
        {
          "codigo": "6499999",
          "descricao": "Outras atividades de serviços financeiros não especificadas anteriormente"
        }
      ],
      "endereco": {
        "tipo_logradouro": "AVENIDA",
        "logradouro": "TIRADENTES",
        "numero": "451",
        "complemento": null,
        "bairro": "Luz",
        "cep": "01101010",
        "municipio": "São Paulo",
        "codigo_municipio_ibge": "3550308",
        "codigo_municipio_siafi": "7107",
        "uf": "SP"
      },
      "simples": {
        "optante": false,
        "data_opcao": "2007-07-01",
        "data_exclusao": "2007-07-01"
      },
      "mei": {
        "optante": false,
        "data_opcao": "2009-07-01",
        "data_exclusao": "2009-07-01"
      },
      "has_email": false,
      "has_website": false,
      "has_phone": false,
      "has_mobile_phone": false
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK3Q9X",
    "source": "rfb_open_data+oportunidados",
    "data_as_of": "2026-09-01",
    "credits_charged": 1,
    "credits_remaining": 59,
    "credits_reset_at": "2026-10-01T00:00:00-03:00",
    "page_size": 1,
    "next_cursor": null,
    "total_count_capped": "1"
  }
}

400 Requisição inválida

Filtro desconhecido ou valor fora do enum, cursor inválido, ou nenhum filtro além de cursor. explicacao é ignorada e não conta como filtro.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
X-Credits-ChargedintegerCréditos debitados nesta resposta.
X-Credits-RemainingintegerCréditos restantes (franquia + pacotes).
X-Credits-Resetstring
formato: date-time
Instante do próximo reset da franquia (RFC 3339).
{
  "error": {
    "code": "invalid_filter",
    "message": "Um ou mais parâmetros da requisição são inválidos. Consulte a documentação.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": false,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#invalid_filter"
  }
}

401 Não autorizado

Chave ausente, desconhecida, revogada ou expirada.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
{
  "error": {
    "code": "invalid_api_key",
    "message": "Chave de API ausente ou inválida.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": false,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#invalid_api_key"
  }
}

402 Pagamento necessário

Franquia e pacotes esgotados. Header X-Credits-Reset.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
X-Credits-ChargedintegerCréditos debitados nesta resposta.
X-Credits-RemainingintegerCréditos restantes (franquia + pacotes).
X-Credits-Resetstring
formato: date-time
Instante do próximo reset da franquia (RFC 3339).
{
  "error": {
    "code": "quota_exceeded",
    "message": "Créditos insuficientes para esta operação. Aguarde a renovação ou adquira mais créditos.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": false,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#quota_exceeded"
  }
}

403 Proibido

insufficient_plan (operação fora do plano), filter_not_in_plan (filtro acima do nível do plano) ou payment_required (cobrança recusada há mais de 7 dias). Com a busca globalmente fechada, o mesmo insufficient_plan usa a mensagem de liberação gradual.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
{
  "error": {
    "code": "insufficient_plan",
    "message": "Seu plano não inclui esta operação. Troque de plano para continuar.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": false,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#insufficient_plan"
  }
}

404 Não encontrado

API desligada (CNPJIA_API_ENABLED diferente de on).

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
{
  "error": {
    "code": "not_found",
    "message": "Recurso não encontrado.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": false,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#not_found"
  }
}

429 Excesso de requisições

Requisições por minuto da conta excedidas. Header Retry-After. Sem X-RateLimit-* quando o limite atingido é o de requisições sem chave por IP.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
Retry-AfterintegerSó em 429 e 503: segundos até tentar de novo.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
{
  "error": {
    "code": "rate_limited",
    "message": "Limite de requisições excedido. Tente novamente em instantes.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": true,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#rate_limited"
  }
}

500 Erro interno

Erro interno, inclusive timeout da busca. retryable: true; a operação não é cobrada. Se houve liquidação, o estorno é tentado e pode ficar pendente de retentativa ou recuperação manual. X-RateLimit-* presentes quando a requisição passou pelo controle de requisições por conta; X-Credits-* presentes quando passou pela verificação de saldo (mesmo sem débito). Ausentes quando a falha é anterior (por exemplo, ao consultar o estado da base).

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
X-Credits-ChargedintegerCréditos debitados nesta resposta.
X-Credits-RemainingintegerCréditos restantes (franquia + pacotes).
X-Credits-Resetstring
formato: date-time
Instante do próximo reset da franquia (RFC 3339).
{
  "error": {
    "code": "internal_error",
    "message": "Erro interno. Tente novamente; se persistir, fale com o suporte.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": true,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#internal_error"
  }
}

503 Serviço indisponível

Janela mensal de atualização da base. Header Retry-After.

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
Retry-AfterintegerSó em 429 e 503: segundos até tentar de novo.
{
  "error": {
    "code": "maintenance",
    "message": "A base está em manutenção. Tente novamente em instantes.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": true,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#maintenance"
  }
}

504 Tempo esgotado

Timeout de consulta. retryable: true; nada é cobrado. X-RateLimit-* presentes quando a requisição passou pelo controle de requisições por conta; X-Credits-* presentes quando passou pela verificação de saldo (mesmo sem débito). Ausentes quando a falha é anterior (por exemplo, ao consultar o estado da base).

HeaderTipoDescrição
X-Request-IdstringIdentificador da requisição para suporte.
X-Client-Request-IdstringEco do X-Request-Id enviado pelo cliente quando casa ^[A-Za-z0-9_-]{8,64}$. Ausente se o cliente não enviou ou o valor é inválido. Nunca usado como identificador interno.
X-RateLimit-LimitintegerRequisições por minuto do plano (por conta).
X-RateLimit-RemainingintegerRequisições restantes no minuto corrente.
X-Credits-ChargedintegerCréditos debitados nesta resposta.
X-Credits-RemainingintegerCréditos restantes (franquia + pacotes).
X-Credits-Resetstring
formato: date-time
Instante do próximo reset da franquia (RFC 3339).
{
  "error": {
    "code": "upstream_timeout",
    "message": "A operação demorou mais que o esperado. Tente novamente.",
    "request_id": "req_01J8ZK3Q9X",
    "retryable": true,
    "docs_url": "https://cnpj.ia.br/docs/erros-e-retentativas#upstream_timeout"
  }
}

Ferramenta MCP

No servidor MCP oficial esta operação é a ferramenta buscar_empresas, com a mesma chave e os mesmos créditos da API.

Exemplo

curl -s "https://api.cnpj.ia.br/v1/cnpjs?uf=PR" \
  -H "Authorization: Bearer $CNPJIA_KEY"