Skip to the results
Lotto4Ds

Free results API

Many sites and groups copy these numbers by hand every draw day. This service saves them the work. It is free; credit Lotto4ds as the source and link to the site.

Latest results

GET /api/v1/latest

Returns the most recent draws of every game, newest first, with their status. Cached for thirty seconds. CORS open.

Try it

One draw

GET /api/v1/results?date=YYYY-MM-DD&game=&operator=&session=

Every number of a draw. The date is required; the game narrows the answer and, without a game, every draw of the day is returned.

Try it

Check a number

GET /api/v1/check?game=&numbers=&bet=&date=&session=

Answers whether a number or board won and which prize, applying each game's prize rules. Never cached: the answer is sent no-store so your numbers are not served to anyone else. The site's own checker does not use this service: it works in the browser.

Numbers are separated by commas, spaces or hyphens. On a 4D, 5D or 6D game each number is checked on its own, against every prize of the draw: straight by default, or in any order of its digits with bet=permutation. On a Toto or Lotto game, a board is the game's main numbers. Without date the answer uses the latest published draw of the game. The answer carries won, bet, numbers (your numbers), drawNumbers, drawBonus and matches, with the name of each prize won and, where the game's table publishes it, its amount.

Live

GET /live/{date}/{session}.json

The document the site's live board polls. The prizes appear one by one as they are read out. Cached for two seconds. /live/2026-10-01/night.json

What a draw looks like in the JSON

The shape depends on the kind of game. On a 4D board, numbers holds the 1st, 2nd and 3rd prizes in that order, and special and consolation the ten numbers of each; a 5D or 3D draw has the top three prizes only, and a 6D draw one number. On a Toto or Lotto game, numbers holds the balls in ascending order, as every publisher prints them, and bonus the bonus or additional numbers, if any.

gameThe game identifier, the same as in the address of its page (for example magnum-4d or sg-toto).
nameThe name of the game.
operatorOperator: magnum, damacai, sportstoto, singapore, sabah88, sandakan or cashsweep.
dateDate of the draw, YYYY-MM-DD, in Malaysian time.
sessionday or night. Every game here draws at most once a day, in the evening; the field keeps the shape of the API the same as on our sister sites.
timeTime of the draw, HH:mm, in Malaysian time (UTC+8). Singapore keeps the same clock, so its draws need no converting.
statusStatus of the result; see below.
numbersThe numbers with their leading zeros, as text ("0325", not 325; "07", not 7): the top prizes of a 4D, 5D, 3D or 6D draw in prize order, or the balls of a Toto or Lotto draw in ascending order.
bonusThe bonus or additional numbers of a Toto or Lotto draw (the Additional Number on Singapore Toto); an empty list if the game has none.
urlAddress of the draw page on Lotto4ds.
reportedByOnly in /api/v1/results: the sources that reported this result.

Limits, and a key if you need more

Every response carries rate-limit headers, and a refusal includes retry-after in seconds. Without a key you get 60 requests a minute, more than enough for a site or an app.

If you need more, ask for a key: send it as an Authorization bearer or in the X-API-Key header, and the limit goes up to 600 a minute. It is still free.

How to read the status field

  • verified — independent sources agree. Safe to republish.
  • live / live_complete — a first reading, not yet confirmed by the second source. Mark it as provisional if you republish it.

Draws without a published result (not drawn yet, postponed or with sources in disagreement) are left out of the answers.