LoteríaYa
Menú

Documentación de la API de resultados

Resultados de las loterías, el chance y el Baloto de Colombia. 44 sorteos activos, archivo desde 2024. JSON, UTF-8, fechas en hora de Colombia.

Por defecto no recibes resultados en disputa ni con una sola fuente detrás. status distingue los verificados de los pendientes: si notificas a personas, filtra por confirmed. Con ?include=preliminary recibes además lo que no llega a ese umbral.

Especificación OpenAPI 3.1 en /openapi.json, si prefieres generar el cliente.

Autenticación

Cabecera X-Api-Key. No hay query param ni Bearer.

Solo guardamos el SHA-256 de tu clave, así que no podemos reenviártela. Si la pierdes, se revoca y se emite otra.

curl -H "X-Api-Key: TU_CLAVE" "https://www.loteriaya.com.co/v1/draws"

¿Todavía no tienes clave? Los planes y cómo pedirla.

Endpoints

Las fechas van en YYYY-MM-DD, hora de Colombia. Los identificadores de sorteo no se traducen: son nombres propios.

Catálogo de sorteos

GET/v1/draws

Los sorteos que cubrimos, con su calendario y su hora. Sus identificadores son los que aceptan los demás endpoints.

curl -H "X-Api-Key: TU_CLAVE" \
  "https://www.loteriaya.com.co/v1/draws"

Respuestas

  • 200El catálogo completo.
  • 401Falta la clave o no es válida.
  • 429Límite por minuto o cuota mensual agotada.
  • 500Error interno.

Todos los resultados de un día

GET/v1/results

Un día sin resultados devuelve 200 con results vacío, no un 404.

dateen la query · obligatorio

Fecha en YYYY-MM-DD, hora de Colombia.

includeen la query · opcional

Con preliminary recibes también los resultados en disputa y los de una sola fuente. Cualquier otro valor devuelve invalid_parameter.

curl -H "X-Api-Key: TU_CLAVE" \
  "https://www.loteriaya.com.co/v1/results?date=2026-08-25"

Respuestas

  • 200Los resultados de ese día. results vacío si aún no hay ninguno.
  • 400Parámetro ausente o con formato erróneo.
  • 401Falta la clave o no es válida.
  • 403La fecha es anterior al histórico que cubre tu plan. El dato existe.
  • 429Límite por minuto o cuota mensual agotada.
  • 500Error interno.

Serie histórica de un sorteo

GET/v1/results/{draw}

Máximo 366 días por petición. Se pagina por rango.

drawen la ruta · obligatorio

Identificador del sorteo, tal y como lo devuelve /v1/draws.

fromen la query · obligatorio

Primer día del rango, incluido.

toen la query · obligatorio

Último día del rango, incluido. No puede ser anterior a from.

includeen la query · opcional

Con preliminary recibes también los resultados en disputa y los de una sola fuente. Cualquier otro valor devuelve invalid_parameter.

curl -H "X-Api-Key: TU_CLAVE" \
  "https://www.loteriaya.com.co/v1/results/loteria-del-huila?from=2026-08-01&to=2026-08-25"

Respuestas

  • 200Los resultados del rango, del más reciente al más antiguo.
  • 400Parámetro con formato erróneo, from posterior a to, o rango de más de 366 días.
  • 401Falta la clave o no es válida.
  • 403El rango empieza antes del histórico que cubre tu plan.
  • 404Ese identificador de sorteo no existe.
  • 429Límite por minuto o cuota mensual agotada.
  • 500Error interno.

Último resultado de un sorteo

GET/v1/results/{draw}/latest

Si el sorteo de hoy aún no alcanza el umbral, recibes el de la sesión anterior. Comprueba draw_date antes de notificar.

drawen la ruta · obligatorio

Identificador del sorteo, tal y como lo devuelve /v1/draws.

includeen la query · opcional

Con preliminary recibes también los resultados en disputa y los de una sola fuente. Cualquier otro valor devuelve invalid_parameter.

curl -H "X-Api-Key: TU_CLAVE" \
  "https://www.loteriaya.com.co/v1/results/loteria-del-huila/latest"

Respuestas

  • 200El último resultado publicado.
  • 400Parámetro ausente o con formato erróneo.
  • 401Falta la clave o no es válida.
  • 404Ese sorteo no existe, o todavía no tiene ningún resultado publicado.
  • 429Límite por minuto o cuota mensual agotada.
  • 500Error interno.

Resultado de un sorteo en una fecha

GET/v1/results/{draw}/{date}

pending_confirmation y no_result comparten el 404 y no significan lo mismo: ante el primero reintenta en unos minutos, el dato existe. Ante el segundo, no.

drawen la ruta · obligatorio

Identificador del sorteo, tal y como lo devuelve /v1/draws.

dateen la ruta · obligatorio

Fecha del sorteo en YYYY-MM-DD, hora de Colombia.

includeen la query · opcional

Con preliminary recibes también los resultados en disputa y los de una sola fuente. Cualquier otro valor devuelve invalid_parameter.

