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_principalmunicipioufQSA

Spreadsheet, 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.

  1. 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.

  2. 02

    Track the batch

    Call GET /cnpj/bulk/{jobId} whenever you like. Tracking uses no credits and works even with a zero balance.

  3. 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.

cURL · 2 stepsPOST /cnpj/bulk → GET /cnpj/bulk/{jobId}
1
2
3
4
5
6
7
8
9
10
11
# 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"
Response
200 OK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  "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_records

How many valid, unique CNPJs entered the batch.

processed

How many were already looked up.

found

How many exist in the dataset. This is what you pay for.

not_found

How many have no record. No charge.

skipped

How 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

Automated assistance, 24 hours a day

Still have questions?

Chat with us on WhatsApp.

Talk to our team
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
WhatsApp