CPFHub.io

Consulta de CNPJ

Envía el CNPJ (registro nacional de empresas de Brasil) y recibe los datos catastrales de la empresa: razón social, nombre comercial, situación catastral, dirección, CNAE (código de actividad), tamaño, Simples Nacional/MEI y socios (QSA). Cuesta 1 crédito por CNPJ encontrado, igual que la Consulta Simple de CPF.

¿Usas Cursor, Lovable, v0 u otra IA? Copia el prompt de la Consulta de CNPJ y pégalo en tu asistente.

Abrir en Cursor

¿Muchos CNPJ a la vez? Usa la Consulta de CNPJ por Lote. Sin código, el dashboard consulta un CNPJ a la vez y guarda el resultado en el Historial.

Endpoint

GEThttps://api.cpfhub.io/cnpj/{cnpj}

Parámetros

DóndeNombreObligatorioDescripción
PathcnpjSíCNPJ con o sin formato: 11222333000181 o 11.222.333/0001-81. Acepta el CNPJ alfanumérico (ver abajo).
Headerx-api-keySíTu API Key. Ver Autenticación.

CNPJ alfanumérico

La API acepta el nuevo formato de CNPJ alfanumérico, que la Receita Federal (administración tributaria de Brasil) empezó a emitir en julio de 2026: 12 caracteres con letras (A a Z) y números, seguidos de 2 dígitos verificadores numéricos. Ejemplo ficticio: 12ABC34501DE35 (o 12.ABC.345/01DE-35).

  • Las minúsculas se convierten a mayúsculas.
  • Los puntos, la barra y el guion se eliminan antes de validar.
  • El dígito verificador se comprueba en los dos formatos. Las secuencias repetidas como 00000000000000 se rechazan.
  • Guarda el CNPJ como texto en tu base de datos, nunca como número.

Ejemplo

Los ejemplos leen la clave de CPFHUB_API_KEY, tratan el 404 como resultado normal y usan un timeout de 10 s.

curl --max-time 10 "https://api.cpfhub.io/cnpj/11222333000181" \
  -H "x-api-key: $CPFHUB_API_KEY"

Respuesta

HTTP 200 OK

JSON
{
  "success": true,
  "data": {
    "cnpj": "11222333000181",
    "razao_social": "EMPRESA EXEMPLO LTDA",
    "nome_fantasia": "EXEMPLO",
    "situacao_cadastral": "Ativa",
    "data_situacao_cadastral": "2015-03-10",
    "matriz_filial": "Matriz",
    "data_inicio_atividade": "2015-03-10",
    "cnae_principal": "6201501",
    "cnaes_secundarios": ["6204000", "6311900"],
    "codigo_natureza_juridica": "2062",
    "natureza_juridica": "Sociedade Empresária Limitada",
    "tipo_logradouro": "RUA",
    "logradouro": "DAS FLORES",
    "numero": "100",
    "complemento": "SALA 1",
    "bairro": "CENTRO",
    "cep": "01001000",
    "uf": "SP",
    "municipio": "SAO PAULO",
    "email": "contato@example.com",
    "telefones": [
      { "ddd": "11", "numero": "00000000", "is_fax": false }
    ],
    "capital_social": "100000,00",
    "porte_empresa": "Microempresa (ME)",
    "opcao_simples": "S",
    "data_opcao_simples": "2015-03-10",
    "opcao_mei": "N",
    "data_opcao_mei": null,
    "QSA": [
      {
        "nome_socio": "FULANO DE TAL",
        "cnpj_cpf_socio": "***.456.789-**",
        "qualificacao_socio": "Sócio-Administrador",
        "data_entrada_sociedade": "2015-03-10",
        "identificador_socio": "Pessoa Física",
        "faixa_etaria": "31 a 40 anos"
      }
    ]
  }
}

Los campos vienen de la base pública del CNPJ, así que nombres y valores están en portugués y son, en general, string. Las fechas usan AAAA-MM-DD. Un campo vacío puede llegar como "".

