Look up CNPJs in batch
Need to look up several CNPJs at once? The POST /consulta/lote endpoint accepts up to 20 CNPJs per call and returns one response item for each, in the same order they were sent.
- Method and path:
POST /consulta/lote - Base URL:
https://api.cnpjapi.com.br - Authentication: requires an API key from a paid plan (see Authentication) - there is no anonymous or free-plan version.
- Body:
{"cnpjs": [...]}, up to 20 CNPJs (the 14 characters each, without punctuation, including the alphanumeric CNPJ).
Example (curl)
curl -X POST https://api.cnpjapi.com.br/consulta/lote \
-H "Authorization: Bearer cnpj_sua_chave" \
-H "Content-Type: application/json" \
-d '{"cnpjs": ["00776574000156", "00000000000000", "abc"]}'
Response (200 OK, application/json)
[
{ "Cnpj": "00776574000156", "Status": "encontrado", "Dados": { "RazaoSocial": "...", "...": "..." } },
{ "Cnpj": "00000000000000", "Status": "nao_encontrado", "Dados": null },
{ "Cnpj": "abc", "Status": "invalido", "Dados": null }
]
One item per CNPJ sent, in the same order as the input list - use the position to match request and response.
| Field | Description |
|---|---|
Cnpj |
The CNPJ you sent, echoed in the item |
Status |
encontrado, nao_encontrado, invalido or erro (a one-off failure looking up that item) |
Dados |
The registration fields (same format as Look up a CNPJ, including the sanctions and embargoes block Sancoes, which comes null with SancoesErro when the check is unavailable, and the federal tax debt block DividaAtiva, with DividaAtivaErro in the same case, and the installment plans with Receita Federal block ParcelamentosRFB, with ParcelamentosRFBErro in the same case) when Status is encontrado; null otherwise |
An item with a problem does not bring down the whole batch: the others are processed normally. The same CNPJ repeated in the list is not deduplicated - each occurrence generates a response item and counts separately toward your quota.
ReceitaWS format in batch
?formato=receitaws also works on POST /consulta/lote - the response becomes a list of envelopes in the ReceitaWS format, one per CNPJ, in the same input order:
[
{ "status": "OK", "cnpj": "00.776.574/0001-56", "...": "..." },
{ "status": "ERROR", "message": "CNPJ não encontrado na base de dados" }
]
Note: in the ReceitaWS format, an error item has no
cnpjfield (onlystatusandmessage) - unlike the native format, which always echoes theCnpjin every item. In this format, matching a response to an input CNPJ is only reliable by array position.
Quota and limits
- Rate limit (RPM): a batch call counts as 1 request, not 20 - the same per-minute limit as a single lookup (see Limits and plans).
- Monthly quota: debits the number of CNPJs resolved (
encontradoitems;nao_encontrado/invalido/errodo not count). Check your usage atGET /cota.
Errors
| Status | Meaning |
|---|---|
401 |
API key missing or invalid |
403 |
Your account has no paid plan - batch is not available on the free plan |
422 |
Invalid body: missing/empty cnpjs field, or more than 20 CNPJs in the list |
429 |
Per-minute limit or monthly quota exceeded - respect the Retry-After |
See all codes in Errors.
Next steps
- Look up a CNPJ - the single lookup remains available and does not require a paid plan.
- ReceitaWS-compatible - the same format, also accepted in batch.
- Limits and plans - compare the paid plans.
- Check your quota - track this month's usage.
Create your free account at https://app.cnpjapi.com.br and subscribe to a paid plan to use batch lookups.