Guia do Milheiro_

Developer Hub · API v1

Documentação da API do Milheiro

Construa bots, dashboards e planilhas automatizadas com dados oficiais e em tempo real sobre cotações de milhas, bônus de transferência e comparações de passagens aéreas no Brasil.

🛡️ Políticas de Rate LimitJanela Deslizante de 60 segundos

Para garantir alta disponibilidade para toda a comunidade, implementamos limites automáticos por IP:

Tipo de EndpointLimite por IPAutenticaçãoCORS
Leitura Pública (Cotação / Promoções)60 requisições / minutoNenhuma (Livre)Liberado (*)
Ingestão de Dados (POST Promoções)120 requisições / minutoBearer TokenProtegido
Consulta de Referências de Rotas100 requisições / minutoNenhumaLiberado (*)

Headers HTTP retornados: Todas as respostas incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Caso excedido, a resposta será 429 Too Many Requests com o tempo de espera em Retry-After.

⚡ Início Rápido (Quickstart)

Escolha sua ferramenta favorita para começar a consumir a API em menos de 1 minuto:

1. Google Sheets (Sem código)

Cole esta fórmula exata na célula A1 de uma nova planilha Google Sheets:

=IMPORTDATA("https://www.guiadomilheiro.com/api/v1/cotacao?format=csv")

2. cURL / Terminal

curl -s https://www.guiadomilheiro.com/api/v1/cotacao

3. JavaScript / TypeScript

const response = await fetch('https://www.guiadomilheiro.com/api/v1/cotacao'); const { programs } = await response.json(); console.log('Cotação Smiles:', programs.smiles.price); console.log('Cotação LATAM Pass:', programs.latampass.price);

4. Python

import requests url = "https://www.guiadomilheiro.com/api/v1/cotacao" data = requests.get(url).json() for prog_id, info in data["programs"].items(): print(f"{info['name']}: R$ {info['price']:.2f} (24h: {info['change_24h']})")

Catálogo de Endpoints

GET/api/v1/cotacao

Retorna as cotações de mercado atualizadas para Smiles, LATAM Pass, Azul Fidelidade, Livelo, Esfera e TAP.

Parâmetros de Consulta (Query Params)

ParâmetroTipoPadrãoDescrição
programstringtodosFiltra por programa específico: smiles, latampass, azul, livelo, esfera, tap.
formatstringjsonUse format=csv para obter retorno em formato compatível com Google Sheets ou Excel.

Exemplo de Resposta (200 OK)

{ "status": "ok", "updated_at": "2026-09-13T22:00:00.000Z", "attribution": "Guia do Milheiro — API Oficial do Milheiro", "currency": "BRL", "count": 6, "programs": { "smiles": { "name": "Smiles", "price": 15.20, "priceRef": "R$ 15,20", "range": "R$ 14,00 a R$ 17,50", "change24h": "+0,66%", "trend": "up", "liquidity": "Alta" }, "latampass": { "name": "LATAM Pass", "price": 23.80, "priceRef": "R$ 23,80", "range": "R$ 21,00 a R$ 26,50", "change24h": "-0,42%", "trend": "down", "liquidity": "Alta" } } }
GET/api/v1/promotions

Lista as promoções de milhas ativas detectadas pelo monitor do Guia do Milheiro.

Parâmetros de Consulta (Query Params)

ParâmetroTipoPadrãoDescrição
daysnumber30Janela de dias para buscar ofertas (1 a 365).
limitnumber100Quantidade máxima de itens retornados (1 a 500).
programstringtodosFiltra ofertas por programa (ex: Smiles).
POST/api/v1/promotions

Ingestão de lotes de promoções coletadas via scripts parceiros ou cron jobs locais.

Header Obrigatório: Authorization: Bearer <SUA_CHAVE_API>

curl -X POST https://www.guiadomilheiro.com/api/v1/promotions \ -H "Authorization: Bearer SUA_CHAVE_SECRETA" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "program": "Smiles", "text": "Transfira pontos e ganhe até 100% de bônus.", "bonus_pct": 100, "source_name": "Página Oficial", "source_url": "https://www.smiles.com.br/promocoes" } ] }'
GET/api/v1/comparador/lookup?mode=route&route=GRU-THE

Consulta benchmarks históricos de emissões para pares de aeroportos (ex: GRU-THE, CGH-SDU, GRU-MIA).

Termos de Uso da API

A API Pública do Guia do Milheiro é fornecida gratuitamente com as seguintes diretrizes de boa convivência:

  • Atribuição Simples: Ao utilizar nossos dados em ferramentas abertas, sites ou planilhas públicas, mencione a fonte com um link para guiadomilheiro.com.
  • Respeito ao Rate Limit: Não utilize múltiplos IPs ou proxies rotativos para burlar o limite de 60 requisições por minuto.
  • Cache Recomendado: As cotações e promoções têm validade estável; recomendamos armazenar em cache por pelo menos 15 a 30 minutos em sua aplicação para obter máxima performance.

Dúvidas Frequentes de Desenvolvedores

Como lidar com o erro 429 (Rate Limit)?

Quando receber HTTP 429, inspecione o cabeçalho Retry-After na resposta. Ele indica exatamente quantos segundos seu cliente deve aguardar antes de realizar a próxima chamada.

A API funciona diretamente no frontend (navegador)?

Sim! Os endpoints de leitura possuem cabeçalhos Access-Control-Allow-Origin: * habilitados, portanto você pode chamar via fetch() diretamente no React, Vue, Angular ou vanilla JS sem erros de CORS.

Como solicitar limites maiores ou parcerias?

Caso necessite de volumes elevados de requisições ou feeds dedicados para empresas de turismo e fintechs, entre em contato através da nossa página de Contato.