AtaVigente

AtaVigente API

v1.0

Acesse dados estruturados de atas de registro de precos vigentes em todo o Brasil. REST API com atualizacao automatica 4x ao dia, 27 UFs e conformidade LGPD.

41.000+ atas
27 estados
4x/dia atualizado
LGPD

Base URL

https://atavigente.org/api/v1

Cadastro Rapido

Gere sua API key em segundos

Gerar API Key Gratuita
Plano Free com 100 requests/dia. Sem cartao de credito.
1 key por email a cada 30 dias
Seus dados sao protegidos pela LGPD. CPF/CNPJ validado e nunca compartilhado.
2

Faca sua primeira chamada

bash
curl -H "X-API-Key: SUA_API_KEY" \
  "https://atavigente.org/api/v1/estatisticas"
3

Receba dados estruturados em JSON

json
{
  "success": true,
  "data": {
    "total_atas_vigentes": 41476,
    "total_itens": 145360,
    "total_fornecedores": 18045,
    "estados_cobertos": 27,
    "valor_total_disponivel": 51876782563.02,
    "por_uf": { "DF": 16009, "SP": 4674, "RJ": 2124,... },
    "top_categorias": { "Saude": 14593, ... }
  }
}

Autenticacao

Todas as chamadas exigem uma API key valida. Envie via header ou query parameter:

Via Header (recomendado)

http
GET /api/v1/atas HTTP/1.1
Host: atavigente.org
X-API-Key: atv1_sua_key_aqui

Via Query Parameter

http
GET /api/v1/atas?api_key=atv1_sua_key_aqui

Rate Limiting

Cada plano tem um limite diario de requests. O contador reseta a meia-noite (UTC-3). Toda resposta inclui headers de controle:

X-RateLimit-Limit — Limite total do plano
X-RateLimit-Remaining — Requests restantes
X-RateLimit-Reset — Timestamp Unix do reset

Endpoints

Exemplos por Linguagem

Python

python
import requests

API_KEY = "SUA_API_KEY"
BASE_URL = "https://atavigente.org/api/v1"

headers = {"X-API-Key": API_KEY}

# Buscar atas de informatica em SP
resp = requests.get(f"{BASE_URL}/atas", headers=headers, params={
    "uf": "SP",
    "categoria": "informatica",
    "por_pagina": 10
})

data = resp.json()
for ata in data["data"]:
    print(f"{ata['numero_ata']} - {ata['objeto'][:60]}")
    print(f"  Valor disponivel: R$ {ata['valor_disponivel']:,.2f}")
    print(f"  Vence em: {ata['dias_restantes']} dias")

JavaScript / Node.js

javascript
const API_KEY = "SUA_API_KEY";
const BASE_URL = "https://atavigente.org/api/v1";

const resp = await fetch(`${BASE_URL}/atas?uf=SP&por_pagina=5`, {
  headers: { "X-API-Key": API_KEY }
});

const { data, total } = await resp.json();
console.log(`${total} atas encontradas`);
data.forEach(ata => {
  console.log(`${ata.numero_ata}: ${ata.objeto}`);
});

Codigos de Erro

HTTPCodigoDescricao
401api_key_requiredAPI key nao enviada
401invalid_keyAPI key invalida
403key_disabledKey desativada pelo admin
404not_foundRecurso nao encontrado
429rate_limit_exceededLimite diario atingido
500internal_errorErro interno

Todos os erros retornam JSON: {"error": "codigo", "message": "descricao"}

Planos

Comece gratis. Faca upgrade quando precisar.

Free

Testes e prototipos

Gratis

100 req/dia

Gratis

  • Todos os endpoints
  • Cache Redis
  • Rate limit headers
  • Suporte por email

Basic

Pequenas integracoes

R$47/mes

3.000 req/dia

R$0,016/req

  • Tudo do Free
  • 30x mais requests
  • Prioridade no cache
  • Suporte por email
Mais popular

Pro

Sistemas em producao

R$97/mes

15.000 req/dia

R$0,006/req

  • Tudo do Basic
  • 150x mais requests
  • Cache dedicado
  • Suporte prioritario

Scale

Alto volume e ERPs

R$297/mes

100.000 req/dia

R$0,003/req

  • Tudo do Pro
  • 1.000x mais requests
  • SLA 99.5%
  • Suporte dedicado

Para fazer upgrade, gere sua API key primeiro. O upgrade e aplicado automaticamente na key cadastrada.

Posso mudar de plano depois?

Sim. Faca upgrade a qualquer momento. O novo limite entra em vigor na hora.

O que acontece ao atingir o limite?

A API retorna 429. Seu acesso volta automaticamente no dia seguinte.

Preciso de mais de 100k req/dia?

Fale conosco: contato@atavigente.org para um plano personalizado.

Formas de pagamento?

Cartao de credito, boleto e Pix via Stripe. Cancele quando quiser.

Seguranca e LGPD

API Keys

  • Hash SHA-256 (nunca em texto puro)
  • CPF/CNPJ validado com digitos verificadores
  • Prefixo visivel para identificacao
  • Revogaveis a qualquer momento

Dados

  • Somente leitura (zero escrita)
  • Email/telefone nunca expostos
  • Apenas dados publicos do PNCP
  • Cache Redis (2-5 min)

LGPD

  • Dados pessoais protegidos
  • Apenas razao social e CNPJ expostos
  • Sem rastreamento de usuarios
  • Lei 13.709/2018

Infraestrutura

  • Rate limit por key via Redis
  • Atualizacao 4x/dia via PNCP
  • IA com 98% de precisao
  • 27 UFs cobertas

Dicas de Implantacao

Boas praticas para integrar a API no seu sistema.

1. Armazene sua key com seguranca

Use variaveis de ambiente. Nunca no codigo-fonte.

bash
# .env (NUNCA commitar)
ATAVIGENTE_API_KEY=atv_sua_chave_aqui

# .gitignore
.env
2. Trate erros e retry
python
import requests, time

def buscar_atas(params, max_retries=3):
    for tentativa in range(max_retries):
        resp = requests.get("https://atavigente.org/api/v1/atas",
            headers={"X-API-Key": API_KEY}, params=params, timeout=30)

        if resp.status_code == 200:
            return resp.json()
        if resp.status_code == 429:  # Limite atingido
            time.sleep(int(resp.headers.get("Retry-After", 60)))
            continue
        resp.raise_for_status()
    raise Exception("Max retries")
3. Use paginacao
python
def coletar_todas_atas(uf="SP"):
    todas, pagina = [], 1
    while True:
        data = buscar_atas({"uf": uf, "pagina": pagina, "por_pagina": 50})
        todas.extend(data["data"])
        if pagina >= data["total_paginas"]:
            break
        pagina += 1
    return todas
4. Monitore seu consumo
python
# Headers em cada resposta
resp = requests.get(url, headers={"X-API-Key": API_KEY})
print(f"Usado: {resp.headers['X-RateLimit-Used']}")
print(f"Restante: {resp.headers['X-RateLimit-Remaining']}")

AtaVigente API v1.0 — atavigente.org · Duvidas? contato@atavigente.org