Government — entry 005 of 90
Brazil Receita WS
ReceitaWS looks up registered Brazilian companies by CNPJ (tax ID) and returns name, address, share capital, and partner (QSA) data sourced from the Receita Federal. The free tier is keyless but capped at 3 requests/minute and omits Simples Nacional and state (Estadual) registration status; a paid token starting around R$149/month lifts the rate limit and unlocks the fuller record.
ReceitaWS is a keyless CNPJ (Brazilian company tax ID) lookup service, mirroring registration data from the Receita Federal. A live GET this run against /cnpj/27865757000102 (Globo's CNPJ, a stable public company) returned a genuine 200, 5,093 B JSON record at content-type: application/json; charset=utf-8, with no access-control-allow-origin header on any probe — confirming the stored cors: no; browser code needs a server-side proxy. The free tier is capped at 3 requests/minute (x-ratelimit-limit: 3), live-confirmed this run, and omits Simples Nacional/Estadual registration status; a paid token via https://developers.receitaws.com.br/ lifts the limit and adds those fields.
GreatAPIs Score
Auth quickstart
- No API key, signup, or credit card required for the free tier — a live GET this run against
/cnpj/27865757000102returned a full company record on the first anonymous try. Only the rate limit (3 requests/minute) gates the free tier; a paid token removes it.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Look up a company by CNPJ
GEThttps://receitaws.com.br/v1/cnpj/27865757000102
{
"abertura": "31/01/1986",
"situacao": "ATIVA",
"tipo": "MATRIZ",
"nome": "GLOBO COMUNICACAO E PARTICIPACOES S/A",
"fantasia": "TV/REDE/GLOBO.COM/CANAIS GLOBO/GLOBOPLAY/ELETROMIDIA",
"porte": "DEMAIS",
"natureza_juridica": "205-4 - Sociedade Anônima Fechada",
"atividade_principal": [
{ "code": "60.21-7-00", "text": "Atividades de televisão aberta" }
],
"logradouro": "R LOPES QUINTAS",
"numero": "303",
"municipio": "RIO DE JANEIRO",
"uf": "RJ",
"cep": "22.460-901",
"data_situacao": "03/11/2005",
"cnpj": "27.865.757/0001-02",
"ultima_atualizacao": "2026-07-28T19:34:19.864Z",
"status": "OK",
"capital_social": "6983568523.86",
"simples": { "optante": false, "data_opcao": null, "data_exclusao": null },
"simei": { "optante": false, "data_opcao": null, "data_exclusao": null },
"billing": { "free": true, "database": true }
}Trimmed of the full atividades_secundarias (26 entries) and qsa (6 partners) arrays for length — the full live response above is 5,093 B. capital_social ("6983568523.86") and every other numeric-looking field are quoted strings, not JSON numbers; status: "OK" here is a field inside the body, distinct from the HTTP status code.
Try it
Developer reference
https://receitaws.com.br/v13 requests/minute on the free public API -- documented in the live OpenAPI spec at developers.receitaws.com.br/receitaws.yaml ('Esta API permite 3 consultas por minuto'); exceeding it returns HTTP 429. A paid token removes the cap.
- GET/cnpj/{cnpj}
Gotchas & limits
- The free tier enforces 3 requests/minute via
x-ratelimit-limit/x-ratelimit-remainingheaders, and live-confirmed this run, the very next call oncex-ratelimit-remaininghit 0 returned HTTP 429 with a 42 B, plain-text body —Too many requests, please try again later.— served ascontent-type: text/html; charset=UTF-8, not JSON, and with noRetry-Afterheader to say when to retry. Code that expects a JSON error envelope on every failure path will throw parsing this one. - An invalid CNPJ, live-confirmed this run (
/cnpj/00000000000000), returns HTTP 400 with a real JSON body, 54 B,{"status": "ERROR", "message": "CNPJ inválido"}— notestatushere is a string field inside the JSON, unrelated to the HTTP status code; the success path above also carries its own"status": "OK"field. capital_social(share capital) is a quoted string ("6983568523.86") rather than a JSON number, confirmed live above — code that sums or compares it directly withoutparseFloatfirst will concatenate instead of adding.- Both
https://receitaws.com.br/v1/...(this quickstart'sbaseUrl) andhttps://www.receitaws.com.br/v1/...answer identically live, with no redirect either way — even though the storedurlfield points atwww., this quickstart pins the bare host since that's what the API itself resolves without a hop.