How to Use ResultsZA

Everything you need, from checking the latest South African lottery results to building on our API. Jump to any section below.

Quick start

New here? Here's the lay of the land in four steps.

1

Check results

Open Results in the menu and pick a game, or browse the latest draws on the home page.

2

Play with tools

Generate lucky numbers, explore hot & cold numbers, all under Tools.

3

Get an API key

Under API → Generate API Key. It's free and emailed to you instantly.

4

Build & subscribe

Read the docs, copy a script, then choose a plan to start pulling live results.

The menu: Results (games by country), Tools (generators & balance check), API (key, docs, scripts & buy), plus How To and Contact. The Subscriber Portal button sits top-right.

Finding results

Every game has its own page, grouped by country in the Results menu.

  • Home page: the latest draw for each South African game at a glance, plus an archived-results filter.
  • Lottery Results menu: grouped by region: South Africa, United Kingdom, United States, Europe and Africa. Pick any game to open its dedicated page. Horse Racing Results has its own menu item.
  • Each game page shows: the latest winning numbers and bonus ball, the prize-division breakdown, jackpot and sales stats, and an Archived Draw Results filter.
  • Archive filter: choose a date range and pass the quick human check (Cloudflare) to pull historical draws for that game.
South African results shown on game pages cover draws from 1 June 2026 onward (the current operator). Older historic results remain available through the API.

Supported games

Lottery games and horse racing results across multiple regions, each with a dedicated results page and API endpoint.

🇸🇦 South Africa
Daily Lotto
5 balls (1–36). Drawn every day. No bonus ball.
Lotto
6 balls (1–52) + bonus ball. Wed & Sat.
Lotto Plus 1
6 balls (1–52) + bonus ball. Wed & Sat.
Lotto 5 Max
6 balls (1–52). Wed & Sat. Replaced Lotto Plus 2 on 1 Jun 2026.
Powerball
5 balls (1–50) + Powerball (1–16). Tue & Fri.
Powerball Xtra
5 balls (1–50) + Powerball (1–16). Renamed from Powerball Plus on 1 Jun 2026.
🇬🇧 United Kingdom
UK 49's Brunchtime
11:49 UK / 13:49 SAST.
UK 49's Lunchtime
12:49 UK / 14:49 SAST.
UK 49's Drivetime
16:49 UK / 18:49 SAST.
UK 49's Teatime
17:49 UK / 19:49 SAST.
Each UK 49's draw has its own page (6 balls + 1 booster, all 1–49). A fixed-odds betting draw, not affiliated with the South African National Lottery.
🇺🇸 United States
US Powerball
5 balls (1–69) + Powerball (1–26). Mon, Wed & Sat.
Mega Millions
5 balls (1–70) + Mega Ball (1–24). Tue & Fri.
🇪🇺 Europe
EuroMillions
5 balls (1–50) + 2 Lucky Stars (1–12). Tue & Fri, 21:00 CET.
🇬🇰 Africa
Kenya Lotto Daily Draw
Pick 6 from 0–39. Up to 24 hourly draws per day, Mon/Tue/Thu/Fri/Sun. Times in EAT (UTC+3).
Kenya Lotto Mega Jackpot
Pick 6 from 0–39. Drawn Wed & Sat at 22:00 EAT.
Nigeria Baba Ijebu Lotto
5 balls (1–90). 25 draw names (Premier Peoples, Premier National, Premier Diamond and more). Up to 6 draw times per day in WAT (UTC+1). Times also shown in SAST.
Ghana NLA Lotto
10 games total. 7 weekly games (Monday Special, Lucky Tuesday, Mid-Week, Fortune Thursday, Friday Bonanza, National Weekly, Sunday Aseda) at 20:00 GMT (22:00 SAST), Sunday at 18:00 GMT. Plus 3 daily games Mon-Sat: VAG Lotto (10:00 GMT), Noon Rush (13:00 GMT), Daywa 5/39 (18:30 GMT). All games draw 5 balls: 1-90 except Daywa 5/39 which draws from 1-39.
🏐 South African Horse Racing
Race Meetings
Full results for every SA race meeting: venue, race card, off times, distances, going, win times and prize breakdowns.
Top 3 Finishers
Jockey, trainer, owner, draw, weight, starting price and tote dividends per race.
Full Runner Table
Complete field via the API: open odds, ability ratings, breeding info (sire, dam), RSR metrics, and exotic bet dividends (Swinger, Exacta, Trifecta, Quartet, Double, Pick 3).
Horse Racing Results has its own menu item. Use the date selector on the page to browse meetings by date and venue.

