Welcome to the Resultsza API documentation. Here you will find all the information needed to use our API effectively.
Retrieves the latest results for all lottery games in a single call. Optionally, you can specify a date to get results for that day.
GET /api/get_latest_results?api_key=YOUR_API_KEY
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key for authentication |
date Optional |
String | Format: YYYY-MM-DD. If omitted, returns the most recent results. |
curl -i "https://resultsZA.co.za/api/get_latest_results?api_key=YOUR_API_KEY&date=2024-12-10"
{
"status": "success",
"results": {
"daily_lotto_results": {
"date": "2024-12-10T20:00:00Z",
"draw_id": 2098,
"draw_machine": "RNG2",
"game_type": "Daily Lotto",
"total_pool_size": 1633997.5,
"total_sales": 3262896.0,
"winning_numbers": [5, 11, 20, 28, 35],
"bonus_ball": null,
"next_draw_date": "2024-12-11T20:00:00Z",
"divisions": [
{"division": "DIV 1", "winners": 6, "winning_amount": 96799.2},
{"division": "DIV 2", "winners": 466, "winning_amount": 287.1},
{"division": "DIV 3", "winners": 13571, "winning_amount": 19.7},
{"division": "DIV 4", "winners": 130413, "winning_amount": 5.0}
]
},
"lotto_results": {
"date": "2024-12-07T20:00:00Z",
"draw_id": 2497,
"draw_machine": "RNG2",
"game_type": "Lotto",
"total_pool_size": 16460059.56,
"total_sales": 16554055.0,
"winning_numbers": [10, 20, 30, 47, 49, 50],
"bonus_ball": 21,
"next_draw_date": "2024-12-11T20:00:00Z",
"divisions": [
{"division": "DIV 1", "winners": 0, "winning_amount": 0.0},
{"division": "DIV 2", "winners": 1, "winning_amount": 104016.2},
{"division": "DIV 3", "winners": 104, "winning_amount": 1739.4},
{"division": "DIV 4", "winners": 113, "winning_amount": 2001.1},
{"division": "DIV 5", "winners": 3442, "winning_amount": 110.3},
{"division": "DIV 6", "winners": 3083, "winning_amount": 107.1},
{"division": "DIV 7", "winners": 45524, "winning_amount": 50.0},
{"division": "DIV 8", "winners": 32534, "winning_amount": 20.0}
]
}
}
}
date parameter is used, results for all game types drawn on that date will be returned.
Retrieve draw results for a specific game type.
GET /api/get_results_by_game?api_key=YOUR_API_KEY&game=GAME_NAME
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key for authentication |
game Required |
String | The lottery game name. Accepts any SA game (e.g., Lotto, Powerball) or any UK 49's draw name (e.g., UK49s Lunchtime). See Supported Games. |
date Optional |
String | Format: YYYY-MM-DD. Fetch results for a specific date. |
curl -i "https://resultsZA.co.za/api/get_results_by_game?api_key=YOUR_API_KEY&game=Lotto"
curl -i "https://resultsZA.co.za/api/get_results_by_game?api_key=YOUR_API_KEY&game=Lotto&date=2024-11-16"
curl -i "https://resultsZA.co.za/api/get_results_by_game?api_key=YOUR_API_KEY&game=UK49s%20Teatime"
{
"status": "success",
"results": [
{
"draw_id": 123,
"draw_date": "2023-03-20T20:00:00Z",
"winning_numbers": [1, 5, 7, 9, 10],
"bonus_ball": 22
}
]
}
Generate random numbers for a supported game type. The numbers generated follow the rules of the specified game.
Daily Lotto, Daily Lotto Plus, Lotto, Powerball.
Lotto Plus 1, Lotto Plus 2 and Powerball Plus are not supported by this endpoint.
GET /api/generate_random_numbers?api_key=YOUR_API_KEY&game=GAME_NAME&lines=NUMBER_OF_LINES
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key |
game Required |
String | The game type (e.g., "Lotto", "Powerball") |
lines Optional |
Integer | Number of lines to generate (default is 1) |
curl -i "https://resultsZA.co.za/api/generate_random_numbers?api_key=YOUR_API_KEY&game=Lotto"
curl -i "https://resultsZA.co.za/api/generate_random_numbers?api_key=YOUR_API_KEY&game=Lotto&lines=5"
{
"status": "success",
"game": "Lotto",
"lines": 5,
"random_numbers": [
[1, 2, 3, 4, 5, 6],
[7, 8, 9, 10, 11, 12],
...
]
}
Retrieve the most frequently (hot) and least frequently (cold) drawn numbers for a game.
GET /api/get_hot_cold_numbers_stats?api_key=YOUR_API_KEY&product=GAME_NAME
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key |
product Required |
String | The game type (e.g., "Lotto", "Powerball") |
curl -i "https://resultsZA.co.za/api/get_hot_cold_numbers_stats?api_key=YOUR_API_KEY&product=Lotto"
{
"status": "success",
"product": "Lotto",
"hot": [5, 12, 19, ...],
"cold": [45, 23, 7, ...]
}
Fetch the frequency of each number drawn for a specific game type.
GET /api/get_number_frequencies?api_key=YOUR_API_KEY&product=GAME_NAME
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key |
product Required |
String | The game type (e.g., "Lotto", "Powerball") |
curl -i "https://resultsZA.co.za/api/get_number_frequencies?api_key=YOUR_API_KEY&product=Powerball Plus"
{
"status": "success",
"product": "Lotto",
"statistics": [
{"number": 5, "frequency": 20, "last_drawn": "2023-03-15"},
...
]
}
Retrieve the most common number pairs drawn together (top 10 pairs) for a game.
GET /api/get_number_pairs?api_key=YOUR_API_KEY&product=GAME_NAME
| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key |
product Required |
String | The game type (e.g., "Lotto") |
curl -i "https://resultsZA.co.za/api/get_number_pairs?api_key=YOUR_API_KEY&product=Lotto"
{
"status": "success",
"product": "Lotto",
"pairs": [
{"number1": 5, "number2": 7, "frequency": 15, "last_drawn": "2023-03-10"},
...
]
}
Submit your played numbers and check them against the winning numbers for a specific game and draw date. Supports up to 10 lines per request.
POST /api/check_played_numbers?api_key=YOUR_API_KEY&game=GAME_NAME&date=YYYY-MM-DD
{
"played_numbers": [
[10, 20, 30, 40, 50, 5],
[1, 6, 29, 11, 15, 17]
]
}
For a single line, use:
{
"played_numbers": [1, 6, 29, 11, 15, 17]
}
curl -X POST "https://resultsZA.co.za/api/check_played_numbers?api_key=YOUR_API_KEY&game=Lotto&date=2024-12-07" -H "Content-Type: application/json" -d '{ "played_numbers": [[10,20,30,40,50,5],[1,6,29,11,15,17]] }'
{
"status": "success",
"game": "Lotto",
"draw_date": "2024-12-07",
"results": {
"line1_results": {
"played_numbers": [10, 20, 30, 40, 50, 5],
"winning_numbers": [10, 20, 30, 47, 49, 50],
"bonus_ball": 21,
"matches": {
"main_matches": 4,
"bonus_match": true
},
"division": "DIV 4",
"winning_amount": "2001.10"
},
"line2_results": {
"played_numbers": [1, 6, 29, 11, 15, 17],
"winning_numbers": [10, 20, 30, 47, 49, 50],
"bonus_ball": 21,
"matches": {
"main_matches": 0,
"bonus_match": false
},
"division": null,
"winning_amount": null
}
}
}
This endpoint allows you to check a larger set of played numbers against the winning numbers of a specific game type and draw date. It supports up to 500 lines of played numbers in a single request and deducts tokens based on the number of lines checked.
POST /api/bulk_check_numbers?api_key=YOUR_API_KEY&game=GAME_NAME&date=YYYY-MM-DD
The request body must be in JSON format:
{
"played_numbers": [
[10, 20, 30, 40, 50, 5],
[1, 6, 29, 11, 15, 17],
...
]
}
Notes:
curl -X POST "https://resultsZA.co.za/api/bulk_check_numbers?api_key=YOUR_API_KEY&game=Lotto Plus 1&date=2024-12-11" \
-H "Content-Type: application/json" \
-d '{
"played_numbers": [
[10, 20, 30, 40, 50, 5],
[1, 6, 29, 11, 15, 17],
...
]
}'
{
"status": "success",
"game": "Lotto Plus 1",
"draw_date": "2024-12-11",
"lines_checked": 50,
"results": {
"line1_results": {
"played_numbers": [10, 20, 30, 40, 50, 5],
"winning_numbers": [10, 20, 30, 47, 49, 50],
"bonus_ball": 21,
"matches": {
"main_matches": 4,
"bonus_match": true
},
"division": "DIV 4",
"winning_amount": "2001.10"
},
...
}
}
Note: Ensure your API key has sufficient remaining API calls before submitting a bulk check request.
Convert input text into a unique set of lucky numbers for a selected game, following game rules.
POST /api/text_to_lucky_numbers?api_key=YOUR_API_KEY&game=GAME_NAME
{
"text": "Your custom input text"
}
The game is passed as a query parameter in the URL, not in the request body.
curl -X POST "https://resultsZA.co.za/api/text_to_lucky_numbers?api_key=YOUR_API_KEY&game=Powerball" -H "Content-Type: application/json" -d '{ "text": "John Doe" }'
{
"status": "success",
"text": "John Doe",
"game_type": "Powerball",
"lucky_numbers": [7, 22, 33, 41, 50],
"powerball": 18
}
Check your API key balance and subscription status. This endpoint does not consume any API calls.
GET /check_api_key_balance?api_key=YOUR_API_KEY
POST /check_api_key_balance
Note: You can use either GET (with query parameter) or POST (with JSON body containing api_key).
curl -i "https://resultsZA.co.za/check_api_key_balance?api_key=YOUR_API_KEY"
curl -X POST "https://resultsZA.co.za/check_api_key_balance" -H "Content-Type: application/json" -d '{"api_key": "YOUR_API_KEY"}'
The response format for active subscriptions:
{
"status": "success",
"billing_model": "subscription",
"tier": "professional",
"monthly_limit": 4000,
"used": 1250,
"remaining": 2750,
"subscription_status": "active",
"subscription_end": "2026-02-23",
"days_until_expiry": 31,
"grace_period": false,
"note": "IMPORTANT: When your subscription expires, you have 7 days (grace period) to renew. After the grace period, any unused API calls are permanently lost. If you exhaust your calls before expiration, you can upgrade to a higher tier immediately."
}
{
"status": "success",
"billing_model": "subscription",
"subscription_status": "pending",
"message": "Your subscription is pending payment confirmation. Once payment is received and processed, your subscription will be activated and you will be able to use the API.",
"tier": "basic",
"subscription_status_display": "Pending Payment"
}
{
"status": "success",
"billing_model": "subscription",
"subscription_status": "expired",
"message": "Your subscription has expired. Please renew to restore API access. You will need to initiate a new subscription request, which will generate an invoice for payment.",
"tier": "professional",
"subscription_status_display": "Expired",
"renewal_url": "https://resultsza.co.za/buy_now?api_key=YOUR_API_KEY&tier=professional&action=renew"
}
{
"status": "success",
"billing_model": "subscription",
"tier": "basic",
"monthly_limit": 1000,
"used": 750,
"remaining": 250,
"subscription_status": "active",
"subscription_end": "2026-01-16",
"days_until_expiry": -3,
"grace_period": true,
"days_remaining_in_grace": 4,
"warning": "Your subscription expired 3 day(s) ago. You have 4 days remaining in grace period to renew.",
"renewal_url": "https://resultsza.co.za/buy_now?api_key=YOUR_API_KEY&tier=basic&action=renew",
"note": "IMPORTANT: When your subscription expires, you have 7 days (grace period) to renew. After the grace period, any unused API calls are permanently lost. If you exhaust your calls before expiration, you can upgrade to a higher tier immediately."
}
ResultsZA API uses subscription-based billing with monthly subscription plans and tiered API call limits that reset each month:
| Tier | Monthly API Calls | Price (Monthly) |
|---|---|---|
| Starter | 300 calls/month | R149 |
| Basic | 1,500 calls/month | R299 |
| Professional | 6,000 calls/month | R599 |
| Unlimited | Unlimited calls/month* | R1000 |
*Unlimited is subject to fair use and API rate limits (60 requests/minute per API key) to protect service availability. Exceeding the rate limit triggers a 5-minute cooldown period.
Different endpoints consume different amounts of API calls:
| Endpoint | Calls Consumed |
|---|---|
| Get Latest Results | 1 call |
| Get Results by Game | 1 call |
| Generate Random Numbers | 1 call per line |
| Hot & Cold Numbers | 1 call |
| Number Frequencies | 1 call |
| Number Pairs | 1 call |
| Winning Number Checker | 1 call per line (up to 10 lines) |
| Bulk Number Checker | 5 API calls for up to 50 lines, then 5 API calls per additional 50 lines |
| Get UK 49's Results | 1 call |
| Text-to-Lucky Numbers | 1 call |
| Check API Key Balance | 0 calls (free) |
South African National Lottery games:
Other lottery games (accessible via Get Results by Game or the dedicated UK 49's endpoint):
generate_random_numbers supports SA games only (Daily Lotto, Daily Lotto Plus, Lotto, Powerball). Statistical endpoints (hot/cold, frequencies, pairs) support SA games only. UK 49's draws are supported by get_results_by_game and get_uk49s_results.
Non-SA lottery games available via the API. These are separate from the SA National Lottery.
Retrieve results for any of the four daily UK 49's draws using either the Get Results by Game endpoint (accepts all game types including UK 49's) or the dedicated Get UK 49's Results endpoint below (restricted to UK 49's draw names only — returns an error if you pass an SA game name). These draws are not affiliated with the South African National Lottery.
game parameter)| Draw | UK Time | SAST | Available From |
|---|---|---|---|
UK49s Brunchtime | 11:49 AM | 1:49 PM | Early 2026 |
UK49s Lunchtime | 12:49 PM | 2:49 PM | December 1996 |
UK49s Drivetime | 4:49 PM | 6:49 PM | Early 2026 |
UK49s Teatime | 5:49 PM | 7:49 PM | November 1997 |
curl -i "https://resultsZA.co.za/api/get_results_by_game?api_key=YOUR_API_KEY&game=UK49s%20Lunchtime"curl -i "https://resultsZA.co.za/api/get_results_by_game?api_key=YOUR_API_KEY&game=UK49s%20Teatime&date=2025-12-25"{
"status": "success",
"results": [
{
"product": "UK49s Lunchtime",
"draw_date": "2025-12-25T12:49:00Z",
"winning_numbers": [3, 11, 22, 35, 40, 47],
"bonus_ball": 18
}
]
}A UK 49's-specific alias that only accepts UK 49's draw names. Passing an SA game name returns a 400 error, making it useful when you want to enforce UK 49's-only queries in your integration.
GET /api/get_uk49s_results?api_key=YOUR_API_KEY&game=DRAW_NAME| Parameter | Type | Description |
|---|---|---|
api_key Required |
String | Your API key for authentication |
game Required |
String | Must be one of: UK49s Brunchtime, UK49s Lunchtime, UK49s Drivetime, UK49s Teatime. SA game names will return a 400 error. |
date Optional |
String | Format: YYYY-MM-DD. Fetch results for a specific date. Omit for the latest result. |
curl -i "https://resultsZA.co.za/api/get_uk49s_results?api_key=YOUR_API_KEY&game=UK49s%20Brunchtime"curl -i "https://resultsZA.co.za/api/get_uk49s_results?api_key=YOUR_API_KEY&game=UK49s%20Drivetime&date=2025-06-15"