LOTTERYCHECKS · LOTTERY COLLECTION
For developers
Free lottery results API, no key required
Start in 10 seconds
Paste the line below into a terminal or open the URL in a browser. No headers, no token. You get the latest draw of that lottery with every prize.
With curl
curl "https://lotterychecks.com/api/public/results?lottery=thai-government&limit=1&lang=en"With JavaScript
// Today's lottery results (the latest draw), from a browser or Node.js
const res = await fetch("https://lotterychecks.com/api/public/results?lottery=thai-government&limit=1&lang=en");
const json = await res.json();
const draw = json.data[0];
console.log(draw.displayName); // 16 August 2026
for (const prize of draw.prizes) {
console.log(prize.name, prize.numbers.join(" ")); // 1st Prize 004615
}The base URL of every endpoint is https://lotterychecks.com/api/public
Answers in your language
Add lang to any endpoint to get lottery names, prize names, draw dates and messages in that language: th, en, lo, my, vi. Without it the answer is Thai, exactly as before. Numbers and field names never change with the language, and times are always Thai time.
Supported lotteries (49 types)
| lottery value | Lottery | Draws |
|---|---|---|
thai-government | Thai Government Lottery | 1st and 16th of every month, results from 14:30 (Thai time) |
lao-lottery | Lao Development Lottery | Every Monday and Thursday, results around 20:30 (Thai time) |
gsb-lottery | GSB Lottery | 1st and 16th of every month |
hanoi-morning | Hanoi Morning | Every day, results around 08:30 (Thai time) |
hanoi-asean | Hanoi ASEAN | Every day, results around 09:30 (Thai time) |
hanoi-star | Hanoi Star | Every day, results around 12:30 (Thai time) |
hanoi-tv | Hanoi TV | Every day, results around 14:30 (Thai time) |
hanoi-redcross | Hanoi Red Cross | Every day, results around 16:30 (Thai time) |
hanoi-adhoc | Hanoi Special Task | Every day, results around 16:30 (Thai time) |
hanoi-svip | Hanoi SVIP | Every day, results around 16:45 (Thai time) |
hanoi-special | Hanoi Special | Every day, results around 17:30 (Thai time) |
hanoi-union | Hanoi Union | Every day, results around 17:30 (Thai time) |
hanoi-normal | Hanoi Normal | Every day, results around 18:30 (Thai time) |
hanoi-vip | Hanoi VIP | Every day, results around 19:30 (Thai time) |
hanoi-develop | Hanoi Development | Every day, results around 19:30 (Thai time) |
hanoi-4d | Hanoi 4D | Every day, results around 21:00 (Thai time) |
hanoi-late | Hanoi Late | Every day, results around 22:30 (Thai time) |
hanoi-extra | Hanoi Extra | Every day, results around 22:30 (Thai time) |
lao-patuxay | Lao Patuxay Lottery | Every day, results around 05:45 (Thai time) |
lao-santipap | Lao Santipap Lottery | Every day, results around 06:45 (Thai time) |
lao-citizen | Lao Citizen Lottery | Every day, results around 07:45 (Thai time) |
lao-extra | Lao Extra Lottery | Every day, results around 08:30 (Thai time) |
lao-morning | Lao Morning Lottery | Every day, results around 08:30 (Thai time) |
lao-development-morning | Lao Development Morning Lottery | Every day, results around 09:00 (Thai time) |
lao-development-morning-vip | Lao Development Morning VIP Lottery | Every day, results around 10:00 (Thai time) |
lao-tv | Lao TV Lottery | Every day, results around 10:30 (Thai time) |
lao-mungkung | Lao Mungkung Lottery | Every day, results around 11:30 (Thai time) |
lao-special-midday | Lao Special Midday Lottery | Every day, results around 12:00 (Thai time) |
lao-special | Lao Special Lottery | Every day, results around 12:00 (Thai time) |
lao-plus | Lao Plus Lottery | Every day, results around 12:05 (Thai time) |
lao-development-midday | Lao Development Midday Lottery | Every day, results around 12:30 (Thai time) |
lao-sabaidee | Lao Sabaidee Lottery | Every day, results around 12:30 (Thai time) |
lao-kaownah | Lao Kaownah Lottery | Every day, results around 13:30 (Thai time) |
lao-hd | Lao HD Lottery | Every day, results around 13:45 (Thai time) |
lao-jaroen | Lao Jaroen Lottery | Every day, results around 14:30 (Thai time) |
lao-nakhonluang | Lao Nakhon Luang Lottery | Every day, results around 15:30 (Thai time) |
lao-munkong | Lao Munkong Lottery | Every day, results around 15:30 (Thai time) |
lao-star | Lao Star Lottery | Every day, results around 15:45 (Thai time) |
lao-niyom | Lao Niyom Lottery | Every day, results around 16:30 (Thai time) |
lao-rumruay | Lao Rumruay Lottery | Every day, results around 16:30 (Thai time) |
lao-mongkol | Lao Mongkol Lottery | Every day, results around 18:30 (Thai time) |
lao-super | Lao Super Lottery | Every day, results around 19:00 (Thai time) |
lao-asean | Lao ASEAN Lottery | Every day, results around 21:00 (Thai time) |
lao-rungreung | Lao Rungreung Lottery | Every day, results around 21:30 (Thai time) |
lao-vip | Lao VIP Lottery | Every day, results around 21:30 (Thai time) |
lao-union-vip | Lao Union VIP Lottery | Every day, results around 21:30 (Thai time) |
lao-star-vip | Lao Star VIP Lottery | Every day, results around 22:00 (Thai time) |
lao-aiyara | Lao Aiyara Lottery | Every day, results around 23:30 (Thai time) |
lao-redcross | Lao Red Cross Lottery | Every day, results around 23:30 (Thai time) |
Results by draw
Today's results and past draws, newest first. status tells you whether every prize of the draw has been announced (complete) or not yet (announced), and pendingPrizes lists the prizes still to come. In a draw that isn't complete, a prize missing from the list has not been announced yet; it doesn't mean the prize doesn't exist.
GET https://lotterychecks.com/api/public/results
| Parameter | Required | Default | Description |
|---|---|---|---|
lottery | Optional | thai-government | The lottery you want. A wrong value returns 400 with the full list of supported values. |
limit | Optional | 1 | Number of draws, newest first. The default 1 is the latest draw; at most 20 per request. |
lang | Optional | th | Language of names, dates and messages. Leave it out for Thai. |
Example request
https://lotterychecks.com/api/public/results?lottery=thai-government&limit=1&lang=enExample response
{
"success": true,
"attribution": {
"source": "LotteryChecks",
"url": "https://lotterychecks.com",
"note": "Free to use. Please add a credit link back to LotteryChecks."
},
"data": [
{
"lottery": "thai-government",
"lotteryName": "Thai Government Lottery",
"drawDate": "2026-08-16",
"displayName": "16 August 2026",
"status": "complete",
"pendingPrizes": [],
"publishedAt": "2026-08-16T09:00:00.000Z",
"publishedAtText": "16 Aug 2026, 16:00 (Thailand time)",
"prizes": [
{
"slug": "first-prize",
"name": "1st Prize",
"amount": "6000000.00",
"numbers": [
"004615"
]
},
{
"slug": "first-three-digit",
"name": "First 3 Digits",
"amount": "4000.00",
"numbers": [
"517",
"884"
]
},
{
"slug": "last-three-digit",
"name": "Last 3 Digits",
"amount": "4000.00",
"numbers": [
"109",
"760"
]
},
{
"slug": "last-two-digit",
"name": "Last 2 Digits",
"amount": "2000.00",
"numbers": [
"53"
]
}
]
}
]
}The example is shortened and shows the answer with lang set to this page's language.
Limit: 120 requests per minute per IP · cached at the CDN for 300 seconds
Check a number against the latest draw
Send a 2- to 7-digit number and get back which prize it wins and how much, using the same checking rules as the checker on our website. Look at complete before concluding that a number did not win: when complete is false, the number may still match a prize that hasn't been announced (see notice).
GET https://lotterychecks.com/api/public/check
| Parameter | Required | Default | Description |
|---|---|---|---|
lottery | Optional | thai-government | The lottery you want. A wrong value returns 400 with the full list of supported values. |
number | Required | — | The number to check. A full ticket number is matched against every prize including the near-1st prizes, 3 digits against both the first and last 3 digits, and 2 digits against the last 2.2 to 7 digits |
lang | Optional | th | Language of names, dates and messages. Leave it out for Thai. |
Example request
https://lotterychecks.com/api/public/check?lottery=thai-government&number=004615&lang=enExample response
{
"success": true,
"data": {
"number": "004615",
"isWinner": true,
"drawDate": "2026-08-16",
"displayName": "16 August 2026",
"complete": true,
"pendingPrizes": [],
"notice": null,
"matches": [
{
"prize": "1st Prize",
"amount": "6000000.00",
"winningNumber": "004615"
}
],
"totalAmount": 6000000
},
"disclaimer": "This check is for convenience only. Prize claims follow the official announcement of the issuing lottery office.",
"attribution": {
"source": "LotteryChecks",
"url": "https://lotterychecks.com"
}
}The example is shortened and shows the answer with lang set to this page's language.
Limit: 60 requests per minute per IP · answered fresh every time, never cached
Number frequency statistics
How often every number has come up in each prize group, with the date it last came up and how many draws it has been missing, calculated from every real draw on record.
GET https://lotterychecks.com/api/public/stats
| Parameter | Required | Default | Description |
|---|---|---|---|
lottery | Optional | thai-government | The lottery you want. A wrong value returns 400 with the full list of supported values. |
lang | Optional | th | Language of names, dates and messages. Leave it out for Thai. |
Example request
https://lotterychecks.com/api/public/stats?lottery=thai-government&lang=enExample response
{
"success": true,
"attribution": {
"source": "LotteryChecks",
"url": "https://lotterychecks.com/en/stats",
"note": "Free to use. Please add a credit link back to LotteryChecks.",
"dataSource": "Prize announcements of the Government Lottery Office (glo.or.th)"
},
"lottery": "thai-government",
"dataset": {
"draws": 437,
"firstDate": "2015-09-01",
"lastDate": "2026-08-16",
"updatedAt": "2026-08-16T09:00:00.000Z"
},
"prizes": [
{
"prize": "last-two-digit",
"prizeName": "Last 2 Digits",
"draws": 437,
"picks": 437,
"possibleValues": 100,
"expectedPerNumber": 4.37,
"numbers": [
{
"number": "53",
"count": 9,
"lastDate": "2026-08-16",
"drawsSince": 0
}
],
"neverDrawn": []
}
]
}The example is shortened and shows the answer with lang set to this page's language.
Limit: 60 requests per minute per IP · cached at the CDN for 300 seconds
Calculations from past results
A snapshot of the analysis of real results, per lottery, data window and prize type, with the formula version, sample size, scores and their breakdown.
GET https://lotterychecks.com/api/public/calculations
| Parameter | Required | Default | Description |
|---|---|---|---|
lottery | Optional | thai-government | The lottery you want. It is read from the lottery registry in the database, so new lotteries work without a new endpoint.slug of any active lottery |
window | Optional | 30 | How many past draws to use. If fewer exist, the real number is used and reported in sampleSize. |
prize | Optional | — | Only this prize type. Leave it out to get every supported prize.prize slug of that lottery |
lang | Optional | th | Language of names, dates and messages. Leave it out for Thai. |
Example request
https://lotterychecks.com/api/public/calculations?lottery=thai-government&window=30&prize=last-two-digit&lang=enExample response
{
"success": true,
"lottery": {
"slug": "thai-government",
"name": "Thai Government Lottery"
},
"sourceDraw": {
"id": "draw-id",
"drawDate": "2026-08-16"
},
"window": "30",
"requestedDraws": 30,
"sampleSize": 30,
"quality": "high",
"formulaVersion": "1.0.0",
"calculatedAt": "2026-08-29T13:36:00.000Z",
"disclaimer": "Scores are statistics computed from past results. They are not probabilities and do not guarantee any future result.",
"data": {
"prizes": [
{
"prize": {
"slug": "last-two-digit",
"name": "Last 2 Digits",
"digitCount": 2
},
"sampleSize": 30,
"digitRanking": [
{
"candidate": "0",
"score": 78.4,
"breakdown": {
"frequency30": 84.2,
"recent": 72.6
}
}
],
"pairRanking": [
{
"candidate": "03",
"score": 76.1,
"breakdown": {
"historical": 80,
"position": 73.4
}
}
]
}
]
}
}The example is shortened and shows the answer with lang set to this page's language.
Limit: 60 requests per minute per IP · cached at the CDN for 300 seconds
Examples in other languages
The answer is plain JSON that works with any language. These two are the ones people ask about most.
PHP
<?php
// Today's lottery results with PHP. Caching for 300 seconds is enough: results only change when a draw is announced.
$url = "https://lotterychecks.com/api/public/results?lottery=thai-government&limit=1&lang=en";
$json = json_decode(file_get_contents($url), true);
$draw = $json["data"][0];
echo $draw["displayName"] . "\n";
foreach ($draw["prizes"] as $prize) {
echo $prize["name"] . ": " . implode(", ", $prize["numbers"]) . "\n";
}Python
import requests
url = "https://lotterychecks.com/api/public/results"
r = requests.get(url, params={"lottery": "lao-lottery", "limit": 5, "lang": "en"}, timeout=10)
r.raise_for_status()
for draw in r.json()["data"]:
print(draw["drawDate"], draw["prizes"][0]["numbers"])OpenAPI and README
Don't want to read this whole page? These two files tell your tools everything they need.
- OpenAPI 3.1 — Generate a client automatically, or open it straight in Postman or Swagger UI.
- README (Markdown) — A short Markdown version of this documentation to paste into your project's README.
Both files are written in Thai. The endpoints, parameters and field names are the same in every language.
How to credit us
The only condition for free use is that your readers know where the data comes from. Paste this under your results. We can't enforce it and don't intend to, but it is what keeps this API free.
Credit line (HTML)
<p>
Lottery results from
<a href="https://lotterychecks.com/en" target="_blank" rel="noopener">LotteryChecks</a>
</p>Status codes and errors
| Status | Meaning | What to do |
|---|---|---|
| 200 | Success | Read data |
| 400 | Invalid parameter | Read error, which lists every supported value |
| 404 | No results for that lottery yet | Wait for the next draw |
| 429 | Over the rate limit | Wait the number of seconds in the Retry-After header, then try again |
| 500 | Temporary server problem | Try again, and keep a cached copy to show meanwhile |
Every answer has a success field. When it is false there is an error message you can show to your users as it is, in the language you asked for with lang.
Terms of use
Frequently asked questions
Is the lottery results API really free? Do I need a key?
It really is free. No account, no API key and no fees, for personal and business websites alike. Call the URL straight away; we only ask for a credit link back to LotteryChecks so your readers know where the data comes from.
Can I call it from the browser, or will CORS block me?
You can call it straight from browser JavaScript. Every endpoint answers with Access-Control-Allow-Origin: * and supports the OPTIONS preflight, so fetch or axios work from any domain.
How often should I fetch?
Results only change when a draw is announced, so fetching every 5 minutes during the announcement is plenty. The results endpoint allows 120 requests per minute per IP; above that you get status 429 with a Retry-After header saying how many seconds to wait.
Where does the data come from, and how reliable is it?
Thai Government Lottery results follow the Government Lottery Office (glo.or.th), and other lotteries follow their own official source. Every draw is checked against two sources before it is published, but prize claims are always decided by the official announcement.
Can I get the answers in English, Lao, Burmese or Vietnamese?
Yes. Add lang=en, lo, my or vi to any endpoint. Lottery names, prize names, draw dates and messages come back in that language; numbers and field names stay the same.
Can I use it on a gambling website?
No. LotteryChecks reports results so people can check them. It takes no bets and offers no gambling of any kind, and the API and widget may not be used on online gambling websites.
Don't want to write code?
If you only want to show results on your website, use the lottery results widget: paste it once and it updates every draw. Or see today's results, the latest Thai Government Lottery draw, lottery statistics and the number checker right here on the site.
