🚀 Primeiros Passos

Do pagamento ao primeiro resultado em menos de 5 minutos.

📦 Acabou de pagar? Siga estes passos:

  1. 1
    Crie sua contaclique aqui. Use o mesmo e-mail que usou ao pagar. É por ele que o sistema identifica seu pagamento.
  2. 2
    Pagou com cartão (Stripe)? O acesso é liberado automaticamente assim que a conta for criada com o e-mail correto.
  3. 3
    Pagou via Pix? Envie o comprovante pelo WhatsApp para liberarmos seu acesso manualmente.
  4. 4
    Acesse o painel em Minha Conta e copie sua Chave de API.

🔑 Quer testar antes de pagar?

Use esta chave temporária gratuita. Ela expira em até 1 hora e acessa apenas os primeiros 100 concursos de cada jogo.

HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg

💡 O que é esta API e como ela funciona?

Imagine a API como um garçom digital: você faz um pedido (chamado de requisição), ele consulta o banco de dados e te entrega o resultado sempre no mesmo formato — chamado JSON, que é basicamente um texto organizado que qualquer linguagem de programação consegue ler.

Você não precisa baixar nada. Basta montar o endereço (URL) correto e acessar pelo navegador, pelo seu sistema ou por qualquer ferramenta como Postman, JavaScript, PHP, Python, etc.

🔗 Como montar a URL:

https://apiloterias.com/v1/{jogo}/{sua-chave}/{o-que-você-quer}

{jogo}

Nome da loteria em minúsculo.

Ex: megasena, quina, lotofacil

{sua-chave}

Sua chave de API pessoal, copiada do painel da conta.

{o-que-você-quer}

Opcional. Sem ele, retorna o último resultado. Com ele, filtra o que você quer.

🔑 Autenticação

Como identificar sua conta em cada chamada.

Toda requisição precisa incluir sua chave de API diretamente na URL, no segundo segmento do caminho — logo após o nome do jogo. Não é necessário configurar cabeçalhos HTTP ou tokens especiais: basta ter a URL correta.

# Formato:

/v1/{jogo}/SUA_CHAVE_AQUI

# Exemplo real:

https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg
📌 Onde encontro minha chave?
No painel da sua conta em Minha Conta, na seção "Chave de API". Ela é gerada automaticamente quando você se cadastra.

O que acontece se a chave for inválida?

401

Chave não existe ou está inativa

{"erro": "Chave de API inválida ou não autorizada."}
402

Plano com pagamento pendente

{"erro": "Seu pagamento foi recusado ou está inativo..."}
429

Limite mensal atingido

{"erro": "Limite mensal de requisições atingido: 500."}

🎲 Loterias Disponíveis

Use exatamente o nome abaixo (em minúsculo, sem acento) na URL.

megasena Mega-Sena
Quarta e Sábado
lotofacil Lotofácil
Todos os dias úteis
quina Quina
Todos os dias úteis
lotomania Lotomania
Terça e Sexta
duplasena Duplasena
Terça, Quinta e Sábado
diadesorte Dia de Sorte
Terça, Quinta e Sábado
timemania Timemania
Terça, Quinta e Sábado
supersete Super Sete
Segunda, Quarta e Sexta
maismilionaria Mais Milionária
Quarta e Sábado
federal Federal
Quarta e Sábado
loteca Loteca
Segunda
ℹ️ Nota: Os jogos loteca e federal não possuem o campo dezenas — por isso os endpoints de análise estatística (frequência, atrasados, sequências) não estão disponíveis para eles.

📡 Endpoints de Resultado

Para buscar resultados de sorteios. Substitua CHAVE pela sua chave de API.

Último resultado

Retorna o concurso mais recente disponível no banco de dados.

GET
/v1/{jogo}/CHAVE
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg

Resultado por número

Busca um concurso específico pelo número do sorteio.

GET
/v1/{jogo}/CHAVE/{numero}
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/50

Substitua 50 pelo número do concurso desejado.

Últimos N resultados

Retorna os últimos N concursos em ordem do mais recente para o mais antigo.

GET
/v1/{jogo}/CHAVE/ultimos{N}
https://apiloterias.com/v1/lotofacil/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/ultimos5

Substitua 5 pela quantidade desejada (ex: ultimos3, ultimos10).

Todos os concursos — paginado

Retorna todos os concursos em páginas de 30 registros cada, do mais recente para o mais antigo.

GET
/v1/{jogo}/CHAVE/todos/pagina{N}
https://apiloterias.com/v1/quina/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/todos/pagina1
💡 Dica: Use a paginação para carregar o histórico completo sem sobrecarregar sua aplicação. Comece pela página 1, verifique se o campo dados retornou 30 registros — se sim, existe uma próxima página.

