Bulk CNPJ Lookup
Bulk CNPJ lookup:
your whole list at once.
Send up to 10,000 CNPJs through the API or upload a CSV file in the dashboard and get the legal name, registration status, CNAE, address and partners of each company. Only the CNPJs found use credits.
50 free credits per month, no credit card.
What you get
Ten thousand CNPJs. One request.
Queueing, parallelism and retries are on us. You send the list and follow along.
Up to 10,000 CNPJs per batch
The whole list goes in one POST and the jobId comes back right away. Duplicates are removed, so each CNPJ is looked up and charged once.
Partial results while it runs
Every status check shows how many CNPJs were processed and the records already done, without waiting for the batch to finish.
The same fields as the CNPJ Lookup
Each CNPJ found comes back with the full record: legal name, registration status, CNAE, address and partner list. A CNPJ not found comes back with found: false.
razao_socialsituacao_cadastralcnae_principalmunicipioufQSASpreadsheet, no code
In the dashboard, upload a CSV or TXT file or paste the list. The CNPJ column is detected automatically, and the result comes out as a CSV ready to open in Excel.
How it works
Send the list. Track the batch.
Processing is asynchronous: your request does not wait for ten thousand lookups to finish.
- 01
Send the list
One POST /cnpj/bulk with the array of CNPJs. The response comes back right away with the jobId, and processing continues in the background.
- 02
Track the batch
Call GET /cnpj/bulk/{jobId} whenever you like. Tracking uses no credits and works even with a zero balance.
- 03
Use the result
One item per CNPJ, with the same record as the single lookup. In the dashboard, you download the finished CSV.
One CNPJ at a time? Use the CNPJ Lookup. For individuals, there is the Bulk CPF Lookup.
Integrate in any language
Two steps: send the CNPJ list, then check the batch. Nothing beyond HTTP.
# Step 1: POST an array of CNPJs as JSON
curl -X POST "https://api.cpfhub.io/cnpj/bulk" \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{"cnpjs": ["11222333000181", "12ABC34501DE35"]}'
# → 202 Accepted { "jobId": "4a1ef25e-052c-4464-..." }
# Step 2: poll until the status is "done"
curl "https://api.cpfhub.io/cnpj/bulk/4a1ef25e-052c-4464-9657-4148f53bb0fc" \
-H "x-api-key: YOUR_API_KEY"{
"success": true,
"data": {
"id": "4a1ef25e-052c-4464-9657-4148f53bb0fc",
"status": "done",
"total_records": 2,
"processed": 2,
"found": 1,
"not_found": 1,
"skipped": 0,
"error": null,
"cnpjs": [
{
"cnpj": "11222333000181",
"found": true,
"data": {
"cnpj": "11222333000181",
"razao_social": "EMPRESA EXEMPLO LTDA",
"situacao_cadastral": "Ativa",
"cnae_principal": "6201501",
"uf": "SP",
"municipio": "SAO PAULO"
}
},
{
"cnpj": "12ABC34501DE35",
"found": false,
"data": null
}
]
}
}50 free credits per month, no credit card required.
Tracking
You know where the batch is.
Three possible statuses and five counters. You know whether the batch is running, finished or stopped.
processing
The batch is running. A status check returns the progress and the CNPJs already looked up.
done
The batch finished. The response has one item per CNPJ, with the full record for those found.
failed
The batch stopped. The error field explains why, and only the CNPJs already found were charged.
Batch counters
total_recordsHow many valid, unique CNPJs entered the batch.
processedHow many were already looked up.
foundHow many exist in the dataset. This is what you pay for.
not_foundHow many have no record. No charge.
skippedHow many were left out because the balance ran out during processing.
Use cases
When the list is too long.
Cases where checking one CNPJ at a time would take days, and nobody would do it.
Supplier cleanup
Find out which suppliers are closed, unfit or suspended before the next payment run.
B2B customer portfolio
Update the legal name, address and CNAE of the whole portfolio and find the companies that closed.
ERP or CRM migration
Before moving records to the new system, confirm which CNPJs exist and standardize the data.
Periodic portfolio review
Run the batch every month and see which customers changed registration status, size or Simples Nacional option.
Segmentation by CNAE and region
Group your company list by activity, size, state and city to plan sales and service.
Acquisition due diligence
Took over another company's customer base? The batch shows how many CNPJs are active without anyone checking them one by one.
Billing
You pay for the CNPJs that exist.
Old lists have mistyped, repeated or never-existing CNPJs. Here, none of that uses credits.
1 credit
per CNPJ found, just like the single lookup
R$ 0
per CNPJ not found, invalid or repeated
10,000
CNPJs per batch, as many batches as you need
On plans without overage, a batch is only accepted if the balance covers every valid CNPJ. If the balance runs out during processing, the remaining CNPJs come back as skipped, with no lookup and no charge.
Frequently asked questions
How many CNPJs can I look up per batch?
Up to 10,000 per request. For longer lists, split them into blocks and send one batch for each. Duplicates are removed, so each CNPJ is looked up and charged once.
Can I upload a spreadsheet?
Yes. In the CPFHub.io dashboard, under Lookups, Bulk CNPJ, upload a CSV or TXT file or paste the list. The CNPJ column is detected automatically, and the result can be downloaded as CSV. XLSX files are not accepted yet: save the spreadsheet as CSV before uploading.
How much does a bulk CNPJ lookup cost?
1 credit per CNPJ found, the same as the single lookup, from the same plan balance, including the 50 monthly credits of the Free plan. CNPJs that are not found, invalid or repeated use no credits, and neither does checking the batch status.
What data comes back for each CNPJ?
The same record as the CNPJ Lookup: legal name, trade name, registration status, main and secondary CNAE, legal nature, address, contacts, size, share capital, Simples Nacional and MEI options and the partner list, with the CPF of individual partners masked. The dashboard CSV has the main columns.
How does the batch work through the API?
Send the CNPJs in POST /cnpj/bulk with the body {"cnpjs": [...]}. The API responds 202 with the jobId. Call GET /cnpj/bulk/{jobId} until the status is done or failed. While the batch runs, the response already includes partial results.
What if the balance runs out mid-batch?
On plans without overage, a batch is only accepted if the balance covers every valid CNPJ. If the balance runs out during processing, the remaining CNPJs come back as skipped, with no lookup and no charge. Top up and send only the ones left.
How often is the data updated?
The data comes from the public CNPJ dataset published by Brazil's Federal Revenue, refreshed monthly. The batch does not query the Federal Revenue in real time: each record reflects the latest monthly dataset.
Does the batch accept the alphanumeric CNPJ?
Yes. The list can mix numeric and alphanumeric CNPJs, with or without formatting. Check digits are validated before processing, and invalid CNPJs are left out at no cost.
Check your CNPJ list
today.
- 50 free credits per month
- No credit card
- 24h assistance on WhatsApp