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 itOne 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 itCheck 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.
game | The game identifier, the same as in the address of its page (for example magnum-4d or sg-toto). |
|---|---|
name | The name of the game. |
operator | Operator: magnum, damacai, sportstoto, singapore, sabah88, sandakan or cashsweep. |
date | Date of the draw, YYYY-MM-DD, in Malaysian time. |
session | day 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. |
time | Time of the draw, HH:mm, in Malaysian time (UTC+8). Singapore keeps the same clock, so its draws need no converting. |
status | Status of the result; see below. |
numbers | The 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. |
bonus | The bonus or additional numbers of a Toto or Lotto draw (the Additional Number on Singapore Toto); an empty list if the game has none. |
url | Address of the draw page on Lotto4ds. |
reportedBy | Only 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.