Brazil Company Search API and MCP — Find CNPJ Numbers by Company Name
Send a company name and get the matching Brazilian entities back with their CNPJ, registered name, status and a link to the record. Set max_items to cap how many records you pay for.
- You send
- a company name
- You get back
- Matching companies with CNPJ, status and link
- Coverage
- Brazil — entities on CNPJ (Receita Federal).
- Price
- 1 point per returned record — $1 per 1,000
- Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| CNPJ (Receita Federal) directly | Type the name into CNPJ (Receita Federal) and read the results | Usually free, sometimes per-document | A different interface, language and data shape for every country you add |
| Collecting it yourself | Build and host a crawler per register, then keep each one alive | Infrastructure and maintenance | Registers change their pages without warning, and nobody is on the hook when yours breaks |
| NeuralVerge | One request, the same shape as every other source in the catalog | $1 per 1,000, misses not billed | Covers Brazil — other countries are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
session_id | string | Id of this run, for tracing. |
kind | string | Always "br_companies_search". |
keyword | string | The search text you sent. |
max_items | number | The cap you set on returned records. |
start_page | number | Page the results started from. |
partial | boolean | True if the run stopped before the cap was reached. |
human | string | Readable Markdown summary of the run. |
machine.total_items | number | Records returned in this response. |
machine.total_found | number | Matches the register reports for the search, which can be more than you asked for. |
machine.page_count | number | Result pages read. |
machine.blocked | boolean | False when the register answered normally. |
machine.proxy_traffic_bytes | number | Data transferred for the run. |
total_points | number | Points charged: one per returned record. |
machine.first_item.registration_number | string | The CNPJ as 14 digits. |
machine.first_item.name | string | Registered company name. |
machine.first_item.status | string | Registration status, for example Baixada (closed). |
machine.first_item.address | null | Empty in search results. |
machine.first_item.url | string | Link to the CNPJ record. |
machine.first_item.company_type | null | Empty in search results. |
machine.first_item.incorporation_date | null | Empty in search results. |
machine.first_item.cnpj_formatted | string | The CNPJ in the usual punctuated format. |
machine.items | array | Every returned record, each with the same keys as first_item. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "br_companies_search",
"keyword": "petrobras",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Brazil — CNPJ — company search\n\n- **Keyword:** petrobras\n- **Results:** 2 of 1792 found\n- **Proxy traffic:** 45.6 KB",
"machine": {
"total_items": 2,
"first_item": {
"registration_number": "97200042000108",
"name": "LUIZ LACY SCHLABRENDORFF E CIA LTDA",
"status": "Baixada",
"address": null,
"url": "https://cnpj.biz/97200042000108",
"company_type": null,
"incorporation_date": null,
"cnpj_formatted": "97.200.042/0001-08"
},
"items": [
{
"registration_number": "97200042000108",
"name": "LUIZ LACY SCHLABRENDORFF E CIA LTDA",
"status": "Baixada",
"address": null,
"url": "https://cnpj.biz/97200042000108",
"company_type": null,
"incorporation_date": null,
"cnpj_formatted": "97.200.042/0001-08"
},
{
"registration_number": "96923644000201",
"name": "MARCOLIN ADMINISTRADORA DE IMOVEIS LTDA",
"status": "Baixada",
"address": null,
"url": "https://cnpj.biz/96923644000201",
"company_type": null,
"incorporation_date": null,
"cnpj_formatted": "96.923.644/0002-01"
}
],
"total_found": 1792,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 46677
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged.
curl -X POST https://api.neuralverge.ai/functions/v1/run-br-companies-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"petrobras","max_items":2}'What teams use it for
Where this field shows up in an actual workflow.
Get the identifier you need for a company lookup.
See every registered entity that matches a name, with its status.
Match free-text company names to CNPJ numbers.
Filter out matches whose status is Baixada.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Brazil — entities on CNPJ (Receita Federal).
Read at request time, so the answer reflects the register as it stands when you ask.
CNPJ (Receita Federal) is a public register. Every response carries the source URL it was read from and a session id you can trace.
- —Search results carry only name, CNPJ, status and link; run Brazil company for address, legal form and officers.
- —A common name can match thousands of entities; read total_found.
- —Matching is by name, so the best hit is not guaranteed to be first.
Questions, answered
Search results only include what the registry lists next to each match. Run Brazil company on the CNPJ to get the full record.
Related sources
Try brazil company search on your own data
One request format across every source in the catalog.