curl -H "X-Api-Key: TU_CLAVE" \
  "https://www.loteriaya.com.co/v1/results/loteria-del-huila/2026-08-25"

Respuestas

  • 200El resultado de ese sorteo en esa fecha.
  • 400Parámetro ausente o con formato erróneo.
  • 401Falta la clave o no es válida.
  • 403La fecha es anterior al histórico que cubre tu plan.
  • 404Sorteo inexistente, día sin resultado, o resultado que todavía no alcanza el umbral de entrega.
  • 429Límite por minuto o cuota mensual agotada.
  • 500Error interno.

Forma de un resultado

Un resultado. Las claves comunes salen siempre, con null cuando no aplican.

{
  "draw": "loteria-del-huila",
  "name": "Lotería del Huila",
  "category": "loteria",
  "draw_date": "2026-08-25",
  "draw_number": "4770",
  "winning_number": "7401",
  "winning_series": "168",
  "top_prize": 2000000000,
  "secondary_prizes": [
    {
      "label": "SECO DE $100 MILLONES",
      "type": "secondary",
      "number": "6567",
      "series": "028",
      "amount": 100000000
    }
  ],
  "status": "confirmed",
  "published_at": "2026-08-25T23:01:02-05:00"
}

Los endpoints de lista devuelven un sobre, no un array desnudo:

GET /v1/results/loteria-del-huila?from=2026-08-01&to=2026-08-25

{
  "draw": "loteria-del-huila",
  "from": "2026-08-01",
  "to": "2026-08-25",
  "total": 4,
  "results": [ … ]
}
CampoTipoQué es
drawstring

Identificador del sorteo. No se traduce: es un nombre propio.

namestring

Nombre del sorteo.

categorystring

Categoría del sorteo. Determina qué campos adicionales trae.

draw_datestring

Fecha del sorteo en hora de Colombia.

draw_numberstring o null

Número de sorteo que le da el operador, cuando lo publica.

winning_numberstring o null

Número ganador. Cadena, porque el cero a la izquierda es significativo: "0207" no es 207. En Baloto y Revancha es null; el resultado está en balls.

winning_seriesstring o null

Serie ganadora. Cadena, por el mismo motivo.

top_prizeinteger o null

Premio mayor en pesos colombianos, sin decimales.

secondary_prizesarray o null

Secos, aproximaciones y especiales. null si no hay.

statusstring

confirmed: verificado contra la fuente oficial del sorteo.

preliminary: pendiente de esa verificación. Puede cambiar.

disputed: hay una discrepancia abierta. No lo uses.

Por defecto recibes confirmed y preliminary, nunca disputed.

published_atstring

Cuándo entró el resultado en el archivo, con el offset de Colombia. No es la hora del sorteo y no se actualiza, ni siquiera al verificarse.

fifth_digit(según categoría)string o null

Solo en chance: la quinta cifra, cuando el sorteo la tiene.

balls(según categoría)array

Solo en baloto: las balotas, en orden ascendente.

super_ball(según categoría)integer o null

Solo en baloto: la superbalota.

no_draw(según categoría)boolean

Solo en los días declarados sin sorteo. Distingue «ese día no se jugó» de «todavía no ha salido».

Los campos marcados según categoría salen solo donde aplican. Los demás salen siempre, con null cuando no hay valor.

Errores

Todos los errores tienen esta forma. code es estable; message puede cambiar de redacción sin previo aviso.

{
  "error": {
    "code": "quota_exceeded",
    "message": "Monthly quota of 50000 requests exhausted."
  }
}

Los códigos posibles: missing_key · invalid_key · rate_limited · quota_exceeded · unknown_draw · history_not_included · no_result · pending_confirmation · invalid_parameter · range_too_large · internal_error.

no_result y pending_confirmation comparten el 404: ante el segundo reintenta en unos minutos, el dato existe.

Cuotas

Toda respuesta autenticada lleva tu consumo. Un 401 no: sin clave válida no hay plan del que informar.

X-RateLimit-Limit: 50000        peticiones de tu plan este mes
X-RateLimit-Remaining: 49873    lo que te queda
X-RateLimit-Reset: 1788238800   epoch del primer instante del mes siguiente

Las cifras del ejemplo son las del plan Profesional. El tuyo llega en la cabecera, no hace falta que lo codifiques.

En un 429 se añade Retry-After en segundos: hasta el próximo minuto si el rechazo fue por el límite por minuto, y hasta el cambio de mes si fue por la cuota.

Webhooks

En vez de consultar, recibes un POST firmado con HMAC-SHA256 en tres momentos: cuando hay número, cuando se verifica y si el operador lo rectifica después.

Se configuran al dar de alta la clave. Escríbenos a contacto@loteriaya.com.co y te mandamos la especificación de la firma y los eventos.

Uso de los datos

Puedes almacenar los resultados en tu base y usarlos dentro de tu producto. Dos condiciones, que van por escrito en el acuerdo:

  • Atribución: enlace visible a LoteríaYa donde muestres los resultados.
  • Sin redistribución: el conjunto de datos no se revende ni se cede a terceros como producto de datos.

¿Algo que esta página no responde? contacto@loteriaya.com.co.