Open any game from the Lottery Results menu or Horse Racing Results, or fetch them programmatically. See the API Documentation.

Tools

Free helpers under the Tools menu.

Lucky Number Generator
Generate random number sets for any supported game.
Hot & Cold Numbers
See which numbers are drawn most and least often.
Check API Balance
Look up your subscription status & remaining calls, free, no key consumed.

The API

A REST API for live lottery data. Everything API-related lives under the API menu.

Getting started

  • Generate API Key: create a free key (verify your email; it's delivered instantly).
  • API Documentation: full endpoint reference with live "Try it" examples.
  • Scripts: copy-paste Python & JavaScript snippets for every endpoint.
  • Pricing: choose a subscription to activate your key.

What you can do

Latest results for every supported game across SA, UK, Europe, the US and Africa, plus full South African horse racing results.
Results by game and date, and bulk winning-number checking.
Hot & cold numbers, number frequency, and popular number pairs.
Random number generation by game type, and text-to-lucky-numbers.
Check your subscription status & usage, via the Check API Balance tool or the /check_api_key_balance endpoint (free; does not count against your limit).

Subscriptions, billing & top-ups

How plans, top-ups and upgrades work.

Monthly subscriptions

When your subscription activates you get a fixed number of API calls for the next 30 days. Your counter resets each billing cycle. Unused calls do not carry over.

PlanPrice / monthCallsPer call
StarterR149300R0.50
BasicR2991,500R0.20
ProfessionalR5996,000R0.10
UnlimitedR1,000Unlimited*n/a

*Unlimited is subject to fair use and a 60 requests/minute rate limit; exceeding it triggers a 5-minute cooldown.

Top-up calls

Run out before your cycle resets? Buy a top-up, added on top of your limit, available instantly. Top-ups reset with your monthly counter and don't carry over.

Top-up packages: 50 calls: R60 (R1.20/call) · 150 calls: R150 (R1.00/call) · 300 calls: R249 (R0.83/call). Top-ups are a short-term safety net; if you regularly need more, upgrading is cheaper.

Upgrading (pro-rata)

Upgrade any time from Pricing or the portal. Mid-cycle upgrades on an active subscription are charged pro-rata, only the price difference, scaled to the days left in your cycle.

Example: 15 days left on Starter (R149) → upgrade to Basic (R299). Difference R150 × (15 ÷ 30) = R75. Your cycle end date stays the same.

Subscriber portal

Your account dashboard, open it from the Subscriber Portal button (top-right of the menu).

First login: use your email and your API key as the password. You'll set a permanent password on first login.

What you can do

  • Dashboard: plan & status, calls used this cycle, a usage bar, your primary key, and recent invoices.
  • Subscribe / Upgrade / Complete payment: pick a plan and pay securely via iKhokha; finish a pending payment in one click.
  • Invoices: download branded PDF tax invoices for every confirmed payment.
  • API keys & sub-keys: view your primary key and create up to 10 labelled sub-keys you can revoke independently.
  • Telegram alerts: link the ResultsZA bot for instant subscription & payment notifications (mute or unlink any time).
  • Account settings: change password or email, reset a forgotten password, or delete your account (Danger Zone), which revokes keys, ends the subscription with no refund, and removes your data.

Handy tips

Use the archive filter on any game page to pull a specific date range.
Check your balance via the free Check API Balance tool, it never consumes a call.
Out of calls mid-cycle? A top-up bridges the gap; regular heavy use is cheaper on a higher tier.
Enjoying ResultsZA? Tap the stars on any results page to rate us, it helps a lot!

Webhook Push Plan

Receive lottery and horse racing results posted directly to your server the moment they are published. No polling, no missed draws.

1

Get an API key

If you do not have one yet, generate a free API key and verify your email. Your key is your account identifier for the push subscription.

2

Subscribe

Go to the Webhook Pricing page. Enter your email and API key, choose a subscription period, and pay via iKhokha.

3

Note your signing secret

Your webhook signing secret appears on the payment confirmation page. Copy it immediately. You can also reveal it at any time in Push Settings inside the portal.

4

Configure your endpoint

Log in to your subscriber portal, open Push Settings, paste your webhook URL, select the games you want, and click Save.

Logging in to the portal

Go to the subscriber portal. Use your email address and your API key as the password on first login. You will be prompted to set a permanent password at that point.

Finding Push Settings

Once logged in, the portal dashboard shows a Push Subscription card on the right. Click Manage Push Settings to open the configuration page.

What you will see on Push Settings:
  • Webhook URL field: paste the HTTPS endpoint on your server that will receive payloads.
  • Games to Receive: a card for each country/region with checkboxes. Tick the games you care about. Use "Select all" to toggle a whole group at once.
  • Signing Secret: click Reveal Secret to view your HMAC key. Copy it into your server config.
  • Test Webhook: sends a live test payload to your URL so you can confirm your endpoint is reachable before any real results arrive.
  • Delivery Log: shows the last 50 delivery attempts with status (Delivered / Failed / Pending), attempt count, and timestamps.

Your webhook URL requirements

  • Must be HTTPS (plain HTTP is rejected).
  • Must return a 2xx HTTP response within 10 seconds.
  • Can be any path on your server, e.g. https://myapp.com/webhooks/resultsza.

Verifying incoming payloads

Every POST from ResultsZA includes an X-ResultsZA-Signature header. Compute HMAC-SHA256(raw_request_body, signing_secret) and compare it to that header. Reject anything that does not match. Verify against the raw request bytes, exactly as received: if you parse the JSON and re-serialise it the bytes change and the signature will never match. The header value includes the sha256= prefix, so compare against the full string.

Python example:
import hmac, hashlib
expected = "sha256=" + hmac.new(secret.encode(), body_bytes, digestmod=hashlib.sha256).hexdigest()
if not hmac.compare_digest(expected, request.headers.get("X-ResultsZA-Signature", "")): abort(403)

The request also includes X-ResultsZA-Game (game identifier) and X-ResultsZA-Event (always result.published) headers so you can route or filter without parsing the body first.

Retry policy

If your endpoint does not respond with 2xx, ResultsZA retries up to 3 times, spaced 10 minutes apart. After 3 failed attempts the delivery is marked failed and you receive an email notification. The Delivery Log on the Push Settings page shows the full history so you can see exactly what happened and when.

Delivery is at-least-once

Treat every delivery as at-least-once: the same result can arrive more than once (for example if a retry overlaps a slow but successful response). De-duplicate on the game plus the draw identifier (draw_date or draw_number, and race_date for horse racing) and make your processing idempotent, so a repeat delivery is a harmless no-op.

Selecting games

On Push Settings, games are grouped by country: SA Lottery, Nigeria (Baba Ijebu), Ghana, Kenya, UK 49s, EuroMillions, US Lottery, and Horse Racing. Only the games you tick will generate deliveries. Unselected games are silently skipped, so you only receive what you need.

Horse racing: selecting "All Horse Racing Results" delivers a single daily payload once all meetings are scraped. It includes venue details, per-race results, top 3 finishers with tote odds, and full dividend payouts.

View full payload reference for all games — includes field tables, number formats, and a live interactive example for every game.