Desenvolvedores

Dados abertos do FarejaLeads para sistemas e agentes: empresas ativas no Brasil por setor, estado, município, porte e ano de abertura (base de CNPJ da Receita Federal) e contratos públicos por categoria, fornecedores e compradores (PNCP). Só leitura, em JSON e CSV, licença CC BY 4.0.

Início rápido

Sem cadastro: copie e rode.

curl https://farejaleads.com/api/v1
curl https://farejaleads.com/api/v1/conjuntos
curl https://farejaleads.com/api/v1/conjuntos/empresas-ativas-por-setor-e-uf.json
curl https://farejaleads.com/api/v1/paginas/empresas/software/pe.json

A especificação completa está em /openapi.json (OpenAPI 3.1). O catálogo com o dicionário de cada coluna está em /dados, e o método em /dados/metodologia.

Chaves de API e ambiente de testes

A API de dados abertos não usa chave: é pública, só leitura e com CORS liberado. Não há ambiente de testes separado porque nenhuma chamada altera nada — use a produção à vontade, respeitando o limite abaixo. Precisa de mais volume ou de um recorte que não está no catálogo? Escreva para contact@gvosd.com com o assunto “API”.

Listas de leads com contato (e-mail, telefone) não saem pela API pública: elas ficam no aplicativo, por conta, e só o lead entregue é cobrado (preços).

Rotas

  • GET /api/v1 — índice: versão, rotas e links.
  • GET /api/v1/conjuntos — os 7 conjuntos do catálogo, com links JSON e CSV.
  • GET /api/v1/conjuntos/{id}.json|csv — um conjunto inteiro.
  • GET /api/v1/paginas/{caminho}.json|csv — os números de uma página pública, como empresas/software/pe/recife ou contratos-publicos/software-e-ti/sp.

Os endereços /dados/arquivo/…, citados nas páginas de dados, continuam funcionando com o mesmo conteúdo.

Erros

Todo erro sai como application/problem+json (RFC 9457): type, title, status, detail e instance, mais code (estável, para o seu código decidir) e hint (o que fazer). Exemplo:

HTTP/1.1 404
Content-Type: application/problem+json; charset=utf-8

{
 "type": "https://farejaleads.com/developers#erro-conjunto_inexistente",
 "title": "Conjunto de dados inexistente",
 "status": 404,
 "detail": "O conjunto \"xyz\" não existe.",
 "instance": "/api/v1/conjuntos/xyz.json",
 "code": "conjunto_inexistente",
 "hint": "Liste os conjuntos em /api/v1/conjuntos."
}
404 rota_inexistente
Rota inexistente. Veja as rotas em /api/v1 ou em /openapi.json.
404 formato_invalido
Formato não suportado. Termine o caminho em .json ou .csv.
404 conjunto_inexistente
Conjunto de dados inexistente. Liste os conjuntos em /api/v1/conjuntos.
404 pagina_inexistente
Página de dados inexistente. Use o caminho de uma página pública, como empresas/software/pe ou contratos-publicos/software-e-ti.
405 metodo_nao_permitido
Método não permitido. A API é só leitura: use GET.
429 limite_excedido
Limite de requisições excedido. Espere os segundos do cabeçalho Retry-After e diminua o ritmo.
503 indisponivel
Fonte indisponível agora. Tente de novo em alguns minutos (veja Retry-After).
500 erro_interno
Erro interno. Tente de novo; se continuar, escreva para o suporte informando o instance.

Fora da API, um endereço que não existe responde 404 em Markdown para quem pede Accept: text/markdown, e em JSON para quem pede só JSON.

Limites

120 requisições a cada 60 segundos por IP. Toda resposta da API informa a cota nos cabeçalhos do draft IETF de limites (RateLimit-Policy e RateLimit) e nos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Passou do limite: 429 com Retry-After em segundos.

RateLimit-Policy: "padrao";q=120;w=60
RateLimit: "padrao";r=119;t=60

As respostas de sucesso têm cache público de 1 hora: repetir a mesma chamada não precisa ir ao servidor.

Versões e depreciação

A versão está no caminho (/api/v1) e no cabeçalho API-Version de toda resposta. Dentro de uma versão só entram mudanças compatíveis: campos e rotas novos. Mudança incompatível sai numa versão nova (/api/v2), e a anterior continua no ar por pelo menos 6 meses, anunciada com os cabeçalhos Deprecation (RFC 9745) e Sunset (RFC 8594) e nesta página.

Versões ativas: v1 (atual, sem data de fim).

Servidor MCP (ChatGPT e outros agentes)

https://farejaleads.com/mcp — MCP por Streamable HTTP, sem estado e sem autenticação, só leitura. Ferramentas: porte e faturamento estimado de um CNPJ, contratos públicos de um CNPJ, empresas de um ramo que vendem para o governo, panorama de um mercado, maiores fornecedores de um órgão, empresas por atividade e cidade e os guias de prospecção. Nunca devolve sócio, CPF, telefone ou e-mail.

curl -X POST https://farejaleads.com/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Instalação no Claude, ChatGPT, Cursor e VS Code, a lista das ferramentas e o servidor autenticado da sua conta: Servidor MCP. Para agentes que leem texto: /llms.txt diz quando usar o FarejaLeads e lista as páginas principais.