Result Fields
This is the canonical result payload. It is returned by the Firestore document
4dResult/NewResult and by every result-returning REST endpoint:
A ---- value means the number is not available. For the special (s1–s13)
and consolation-range fields this is either because that number already appeared
in the 1st/2nd/3rd prize, or because the draw has not opened yet. For c1–c10
it only means the draw has not opened yet.
Top level
| Field | Type | Example | Description |
|---|---|---|---|
type | String | P | Abbreviation company name. See Company Codes. |
Everything else is nested under fdData.
Draw identity
| Field | Type | Example | Description |
|---|---|---|---|
fdData.dd | String | 2024-03-14 | Game result date. |
fdData.dn | String | 5135 | Game draw number. |
fdData.day | String | Thu | Game draw day. |
fdData.isToday | Boolean | 0 | Whether this game is today. |
fdData.count | String | 23 | How many number results have opened so far. |
fdData.no_lgt | Integer | 7 | Group of the draw number result. |
Top three prizes
| Field | Type | Example | Description |
|---|---|---|---|
fdData.n1 | String | 5498 | 1st prize number. |
fdData.n1_pos | String | E | Place shown before the 1st prize number. |
fdData.n2 | String | 4891 | 2nd prize number. |
fdData.n2_pos | String | M | Place shown before the 2nd prize number. |
fdData.n3 | String | 1966 | 3rd prize number. |
fdData.n3_pos | String | I | Place shown before the 3rd prize number. |
Special prizes (s1–s13)
Each maps to a fixed place letter, A through M.
| Field | Type | Place | Example |
|---|---|---|---|
fdData.s1 | String | A | 2894 |
fdData.s2 | String | B | 1894 |
fdData.s3 | String | C | 8791 |
fdData.s4 | String | D | 2351 |
fdData.s5 | String | E | 5621 |
fdData.s6 | String | F | 4598 |
fdData.s7 | String | G | 5983 |
fdData.s8 | String | H | 4891 |
fdData.s9 | String | I | 8749 |
fdData.s10 | String | J | 5648 |
fdData.s11 | String | K | 4612 |
fdData.s12 | String | L | 3248 |
fdData.s13 | String | M | 8432 |
A value of ---- means the number already reached the 1st, 2nd or 3rd prize, or
the game has not opened its result yet.
Consolation prizes (c1–c10)
Each maps to a fixed place letter, N through W.
| Field | Type | Place | Example |
|---|---|---|---|
fdData.c1 | String | N | 8856 |
fdData.c2 | String | O | 5489 |
fdData.c3 | String | P | 4311 |
fdData.c4 | String | Q | 1245 |
fdData.c5 | String | R | 1658 |
fdData.c6 | String | S | 1564 |
fdData.c7 | String | T | 1531 |
fdData.c8 | String | U | 1561 |
fdData.c9 | String | V | 4878 |
fdData.c10 | String | W | 4686 |
A value of ---- means the game has not opened its result yet.
Jackpot side numbers
| Field | Type | Example | Description |
|---|---|---|---|
fdData.n4 | String | 5324 | Jackpot side number. |
fdData.n5 | String | 324 | Jackpot side number. |
fdData.n6 | String | 24 | Jackpot side number. |
fdData.n7 | String | 123456 | Jackpot side number. |
fdData.n8 | String | 12345 | Jackpot side number. |
fdData.n9 | String | 65432 | Jackpot side number. |
fdData.n10 | String | 1234 | Jackpot side number. |
fdData.n11 | String | 2847 | Jackpot side number. |
fdData.n12 | String | 512 | Jackpot side number. |
fdData.n13 | String | 847 | Jackpot side number. |
fdData.n14 | String | 12 | Jackpot side number. |
fdData.n15 | String | 65 | Jackpot side number. |
Jackpot amounts
| Field | Type | Example | Description |
|---|---|---|---|
fdData.jp1 | String | RM37,452,125.75 | First jackpot amount. |
fdData.jp2 | String | RM 636,704.63 | Second jackpot amount. |
fdData.jackpotAmount | String | 7,594,109.00 | Game jackpot amount. Only used for type HT19:30 and HT15:30. |
fdData.jp_type | String | LIFE | The 6D type. |
Live streaming
| Field | Type | Example | Description |
|---|---|---|---|
fdData.isLive | String | 1 | 1 = live streaming, 0 = not live streaming. |
fdData.videoUrl | String | https://www.youtube.com/embed/_lSi14pUNhs?rel=0&hd=1 | Video link used to display the live stream and replay the recording. |
Type-specific fields
| Field | Type | Example | Applies to | Description |
|---|---|---|---|---|
fdData.d1 | Integer | 7 | GD6D only | The 6 + 1D result. |
fdData.others | String | see below | SGJP6/45 only | Winner detail, a JSON-encoded array of prize/winner-count pairs. |
fdData.others is a string containing JSON, not an array — parse it a second
time before use:
"[\"-\",\"-\",\"$95,881\",\"7\",\"$1,768\",\"261\",\"$373\",\"676\",\"$50\",\"14,543\",\"$25\",\"18,745\",\"$10\",\"266,194\",\"\"]"
const winners = JSON.parse(result.fdData.others);
// ["-", "-", "$95,881", "7", "$1,768", "261", ...]
Example payload
{
"type": "P",
"fdData": {
"dd": "2024-03-14",
"dn": "5135",
"day": "Thu",
"isToday": false,
"count": "23",
"no_lgt": 7,
"n1": "5498", "n1_pos": "E",
"n2": "4891", "n2_pos": "M",
"n3": "1966", "n3_pos": "I",
"s1": "2894", "s2": "1894", "s3": "8791", "s4": "2351", "s5": "5621",
"s6": "4598", "s7": "5983", "s8": "4891", "s9": "8749", "s10": "5648",
"s11": "4612", "s12": "3248", "s13": "8432",
"c1": "8856", "c2": "5489", "c3": "4311", "c4": "1245", "c5": "1658",
"c6": "1564", "c7": "1531", "c8": "1561", "c9": "4878", "c10": "4686",
"jp1": "RM37,452,125.75",
"jp2": "RM 636,704.63",
"jp_type": "LIFE",
"isLive": "1",
"videoUrl": "https://www.youtube.com/embed/_lSi14pUNhs?rel=0&hd=1"
}
}
Rendering hints
const NOT_AVAILABLE = '----';
function display(value) {
return value === NOT_AVAILABLE ? '—' : value;
}
// Special prizes in place order A..M
const specials = Array.from({length: 13}, (_, i) => fdData[`s${i + 1}`]);
// Consolation prizes in place order N..W
const consolations = Array.from({length: 10}, (_, i) => fdData[`c${i + 1}`]);
const drawOpened = Number(fdData.count) > 0;
const showLivePlayer = fdData.isLive === '1' && Boolean(fdData.videoUrl);