# Guia Rápido

O objetivo deste guia é que entenda de forma objetiva o que faz nossa API, e comece em poucos minutos a fazer consultas!

Abordaremos apenas uma pequena parcela de tudo que ela é capaz, se você gostar do conteúdo recomendamos a leitura da documentação completa.


# Chave de API

Acesse a página de sua conta em nossa plataforma para visualizar sua Chave de API, caso ainda não tenha registro você será guiado no processo de criação:

Minha Conta

Ao registrar-se você estará no plano gratuito, que oferece consultas e créditos suficientes para iniciar seus testes da API.

Após acessar o link acima, copie sua chave para utilizar no próximo passo, o formato dela é similar a:

27e4642e-34d1-4ff3-bc26-e34321d96326-fc7abaae-a96c-4e63-b52e-33fb48526dac

# Receita Federal

# Dados de Cadastro

Neste primeiro exemplo iremos obter os dados de um estabelecimento na Receita Federal.

Escolha a linguagem de sua preferência a seguir e substitua o termo sua-chave-de-api pelo valor que obteve no passo anterior.

Aqui vamos usar o nosso CNPJ, mas fique a vontade para alterá-lo a outro de sua preferência!

curl --location --request GET 'https://api.cnpja.com/office/37335118000180' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Esta consulta retorna os dados de cadastro, includindo situação, endereço, contatos, atividades econômicas e quadro de sócios.

Ao ser concluída com sucesso o JSON de retorno irá iniciar com:

{
  "updated": "2021-07-17T14:46:27Z",
  "taxId": "37335118000180",
  "alias": "CNPJA",
  "founded": "2020-06-05",
  "head": true,
  "company": {
    "id": 37335118,
    "name": "CNPJA TECNOLOGIA LTDA",
    "equity": 1000,
    // Demais informações da empresa...
  },
  // Demais informações do estabelecimento...
}

A fim de manter o guia sucinto, não iremos abordar todos os campos aqui, para conhecer detalhadamente cada propriedade do retorno acesse:

Referência | API
https://cnpja.com/docs/api/reference

Armazene o resultado desta e demais consultas no guia, pois ao término explicarmos sobre nosso cache.

# Comprovante em PDF

Para emitir o comprovante em PDF referente a consulta acima, vamos substituir a rota /office/{cnpj} por /rfb/certificate?taxId={cnpj}:

curl --location --request GET 'https://api.cnpja.com/rfb/certificate?taxId=37335118000180' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/rfb/certificate?taxId=37335118000180' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/rfb/certificate?taxId=37335118000180")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/rfb/certificate?taxId=37335118000180',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/rfb/certificate?taxId=37335118000180',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/rfb/certificate?taxId=37335118000180",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/rfb/certificate?taxId=37335118000180", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Os comprovantes são emitidos sempre em tempo real, o retorno será o buffer de um arquivo PDF, exemplo:

[PDF] Comprovante RFB


# Simples Nacional

# Opção e Enquadramento

A consulta anterior retornou os dados do cadastro na Receita, entretanto não contém as informações de regime do Simples Nacional e SIMEI.

Isto ocorre pois a aquisição em tempo real destas informações originam de locais diferentes, e estão sujeitas a adicionais custos de automação em nossa plataforma.

Para receber os dados do Simples, repita a consulta anterior adicionando o parâmetro: simples=true.

curl --location --request GET 'https://api.cnpja.com/office/37335118000180?simples=true' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180?simples=true' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180?simples=true")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180?simples=true',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180?simples=true',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180?simples=true",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180?simples=true", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Observe que novas informações foram adicionadas ao mesmo retorno do exemplo anterior:

{
  "updated": "2021-07-17T14:46:27Z",
  "taxId": "37335118000180",
  "alias": "CNPJA",
  "founded": "2020-06-05",
  "head": true,
  "company": {
    "id": 37335118,
    "name": "CNPJA TECNOLOGIA LTDA",
    "equity": 1000,
    // Informações do Simples e SIMEI:
    "simples": {
      "optant": true,
      "since": "2020-06-05"
    },
    "simei": {
      "optant": false,
      "since": null
    },
    // Demais informações da empresa...
  },
  // Demais informações do estabelecimento...
}

# Histórico de Períodos

Também é possível trazer o histórico de períodos adicionando o parâmetro simplesHistory=true:

curl --location --request GET 'https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180?simples=true&simplesHistory=true",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180?simples=true&simplesHistory=true", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Resultando em dados mais enriquecidos nas propriedades simples e simei:

"simples": {
  "optant": true,
  "since": "2022-01-01",
  "history": [
    {
      "from": "2020-01-01",
      "until": "2021-12-31",
      "text": "Excluída por Ato Administrativo praticado pela Receita Federal do Brasil"
    },
    {
      "from": "2019-01-01",
      "until": "2019-12-31",
      "text": "Excluída por Ato Administrativo praticado pela Receita Federal do Brasil"
    }
  ]
},
"simei": {
  "optant": false,
  "since": null,
  "history": [
    {
      "from": "2012-12-26",
      "until": "2013-12-31",
      "text": "Desenquadrada por Opção do Contribuinte"
    }
  ]
}

# Comprovante em PDF

Para emitir o comprovante em PDF referente ao Simples Nacional e SIMEI, utilizaremos a rota /simples/certificate?taxId={cnpj}:

curl --location --request GET 'https://api.cnpja.com/simples/certificate?taxId=37335118000180' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/simples/certificate?taxId=37335118000180' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/simples/certificate?taxId=37335118000180")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/simples/certificate?taxId=37335118000180',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/simples/certificate?taxId=37335118000180',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/simples/certificate?taxId=37335118000180",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/simples/certificate?taxId=37335118000180", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Assim como na Receita Federal, os comprovantes do Simples Nacional são emitidos sempre em tempo real, exemplo:

[PDF] Comprovante Simples


# Inscrições Estaduais

# Número e Habilitação

Outra informação amplamente utilizada, que se encaixa no mesmo cenário explicado no passo anterior, são as Inscrições Estaduais do estabelecimento.

Para adicioná-las, o processo é similar, através do parâmetro: registrations={UFs}.

Onde UFs deve ser substituído por uma ou mais siglas separadas por vírgula dos estados que deseja consultar as IEs.

Também é possível utilizar o termo BR que indica que deseja as IEs de todas as UFs.

Neste exemplo utilizaremos o CNPJ 04.337.168/0001-48 com todas as IEs:

curl --location --request GET 'https://api.cnpja.com/office/04337168000148?registrations=BR' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/04337168000148?registrations=BR' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/04337168000148?registrations=BR")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/04337168000148?registrations=BR',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/04337168000148?registrations=BR',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/04337168000148?registrations=BR",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/04337168000148?registrations=BR", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

O retorno irá conter os detalhes das IEs para os estados escolhidos:

{
  "updated": "2021-07-17T14:46:27Z",
  "taxId": "04337168000148",
  "alias": "MOTO HONDA",
  "founded": "1975-07-05",
  "head": true,
  "company": {
    "id": 4337168,
    "name": "MOTO HONDA DA AMAZONIA LTDA",
    "equity": 1466281857,
    // Demais informações da empresa...
  },
  "registrations": [
    {
      "state": "RJ",
      "number": "91010453",
      "enabled": true
    },
    {
      "state": "AM",
      "number": "063002280",
      "enabled": false
    },
    {
      "state": "RS",
      "number": "9000000390",
      "enabled": true
    },
    {
      "state": "SE",
      "number": "270850953",
      "enabled": true
    }
  ]
  // Demais informações do estabelecimento...
}

# Situação Cadastral

Também é possível trazer a situação cadastral e tipo das IEs adicionando o parâmetro registrationsStatus=true:

curl --location --request GET 'https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/04337168000148?registrations=BR&registrationsStatus=true",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/04337168000148?registrations=BR&registrationsStatus=true", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Resultando em dados mais enriquecidos na propriedade registrations:

"registrations": [
  {
    "number": "91010453",
    "state": "RJ",
    "enabled": true,
    "statusDate": "2005-02-25",
    "status": {
      "id": 1,
      "text": "Sem restrição"
    },
    "type": {
      "id": 2,
      "text": "IE Substituto Tributário"
    }
  },
  {
    "number": "063002280",
    "state": "AM",
    "enabled": false,
    "statusDate": "2017-05-20",
    "status": {
      "id": 1,
      "text": "Sem restrição"
    },
    "type": {
      "id": 1,
      "text": "IE Normal"
    }
  },
  {
    "number": "9000000390",
    "state": "RS",
    "enabled": true,
    "statusDate": "2021-01-21",
    "status": {
      "id": 2,
      "text": "Bloqueado como Destinatário na UF"
    },
    "type": {
      "id": 2,
      "text": "IE Substituto Tributário"
    }
  },
  {
    "state": "SE",
    "number": "270850953",
    "enabled": true,
    "statusDate": "2022-04-22",
    "status": {
      "id": 3,
      "text": "Vedada operação como Destinatário na UF"
    },
    "type": {
      "id": 2,
      "text": "IE Substituto Tributário"
    }
  }
]

# Localização

# Coordenadas

É possível adicionar a latitude e longitude de um endereço informando o parâmetro geocoding=true:

curl --location --request GET 'https://api.cnpja.com/office/37335118000180?geocoding=true' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180?geocoding=true' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180?geocoding=true")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180?geocoding=true',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180?geocoding=true',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180?geocoding=true",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180?geocoding=true", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Resultando na adição das propriedades latitude e longitude dentro de address:

"address": {
  "latitude": -23.5774994,
  "longitude": -46.6864608,
  "municipality": 3550308,
  "street": "Avenida Brig Faria Lima",
  "number": "2369",
  "details": "Conj 1102",
  "district": "Jardim Paulistano",
  "city": "São Paulo",
  "state": "SP",
  "zip": "01452922",
  "country": {
    "id": 76,
    "name": "Brasil"
  }
}

# Mapa Aéreo

Oferecemos suporte a gerar mapas aéreos baseados no CNPJ, para tal utilize a rota /office/{cnpj}/map:

curl --location --request GET 'https://api.cnpja.com/office/37335118000180/map' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180/map' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180/map")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180/map',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180/map',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180/map",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180/map", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Os mapas são fornecidos pelo Google, portanto estão sujeitos ao tempo de atualização deles.

Somos responsáveis apenas por traduzir o CNPJ ao endereço, exemplo:

# Visão da Rua

Também é possível gerar a visão da rua baseada no CNPJ, para tal utilize a rota /office/{cnpj}/street:

curl --location --request GET 'https://api.cnpja.com/office/37335118000180/street' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/37335118000180/street' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/37335118000180/street")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/37335118000180/street',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/37335118000180/street',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/37335118000180/street",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/37335118000180/street", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Assim como o mapa aéreo, a imagem é fornecida pelo Google, e está sujeita ao tempo de atualização deles.

Exemplo:


# Cache e Online

As consultas anteriores retornaram uma propriedade updated, com estampa de tempo em UTC.
Em comparação com o horário brasileiro este valor é 3 horas a frente, ou seja, no exemplo a seguir:

"updated": "2021-07-17T14:46:27Z"

Significa que os dados foram atualizados 17 de julho de 2021 às 11:56 no Brasil.

Agora, resgate qualquer um dos resultados dos passos anteriores e confira o valor em updated:

Se ele for menor que a data e hora atual

A consulta foi realizada em Cache e não consumiu créditos, apenas contou para sua taxa por minuto.

Se ele for igual a data e hora atual

A consulta foi realizada Online e consumiu tanto seus créditos como contou para sua taxa por minuto.

Por padrão, o máximo valor em updated será uma data até 30 dias atrás. Entretanto, você pode controlar este valor como preferir utilizando o parâmetro de query maxAge=dias.

Para testar este comportamento, faça uma consulta com um CNPJ diferente, e adicione maxAge como 365 (1 ano):

curl --location --request GET 'https://api.cnpja.com/office/seu-cnpj?maxAge=365' \
--header 'Authorization: sua-chave-de-api'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Authorization", "sua-chave-de-api")

$response = Invoke-RestMethod 'https://api.cnpja.com/office/seu-cnpj?maxAge=365' -Method 'GET' -Headers $headers
$response | ConvertTo-Json
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://api.cnpja.com/office/seu-cnpj?maxAge=365")
  .method("GET", null)
  .addHeader("Authorization", "sua-chave-de-api")
  .build();
Response response = client.newCall(request).execute();
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.cnpja.com/office/seu-cnpj?maxAge=365',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: sua-chave-de-api'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
const axios = require('axios');

const config = {
  method: 'get',
  url: 'https://api.cnpja.com/office/seu-cnpj?maxAge=365',
  headers: { 
    'Authorization': 'sua-chave-de-api'
  }
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});
const settings = {
  "url": "https://api.cnpja.com/office/seu-cnpj?maxAge=365",
  "method": "GET",
  "timeout": 0,
  "headers": {
    "Authorization": "sua-chave-de-api"
  },
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
import http.client

conn = http.client.HTTPSConnection("api.cnpja.com")
payload = ''
headers = {
  'Authorization': 'sua-chave-de-api'
}
conn.request("GET", "/office/seu-cnpj?maxAge=365", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Desta forma, há uma alta probabilidade da consulta ser concluída em Cache, ou seja, com updated retroativo. Se isto não ocorrer, escolha outro CNPJ até encontrar um exemplo.

Por fim, realize a mesma consulta trocando maxAge=365 por maxAge=1, você irá observar que o tempo de resposta será maior, porém desta vez a estampa de tempo de retorna será a hora atual e os dados estarão atualizados.

O cenário que testamos é apenas uma amostra de tudo o que o controle de cache é capaz, para conhecer mais a respeito acesse:

Referência | Cache e Online
https://cnpja.com/docs/api/reference#tag/Cache-e-Online