CampoTipoDescripción
data.cnpjstringCNPJ consultado, 14 caracteres sin formato
data.razao_socialstringRazón social
data.nome_fantasiastringNombre comercial. Puede venir vacío
data.situacao_cadastralstringSituación catastral: "Ativa" (activa), "Baixada" (dada de baja), "Inapta" (inapta), "Suspensa" (suspendida) o "Nula" (nula)
data.data_situacao_cadastralstring | nullFecha de la situación catastral actual
data.matriz_filialstring"Matriz" (sede) o "Filial" (sucursal)
data.data_inicio_atividadestring | nullFecha de apertura
data.cnae_principalstringCNAE principal, 7 dígitos
data.cnaes_secundariosstring[]CNAE secundarios, 7 dígitos cada uno
data.codigo_natureza_juridica, data.natureza_juridicastringCódigo (4 dígitos) y descripción de la naturaleza jurídica
data.tipo_logradouro, data.logradouro, data.numero, data.complemento, data.bairrostringDirección del establecimiento
data.cepstringCódigo postal (CEP), 8 dígitos sin formato
data.uf, data.municipiostringEstado (sigla) y municipio
data.emailstringCorreo registrado en la Receita Federal. Puede venir vacío
data.telefones[]object[]ddd (código de área), numero e is_fax (boolean)
data.capital_socialstringCapital social con coma decimal: "100000,00"
data.porte_empresastringTamaño: "Microempresa (ME)", "Empresa de Pequeno Porte (EPP)", "Demais" o "Não informado"
data.opcao_simples, data.opcao_meistring"S" (sí), "N" (no) o "" (sin información)
data.data_opcao_simples, data.data_opcao_meistring | nullFecha de adhesión al Simples Nacional y al MEI
data.QSA[]object[]Socios y administradores (abajo)
data.lgpd_anonimizadobooleanSolo aparece cuando el titular pidió la anonimización. Algunos campos vienen ocultos

Cada elemento de data.QSA:

CampoDescripción
nome_socioNombre del socio (persona o empresa)
cnpj_cpf_socioCNPJ del socio persona jurídica. Para personas físicas, el CPF viene siempre enmascarado: ***.456.789-**
qualificacao_socioCargo, por ejemplo "Sócio-Administrador" (socio administrador)
data_entrada_sociedadeFecha de entrada en la sociedad, o null
identificador_socio"Pessoa Física" (persona física), "Pessoa Jurídica" (persona jurídica) o "Estrangeiro" (extranjero)
faixa_etariaRango de edad del socio
  • Las fechas vacías o 0000-00-00 en la base de origen llegan como null.
  • La respuesta puede incorporar campos nuevos. Ignora los campos que tu código no conoce.

Errores

La API responde solo en portugués. Los mensajes de error aparecen tal como llegan, con la traducción entre paréntesis.

StatusCuándo ocurreQué hacer
400CNPJ con formato inválido o dígito verificador incorrecto ("CNPJ inválido. Formato ou dígito verificador incorreto.", CNPJ inválido)Corrige el CNPJ. No repitas. No consume crédito.
401API Key ausente, inválida o inactiva (error string)Revisa el header x-api-key.
403Créditos agotados sin excedente ("Limite de créditos excedido", límite de créditos superado, en general con error string, a veces en error.message) o cuenta inactiva/bloqueada (error string)Recarga créditos o contacta a soporte. No repitas.
404CNPJ no encontrado en la base ("CNPJ não encontrado na base de dados")Resultado normal. No consume crédito.
429Límite por minuto superado, compartido con la Consulta Simple de CPF (30/min por defecto)Espera los segundos del header Retry-After. No consume crédito.
503Base de CNPJ no disponible ("cnpj_unavailable") o falla pasajera al reservar créditos o registrar la consultaRepite con espera creciente (2 s, 4 s, 8 s). No consume crédito.

Formato del error y reintentos: Códigos de Error. Límite por minuto y créditos: Límites de Uso.

Detalles

  • Costo: 1 crédito por CNPJ encontrado (200), el mismo costo de la Consulta Simple de CPF y de la misma franquicia del plan. Algunos planes tienen costo propio: revisa el tuyo en el dashboard. 400, 404, 429 y 503 no consumen crédito.
  • Límite por minuto: la Consulta de CNPJ y la Consulta Simple de CPF comparten el mismo límite por API Key (30 solicitudes por minuto por defecto, sumando las dos).
  • Fuente de los datos: base pública del CNPJ publicada por la Receita Federal (Dados Abertos do CNPJ), actualizada mensualmente y procesada por el proyecto OpenCNPJ (licencia MIT). CPFHub.io no consulta la Receita Federal en tiempo real para CNPJ: un registro puede estar desactualizado hasta la próxima actualización mensual. No existe Consulta en Tiempo Real de CNPJ.
  • Socios personas físicas: el CPF del socio viene siempre enmascarado. La API no devuelve el CPF completo de los socios.
  • Historial: las consultas de CNPJ aparecen en el Historial del dashboard, junto con las de CPF.
  • Timeout del cliente: la consulta puede haberse completado y cobrado en el servidor. Repetir cobra de nuevo.
  • Datos de ejemplo: el CNPJ 11222333000181, el CNPJ alfanumérico 12ABC34501DE35 y los datos anteriores son ficticios.

Actualizado el 15 de octubre de 2026