HKJC APIbet.hkjc.com ↗
Get Hong Kong Jockey Club Mark Six draw results, prize breakdowns, jackpot amounts, and frequency statistics for all 49 numbers via a simple REST API.
What is the HKJC API?
The HKJC Mark Six API provides two endpoints covering draw results and number frequency statistics for Hong Kong's official lottery. get_latest_results returns the most recent completed draw with drawn numbers, extra number, snowball details, and prize dividends, plus metadata on the next scheduled draw. get_number_statistics delivers historical frequency data across all 49 possible numbers, including draw count and recency for each.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/2fc81dc0-16a8-4b7d-8674-ab10815189b7/get_latest_results' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bet-hkjc-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""HKJC Mark Six Results — lottery draws and number frequency analysis."""
from parse_apis.hkjc_mark_six_results_api import MarkSix, UpstreamError
client = MarkSix()
# List latest draws — includes completed results and upcoming scheduled draws.
for draw in client.draws.list(limit=5):
print(draw.id, draw.draw_date, draw.status, draw.drawn_numbers)
# Drill into the first draw's prize breakdown.
latest = client.draws.list(limit=1).first()
if latest:
for prize in latest.prizes:
print(f" Prize type {prize.type}: {prize.winning_units} winners @ {prize.dividend}")
# Number frequency statistics — all 49 numbers in one page.
for stat in client.numberstats.list(limit=5):
print(f" #{stat.number}: drawn {stat.total_drawn} times, last {stat.last_drawn_in_draw} draws ago")
# Typed error handling around a call.
try:
for draw in client.draws.list(limit=2):
print(draw.id, draw.year, draw.draw_number)
except UpstreamError as exc:
print(f"upstream issue: {exc}")
print("exercised: draws.list / numberstats.list / prize attribute access / error handling")
Get the latest Mark Six draw results including drawn numbers, extra number, prize dividends, jackpot amount, snowball info, and next scheduled draw details. Returns the most recent completed draw and the next upcoming draw. No parameters required.
No input parameters required.
{
"type": "object",
"fields": {
"draws": "array of Draw objects containing draw details, numbers, and prizes",
"total": "integer - number of draws returned"
},
"sample": {
"data": {
"draws": [
{
"id": "202662N",
"year": "2026",
"prizes": [
{
"type": 1,
"dividend": "13244910",
"winning_units": 10
},
{
"type": 2,
"dividend": "1748300",
"winning_units": 10
},
{
"type": 3,
"dividend": "45700",
"winning_units": 1020
},
{
"type": 4,
"dividend": "9600",
"winning_units": 2150
},
{
"type": 5,
"dividend": "640",
"winning_units": 47255
},
{
"type": 6,
"dividend": "320",
"winning_units": 65723
},
{
"type": 7,
"dividend": "40",
"winning_units": 856207
}
],
"status": "Result",
"jackpot": "8000000",
"unit_bet": 10,
"draw_date": "2026-06-09+08:00",
"open_date": "2026-06-06+08:00",
"close_date": "2026-06-09T21:15:00+08:00",
"draw_number": 62,
"extra_number": 30,
"drawn_numbers": [
8,
11,
14,
26,
33,
40
],
"snowball_code": "",
"estimated_prize": "",
"snowball_name_ch": "",
"snowball_name_en": "",
"total_investment": "48605382",
"derived_first_prize_div": "13000000"
}
],
"total": 2
},
"status": "success"
}
}About the HKJC API
Draw Results
The get_latest_results endpoint returns an array of draw objects under the draws key. Each object includes fields such as id, year, draw_number, draw_date, status, drawn_numbers (the six main balls), extra_number, snowball information, and investment and prize dividend breakdowns. A total integer confirms how many draw records were returned. The endpoint requires no input parameters and always reflects the most recently completed draw alongside metadata for the next upcoming draw.
Number Frequency Statistics
The get_number_statistics endpoint covers all 49 Mark Six numbers. Each entry in the numbers array contains the number (1–49), total_drawn (how many times that number has appeared historically), and last_drawn_in_draw (how many draws ago the number was last selected). Three reference fields — reference_year, reference_draw_date, and reference_draw_number — anchor the statistics to a specific draw so you know exactly what period the frequency data covers. total_numbers is always 49.
Coverage and Freshness
Both endpoints reflect the live state of the HKJC Mark Six results page at bet.hkjc.com. The results endpoint distinguishes current draw status (e.g. completed vs. upcoming) via the status field on each draw object, which is useful for polling workflows that need to detect when a new result has been published. Snowball draw details are surfaced when applicable, allowing applications to flag draws with rolled-over jackpots.
The HKJC API is a managed, monitored endpoint for bet.hkjc.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bet.hkjc.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bet.hkjc.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display the latest Mark Six winning numbers and prize dividends in a lottery results app
- Alert users when a snowball jackpot draw is scheduled using the snowball fields from
get_latest_results - Build a number frequency heatmap for all 49 balls using
total_drawnfromget_number_statistics - Identify 'cold' numbers by sorting on
last_drawn_in_drawto find balls absent for the most draws - Track jackpot investment totals across recent draws by consuming the investment field in draw objects
- Show the next scheduled draw date and time to lottery enthusiasts ahead of each draw night
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does HKJC provide an official public developer API for Mark Six results?+
What does the `get_latest_results` endpoint actually return — is it just the most recent draw or multiple draws?+
draws that includes the most recently completed draw and information about the next upcoming draw. The total field tells you how many draw objects are in the response. Each draw object carries drawn_numbers, extra_number, snowball details, prize dividends, and status to distinguish completed from upcoming.Does the API expose historical draw results beyond the most recent one?+
get_latest_results endpoint covers the most recent completed draw and the next upcoming draw. It does not return a paginated archive of past draws. The get_number_statistics endpoint provides aggregate historical frequency data per number but not individual historical draw records. You can fork this API on Parse and revise it to add a historical draws endpoint if you need per-draw records going back further.Can I filter number statistics by a specific date range or draw period?+
get_number_statistics endpoint does not accept date or draw-range parameters — it returns aggregate totals for all 49 numbers referenced to a single anchor draw identified by reference_draw_number and reference_draw_date. Filtering by period is not currently supported. You can fork the API on Parse and revise it to add date-scoped frequency queries.How do I know if a draw is a snowball draw from the response?+
draws array from get_latest_results includes snowball-specific fields. When a draw carries a rolled-over snowball jackpot, those fields will be populated, allowing your application to distinguish standard draws from snowball events without any additional calls.