📊 Endpoints Estatísticos

Análises históricas sobre os sorteios. Não disponível para loteca e federal.

🔥 Números mais sorteados (quentes)

Os N números que mais saíram em todo o histórico do jogo.

GET
/v1/{jogo}/CHAVE/frequencia/quente/{quantidade}
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/frequencia/quente/6

Filtrar por ano: adicione /ano{YYYY} no final — ex: /frequencia/quente/6/ano2024

🧊 Números menos sorteados (frios)

Os N números que menos saíram em todo o histórico do jogo.

GET
/v1/{jogo}/CHAVE/frequencia/frio/{quantidade}
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/frequencia/frio/6

Também aceita filtro por ano: /frequencia/frio/6/ano2024

⏳ Números mais atrasados

Os N números que estão há mais concursos sem sair. Quanto maior o atraso, mais tempo faz que esse número não é sorteado.

GET
/v1/{jogo}/CHAVE/frequencia/mais-atrasados/{quantidade}
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/frequencia/mais-atrasados/10

🔗 Sequências numéricas comuns

Identifica grupos de 3 ou mais números consecutivos que aparecem juntos nos sorteios com mais frequência.

GET
/v1/{jogo}/CHAVE/sequencias-comuns
https://apiloterias.com/v1/lotofacil/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/sequencias-comuns

🔢 Distribuição pares e ímpares

Mostra, em percentual, com que frequência cada combinação de pares/ímpares ocorreu no histórico. Ex: "8 pares e 7 ímpares saíram juntos em 12% dos sorteios".

GET
/v1/{jogo}/CHAVE/pares-impares
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/pares-impares

➕ Distribuição da soma das dezenas

Analisa em quais faixas de soma os sorteios se concentram nos últimos N concursos. Útil para apostar em combinações cujas somas são mais frequentes.

GET
/v1/{jogo}/CHAVE/soma-dezenas/{ultimos-N-concursos}
https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/soma-dezenas/100

O número no final indica quantos concursos recentes analisar (ex: 100 = últimos 100 sorteios).

🎰 Simulador de Apostas

Veja quantas vezes seus números teriam acertado no histórico completo de um jogo.

Simular aposta contra o histórico

Envie seus números e receba quantas vezes você teria ganho em cada faixa de premiação, ano a ano.

POST
/v1/{jogo}/CHAVE/simulador
⚠️ Jogos suportados: megasena lotofacil quina duplasena timemania lotomania

Corpo da requisição (JSON):

{"numeros": [5, 11, 23, 38, 41, 55]}

Exemplo com curl:

curl -X POST "https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/simulador" \
  -H "Content-Type: application/json" \
  -d '{"numeros": [5, 11, 23, 38, 41, 55]}'

Exemplo com JavaScript (fetch):

const res = await fetch('https://apiloterias.com/v1/megasena/HVEbw2AzJIRy4ABU0XJfI19tBcATBsjg/simulador', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ numeros: [5, 11, 23, 38, 41, 55] })
});
const data = await res.json();

Resposta esperada:

{
    "concurso": "megasena",
    "aposta": [5, 11, 23, 38, 41, 55],
    "concursos_analisados": 2750,
    "total_acertos": {
        "acertos_4": 87,
        "acertos_5": 12,
        "acertos_6": 1
    },
    "desempenho_ano_a_ano": {
        "2024": { "acertos_4": 3, "acertos_5": 0, "acertos_6": 0 },
        "2023": { "acertos_4": 5, "acertos_5": 1, "acertos_6": 0 }
    }
}

concursos_analisados: total de sorteios verificados. total_acertos: quantas vezes cada faixa foi alcançada no histórico completo. desempenho_ano_a_ano: o mesmo detalhado por ano.

💻 Exemplos de Código

Código pronto para copiar e usar no seu projeto.

JavaScript — buscar último resultado

JS
// Busca o último resultado da Mega-Sena
const response = await fetch('https://apiloterias.com/v1/megasena/SUA_CHAVE');
const sorteio = await response.json();

console.log('Concurso nº:', sorteio.numero_concurso);
console.log('Data:', sorteio.data_concurso);
console.log('Dezenas:', sorteio.dezenas);
console.log('Acumulou?', sorteio.acumulou === 1 ? 'Sim' : 'Não');

PHP — buscar concurso específico

PHP
// Busca o concurso 2888 da Mega-Sena
$url  = 'https://apiloterias.com/v1/megasena/SUA_CHAVE/2888';
$json = file_get_contents($url);
$sorteio = json_decode($json, true);

echo 'Concurso nº: ' . $sorteio['numero_concurso'] . PHP_EOL;
echo 'Dezenas: '     . implode(', ', $sorteio['dezenas']) . PHP_EOL;

