Overview
The Lottizen Data API covers 60 live draw-lottery games across Canada, the US and Europe — Lotto Max, Lotto 6/49, Powerball, Mega Millions, EuroMillions, EuroJackpot, UK Lotto and more — plus 428 scratch tickets across all 5 Canadian provinces (Ontario, British Columbia, Western Canada, Atlantic Canada, Quebec), ranked by remaining prize value. Canada is our deepest market: every major national and regional draw game, draw history back to 1982, and remaining-prize tracking on scratch tickets that no other lottery API offers, in even one province, let alone five. Everything refreshes daily: scratch data comes from each agency’s own published remaining-prize data, and draw results from the operators’ result feeds, with some older draw history taken from established results archives.
Base URL for every endpoint below:
https://lottizen.com/api/v1
Coverage today: Canada (national + OLG/BCLC/WCLC/ALC/Loto-Québec), the US (multi-state + New York), and Europe (EuroMillions, EuroJackpot, UK Lotto).
Download the full datasets on Kaggle (CC BY 4.0, updated weekly):
- Canada Lottery Draw History: every Canadian draw game Lottizen tracks, one CSV per game, with each missing or left-out draw and its reason
- Canada Lottery Jackpot History: Lotto Max, Lotto 6/49, Daily Grand and Lottario top prizes per draw, where official sources agree
Authentication
The API is distributed exclusively through RapidAPI. Subscribe to a plan, and RapidAPI attaches your X-RapidAPI-Key to every request automatically — there’s no separate signup or key management here. Rate limiting and billing are handled entirely by RapidAPI; see Rate limits & pricing below.
Response format
Every endpoint returns JSON with a consistent envelope. Successful responses carry the payload in data and any pagination/context info in meta:
{ "data": ..., "meta": { ... } | null }Errors use the same shape, with an HTTP status code that matches the problem:
{ "error": { "code": "GAME_NOT_FOUND", "message": "No live game found for slug 'foo'." } }Responses are cached at the edge for one hour (Cache-Control: public, s-maxage=3600) — data changes at most once a day, so a fresh request within that window returns the same result.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /games | List all games |
| GET | /games/{slug} | Get a single game |
| GET | /games/{slug}/latest | Latest draw |
| GET | /games/{slug}/draws | Draw history |
| GET | /games/{slug}/statistics | Number statistics |
| GET | /scratch/ontarioExclusive | Ontario scratch tickets — ranked |
| GET | /scratch/ontario/{slug}Exclusive | Ontario scratch ticket detail |
| GET | /scratch/{province}Exclusive | Scratch tickets by province — ranked |
| GET | /scratch/{province}/{slug}Exclusive | Scratch ticket detail, by province |
GET /games
Every live, data-backed draw-lottery game across Canada, the US and Europe — country, agency, number-pool rules, ticket price, and draw days.
Request
curl "https://lottizen.com/api/v1/games"
Response 200 OK
{
"data": [
{
"slug": "lotto-max",
"name": "Lotto Max",
"country": "CA",
"countryName": "Canada",
"agency": "National",
"operator": "the Interprovincial Lottery Corporation",
"region": "Canada-wide",
"format": "lotto",
"pick": 7,
"max": 52,
"hasBonus": true,
"bonusLabel": "Bonus",
"bonusMax": 52,
"bonusCount": 1,
"drawDays": ["Tuesday", "Friday"],
"price": 6,
"currency": "CAD",
"blurb": "Canada's biggest jackpot game — pick 7 of 52, with jackpots to $90M plus Max Millions.",
"progressive": true,
"drawCount": 753,
"dataSince": "2019-05-14"
}
// ... 18 more games (Lotto 6/49, Powerball, EuroMillions, UK Lotto, ...)
],
"meta": { "total": 19 }
}GET /games/{slug}
Full details for one game, by slug (e.g. lotto-max, powerball, euromillions).
slug— Game slug, as returned by GET /games.
Request
curl "https://lottizen.com/api/v1/games/lotto-max"
Response 200 OK
{
"data": {
"slug": "lotto-max",
"name": "Lotto Max",
"country": "CA",
"countryName": "Canada",
"agency": "National",
"operator": "the Interprovincial Lottery Corporation",
"region": "Canada-wide",
"format": "lotto",
"pick": 7,
"max": 52,
"hasBonus": true,
"bonusLabel": "Bonus",
"bonusMax": 52,
"bonusCount": 1,
"drawDays": ["Tuesday", "Friday"],
"price": 6,
"currency": "CAD",
"blurb": "Canada's biggest jackpot game — pick 7 of 52, with jackpots to $90M plus Max Millions.",
"progressive": true,
"drawCount": 753,
"dataSince": "2019-05-14"
},
"meta": null
}GET /games/{slug}/latest
The most recent draw for a game, plus the next scheduled draw date and jackpot estimate where available.
slug— Game slug.
Request
curl "https://lottizen.com/api/v1/games/lotto-max/latest"
Response 200 OK
{
"data": {
"slug": "lotto-max",
"latestDate": "2026-08-04",
"numbers": [1, 13, 24, 34, 46, 50, 51],
"bonus": 36,
"bonus2": null,
"nextDraw": "2026-08-07",
"nextJackpot": 25000000,
"drawCount": 1255,
"dataSince": "2009-09-25"
},
"meta": null
}GET /games/{slug}/draws
Historical draws, newest first. Some games go back over 40 years — Lotto 6/49 draw history starts 1982-06-12.
slug— Game slug.
?from— Inclusive start date, YYYY-MM-DD.?to— Inclusive end date, YYYY-MM-DD.?limit— Results per page. Default 50, max 500.?offset— Pagination offset. Default 0.
Request
curl "https://lottizen.com/api/v1/games/lotto-max/draws?limit=2"
Response 200 OK
{
"data": [
{ "date": "2026-08-04", "numbers": [1, 13, 24, 34, 46, 50, 51], "bonus": 36, "jackpot": null },
{ "date": "2026-07-31", "numbers": [3, 28, 32, 37, 40, 44, 47], "bonus": 23, "jackpot": null }
],
"meta": {
"game": "lotto-max",
"from": null,
"to": null,
"limit": 2,
"offset": 0,
"total": 1255,
"hasMore": true
}
}GET /games/{slug}/statistics
Frequency, hot/cold classification, current & max gap (overdue tracking), common partner pairs, and aggregate breakdowns (odd/even, high/low, sum distribution) for a game's full number pool.
slug— Game slug.
Request
curl "https://lottizen.com/api/v1/games/lotto-max/statistics"
Response 200 OK
{
"data": {
"game": "lotto-max",
"dataSince": "2019-05-14",
"drawCount": 753,
"allTimeDrawCount": 1255,
"pick": 7,
"max": 52,
"numbers": [
{
"n": 1,
"count": 99,
"frequency": 0.1315,
"lastDate": "2026-08-04",
"drawsAgo": 0,
"currentGap": 0,
"maxGap": 46,
"hot": false,
"cold": false,
"partners": [{ "n": 45, "count": 20 }, { "n": 39, "count": 18 }, "..."]
}
// ... 51 more numbers
],
"aggregate": {
"hot": [6, 34, 3, 36, 32, 37],
"cold": [20, 29, 26, 2, 45, 11],
"topPairs": [{ "a": 22, "b": 46, "count": 29 }, "..."]
// ... oddEven, highLow, sum, consecutive, frequencyChart, windowChart
}
},
"meta": null
}GET /scratch/ontario
Every current OLG scratch ticket ranked by Value Score, with the full prize-tier breakdown and how many of each prize are still unclaimed. Lottizen is the only lottery API tracking remaining scratch-ticket prizes in Canada.
Request
curl "https://lottizen.com/api/v1/scratch/ontario"
Response 200 OK
{
"data": [
{
"slug": "poker-night",
"name": "Poker Night",
"gameNumber": "2535",
"price": 10,
"prizeTiers": [
{ "amount": 250000, "label": "$250,000.00", "total": 3, "remaining": 1, "isTop": true },
{ "amount": 10000, "label": "$10,000.00", "total": 1, "remaining": 0, "isTop": false }
// ... 4 more tiers
],
"topPrizeLabel": "$250,000.00",
"topPrizesTotal": 3,
"topPrizesRemaining": 1,
"remainingPrizePool": 282150,
"printedPrizePool": 952950,
"valueRetention": 1.771,
"valueScore": 109.8,
"rank": 1
}
// ... 49 more games
],
"meta": {
"generatedAt": "2026-08-05T16:05:08+00:00",
"source": "olg-live",
"currency": "CAD",
"province": "ON",
"gameCount": 50
}
}GET /scratch/ontario/{slug}
Full prize-tier breakdown for a single OLG scratch ticket, by slug.
slug— Scratch ticket slug, as returned by GET /scratch/ontario.
Request
curl "https://lottizen.com/api/v1/scratch/ontario/bingo-multip"
Response 200 OK
{
"data": {
"slug": "bingo-multip",
"name": "Bingo Multip",
"gameNumber": "3088",
"price": 10,
"prizeTiers": [
{ "amount": 250000, "label": "$250,000.00", "total": 5, "remaining": 4, "isTop": true },
{ "amount": 100000, "label": "$100,000.00", "total": 1, "remaining": 1, "isTop": false },
{ "amount": 50000, "label": "$50,000.00", "total": 1, "remaining": 1, "isTop": false }
// ... 17 more tiers
],
"topPrizeLabel": "$250,000.00",
"topPrizesTotal": 5,
"topPrizesRemaining": 4,
"prizeTierCount": 20,
"remainingPrizePool": 1598725,
"printedPrizePool": 2002165,
"valueRetention": 1.115,
"valueScore": 69.1,
"rank": 13
},
"meta": null
}GET /scratch/{province}
Every current scratch ticket for one of 5 Canadian provinces (ontario, british-columbia, western, atlantic, quebec), ranked by that province's Value Score. Lottizen is the only lottery API tracking remaining scratch-ticket prizes across all 5 Canadian scratch-ticket agencies. Not every province publishes the same underlying data — see scoringMethod and dataCompleteness in the response, and /methodology for what each means.
province— One of: ontario, british-columbia, western, atlantic, quebec.
Request
curl "https://lottizen.com/api/v1/scratch/british-columbia"
Response 200 OK
{
"data": [
{
"slug": "5-set-for-life-xii",
"name": "$5 Set for Life XII",
"gameNumber": "37116004",
"agency": "BCLC",
"province": "british-columbia",
"price": 5,
"prizeTiers": [
{ "amount": 675000, "label": "$675,000", "total": 1, "remaining": 1, "isTop": true }
// ... more tiers
],
"topPrizeLabel": "$675,000",
"topPrizesTotal": 1,
"topPrizesRemaining": 1,
"remainingPrizePool": 812400,
"printedPrizePool": 1105500,
"valueRetention": 1.62,
"valueScore": 100.4,
"scoringMethod": "retention",
"rank": 1
}
// ... more games
],
"meta": {
"generatedAt": "2026-08-24T23:17:28+00:00",
"source": "bclc-live",
"currency": "CAD",
"agency": "BCLC",
"province": "british-columbia",
"provinceLabel": "British Columbia",
"scoringMethod": "retention",
"dataCompleteness": "full",
"gameCount": 173
}
}GET /scratch/{province}/{slug}
Full prize-tier breakdown for a single scratch ticket, by province + slug.
province— One of: ontario, british-columbia, western, atlantic, quebec.slug— Scratch ticket slug, as returned by GET /scratch/{province}.
Request
curl "https://lottizen.com/api/v1/scratch/atlantic/elite"
Response 200 OK
{
"data": {
"slug": "elite",
"name": "ELITE",
"gameNumber": "4120",
"agency": "ALC",
"province": "atlantic",
"price": 100,
"prizeTiers": [
{ "amount": 10000000, "label": "$10,000,000", "total": 5, "remaining": 5, "isTop": true },
{ "amount": 1000000, "label": "$1,000,000", "total": 5, "remaining": 5, "isTop": false }
],
"topPrizeLabel": "$10,000,000",
"topPrizesTotal": 10,
"topPrizesRemaining": 10,
"remainingPrizePool": 55000000,
"valueRetention": null,
"valueScore": 100,
"scoringMethod": "top_prize_fraction",
"rank": 1
},
"meta": null
}Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | INVALID_PARAM | A query parameter is malformed (e.g. a non-date from/to). |
| 401 | UNAUTHORIZED | Missing or invalid RapidAPI credentials. |
| 404 | GAME_NOT_FOUND | No live game or scratch ticket matches the given slug. |
| 404 | DRAW_NOT_FOUND / STATS_NOT_FOUND | The game exists but has no draw or statistics data. |
| 429 | RATE_LIMIT_EXCEEDED | Plan quota exceeded — enforced by RapidAPI, see below. |
Rate limits & pricing
Plans and quotas are managed on RapidAPI:
- Basic — free, 25 requests/day.
- Pro — $15/month, 5,000 requests/day.
- Ultra — $49/month, 50,000 requests/day.