Overview
The Lottizen Data API covers 19 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 429 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. All data refreshes daily from official sources.
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). Japan is next — coming soon.
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.