Python — últimos 5 resultados

Python
import requests

url = 'https://apiloterias.com/v1/quina/SUA_CHAVE/ultimos5'
response = requests.get(url)
sorteios = response.json()

for s in sorteios:
    print(f"Concurso {s['numero_concurso']} — {s['data_concurso']}: {s['dezenas']}")

📄 Exemplo de Resposta Completa (Mega-Sena)

Este é o JSON que a API retorna para o último resultado da Mega-Sena:

{
    "id": 2887,
    "numero_concurso": 2887,
    "nome": "Mega Sena",
    "data_concurso": "2025-07-12",
    "local_realizacao": "ESPAÇO DA SORTE",
    "acumulou": 1,
    "dezenas": ["50", "14", "57", "30", "29", "53"],
    "premiacao": [
        {
            "faixa": 1,
            "valor_do_premio": 0,
            "numero_de_ganhadores": 0,
            "quantidade_de_acertos": "6 acertos"
        },
        {
            "faixa": 2,
            "valor_do_premio": 96688.72,
            "numero_de_ganhadores": 39,
            "quantidade_de_acertos": "5 acertos"
        }
    ],
    "ganhadores": [],
    "arrecadacao_total": "64746132.00",
    "data_proximo_concurso": "2025-07-15",
    "valor_estimado_proximo_concurso": "46000000.00",
    "acumulou": 1,
    "created_at": "2025-07-15 16:38:39"
}

📋 Entendendo a Resposta

O que significa cada campo que a API retorna.

Campos principais de um resultado

numero_concurso
number Número do sorteio. Use este para buscar um concurso específico na URL.
nome
string Nome da loteria (ex: "Mega Sena", "Quina").
data_concurso
string Data do sorteio no formato AAAA-MM-DD.
dezenas
array Lista dos números sorteados, em formato de texto (ex: ["01","23","45"]).
acumulou
number 1 = Acumulou (ninguém ganhou o prêmio principal). 0 = Teve ganhador.
premiacao
array Lista de faixas de premiação com valor do prêmio e número de ganhadores.
ganhadores
array Lista com cidades e estados dos ganhadores do prêmio principal.
arrecadacao_total
string Valor total arrecadado no concurso (em reais).
data_proximo_concurso
string Data prevista para o próximo sorteio.
valor_estimado_proximo_concurso
string Estimativa do prêmio principal do próximo sorteio.

Resposta do endpoint paginado (/todos/paginaN)

{
    "pagina": 1,
    "limite": 30,
    "dados": [ /* array com até 30 concursos */ ]
}

Para saber se há mais páginas: se dados retornou 30 registros, provavelmente há uma próxima página. Incremente o número da página até dados retornar menos de 30 registros.

💡 Dica para não-programadores

Para visualizar a resposta de forma legível no navegador, instale a extensão JSON Formatter (disponível para Chrome e Firefox). Com ela, o JSON aparece colorido e com recuos, muito mais fácil de ler.

Ou acesse qualquer URL da API direto no navegador com sua chave de teste — a resposta aparece como texto estruturado.

⚠️ Tratamento de Erros

Quando algo dá errado, a API retorna um código HTTP específico e uma mensagem em JSON explicando o problema.

400 Bad Request — Requisição inválida

Chave de API não foi enviada na URL.

{"erro": "Chave de API não fornecida."}
401 Unauthorized — Não autorizado

A chave enviada não existe no sistema ou está inativa.

{"erro": "Chave de API inválida ou não autorizada."}
402 Payment Required — Pagamento necessário

O plano está ativo no sistema mas o pagamento foi recusado ou cancelado na Stripe.

{"erro": "Seu pagamento foi recusado ou está inativo..."}
401 Plano expirado

O período de acesso da conta chegou ao fim.

{"erro": "Plano expirado. Acesso bloqueado."}
404 Not Found — Não encontrado

O concurso solicitado não existe no banco de dados (ainda não foi realizado ou não está cadastrado).

{"status": "Erro!", "message": "Concurso nº 9999 não encontrado."}
429 Too Many Requests — Limite atingido

O número de requisições do mês foi esgotado. O contador reinicia no 1º dia do mês seguinte.

{"erro": "Limite mensal de requisições atingido: 500."}

🛠️ Como tratar erros no seu código

Verifique sempre o código HTTP da resposta antes de processar o JSON:

const response = await fetch('https://apiloterias.com/v1/megasena/SUA_CHAVE');

if (!response.ok) {
    const erro = await response.json();
    console.error(`Erro ${response.status}:`, erro.erro);
    return;
}

const sorteio = await response.json();
// processar sorteio...

Precisa de Ajuda?

Nossa equipe está pronta para ajudar com sua integração