Search Brazilian companies in the official Receita Federal CNPJ registry
Search Brazilian companies in the official Receita Federal CNPJ registry. Filters (at least one required): nome (full-text on names, accent-insensitive), uf (state), municipio (4-digit RFB code), cnae, porte (size), abertura_de/abertura_ate (opening-date window YYYY-MM-DD, for newly registered companies), situacao (default "ativa"). Paginated; total capped at "10000+". Free sample, no payment: https://api.brazilayer.com/v1/cnpj/amostra
10000 (raw units)
price
5
calls / 30d
1
unique payers
2026-09-07
updated
Provider
api.brazilayer.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x3Cc1D8ee1dfdFd326c19B0884B8dF4b24B623f0c",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"nome": "padaria",
"por_pagina": 20,
"uf": "RJ"
},
"type": "http"
},
"output": {
"example": {
"pagina": 1,
"resultados": [
{
"cnpj": "00064704000128",
"razao_social": "PADARIA DOCES SONHOS LTDA",
"uf": "RJ"
}
],
"total": 4086
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"abertura_ate": {
"description": "opening date to (YYYY-MM-DD)",
"type": "string"
},
"abertura_de": {
"description": "opening date from (YYYY-MM-DD) — newly registered companies",
"type": "string"
},
"cnae": {
"description": "7-digit CNAE activity code",
"type": "string"
},
"com_investidor": {
"description": "only companies with a VC/PE fund in the ownership structure — a public proxy for venture-backed startups",
"type": "boolean"
},
"municipio": {
"description": "4-digit RFB city code",
"type": "string"
},
"nome": {
"description": "full-text search on company names",
"type": "string"
},
"pagina": {
"description": "page number, default 1",
"type": "integer"
},
"por_pagina": {
"description": "page size, default 20, max 50",
"type": "integer"
},
"porte": {
"description": "company size: micro_empresa | pequeno_porte | demais",
"type": "string"
},
"situacao": {
"description": "registration status: ativa (default) | baixada | suspensa | inapta | nula",
"type": "string"
},
"uf": {
"description": "2-letter Brazilian state code, e.g. SP",
"type": "string"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://api.brazilayer.com/v1/cnpj/busca" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://api.brazilayer.com/v1/cnpj/busca");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://api.brazilayer.com/v1/cnpj/busca")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/1500.json, and this resource appears in /discovery/resources and /discovery/search.