---
title: "Enriquecer empresas por CNPJ no n8n, Make e Zapier"
description: "Workflow n8n importável que consulta um CNPJ na API do cnpj.ia.br com credencial Header Auth, trata erro por retryable e espera o Retry-After; mais o passo a passo para Make e Zapier."
canonical: "https://cnpj.ia.br/exemplos/n8n-make-zapier"
date_modified: 2026-09-23
source: "cnpj.ia.br"
---

Exemplo

# Enriquecer empresas por CNPJ no n8n, Make e Zapier

Workflow n8n importável que consulta um CNPJ na API do cnpj.ia.br com credencial Header Auth, trata erro por retryable e espera o Retry-After; mais o passo a passo para Make e Zapier.

JSON n8n Make Zapier [Workflow no GitHub](https://github.com/Atmosphere-Technologies/cnpj-ia-exemplos/tree/main/n8n)

O workflow recebe um CNPJ, consulta `GET /v1/cnpjs/{cnpj}?profile=full` pelo nó HTTP Request com a chave numa credencial Header Auth e devolve razão social, situação cadastral, CNAE, porte, telefones e e-mail quando disponíveis. Em erro, decide pelo `error.retryable`: para, ou espera o `Retry-After` e repete. Usa só nós nativos do n8n.

## O problema

Automação que chama uma API precisa distinguir o erro que se resolve repetindo (`rate_limited`, `maintenance`, `upstream_timeout`) do que não se resolve (`invalid_cnpj`, `not_found`, chave inválida). Repetir o segundo gasta execução; repetir o primeiro cedo demais só gera outro erro. E a chave não pode ficar no JSON do workflow, que costuma ser exportado e compartilhado.

## O fluxo

1. **Definir CNPJ e contador**: o CNPJ de entrada (o exemplo usa `00000000000191`).
2. **Consultar CNPJ**: HTTP Request com a credencial Header Auth (`Authorization: Bearer ...`), resposta completa (status, headers e corpo) e sem falhar em status de erro. A URL tira pontos, barra e hífen do CNPJ.
3. **Resposta tem erro?**: sem `body.error`, segue para **Selecionar dados da empresa**.
4. **Erro permite repetir?**: `retryable: false` para com `cnpj.ia.br: <error.code>`.
5. **Repetir?**: até 2 tentativas e `Retry-After` de até 60 segundos; **Aguardar Retry-After** espera o prazo da resposta (2 segundos quando o header não vem) e volta à consulta.

Para importar: crie a credencial Header Auth `cnpj.ia.br — Header Auth`, importe o JSON, associe a credencial ao nó **Consultar CNPJ** e troque o CNPJ de exemplo. O passo a passo completo, a busca paginada no mesmo padrão e o equivalente em Make (**HTTP → Make a request**) e Zapier (**Webhooks by Zapier → Custom Request**) estão no [README da pasta](https://github.com/Atmosphere-Technologies/cnpj-ia-exemplos/tree/main/n8n) e em [`make-e-zapier.md`](https://github.com/Atmosphere-Technologies/cnpj-ia-exemplos/blob/main/n8n/make-e-zapier.md).

## O código

O workflow completo, pronto para **Import from File**: [`n8n/enriquecer-empresas-por-cnpj.json`](https://github.com/Atmosphere-Technologies/cnpj-ia-exemplos/blob/main/n8n/enriquecer-empresas-por-cnpj.json). O nó da consulta:

```json
{
  "parameters": {
    "url": "=https://api.cnpj.ia.br/v1/cnpjs/{{ $('Definir CNPJ e contador').first().json.cnpj.replace(/[./-]/g, '') }}?profile=full",
    "authentication": "genericCredentialType",
    "genericAuthType": "httpHeaderAuth",
    "options": {
      "response": {
        "response": {
          "neverError": true,
          "responseFormat": "json",
          "fullResponse": true
        }
      }
    }
  },
  "name": "Consultar CNPJ",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.2,
  "credentials": {
    "httpHeaderAuth": {
      "id": "REPLACE_WITH_CREDENTIAL_ID",
      "name": "cnpj.ia.br — Header Auth"
    }
  }
}
```

O fluxo consulta o perfil `full`, porque grava telefones e e-mail; para só validar cadastro, troque por `profile=basic`, que custa menos ([Preços](https://cnpj.ia.br/precos)). A tabela abaixo conta mil consultas `full`. Erros não consomem créditos.

## Custo em créditos

| Operação | Quantidade por mil registros | Peso em créditos | Créditos |
| --- | --- | --- | --- |
| Consulta por CNPJ, perfil full | 1000 | 6 | 6000 |
| Total por mil registros |  |  | 6000 |
