Developer API

Lottery data, as JSON.

REST/JSON access to Lottizen’s Canada, US and Europe lottery data: winning numbers, 40+ years of draw history, hot/cold/overdue number statistics — and the only scratch-ticket remaining-prize tracker covering all 5 Canadian provinces. Rebuilt daily.

Just want results on a web page? Embed a free widget instead: one iframe, no key, no code.

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):

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

MethodPathDescription
GET/gamesList all games
GET/games/{slug}Get a single game
GET/games/{slug}/latestLatest draw
GET/games/{slug}/drawsDraw history
GET/games/{slug}/statisticsNumber statistics
GET/scratch/ontarioExclusiveOntario scratch tickets — ranked
GET/scratch/ontario/{slug}ExclusiveOntario scratch ticket detail
GET/scratch/{province}ExclusiveScratch tickets by province — ranked
GET/scratch/{province}/{slug}ExclusiveScratch 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

StatusCodeMeaning
400INVALID_PARAMA query parameter is malformed (e.g. a non-date from/to).
401UNAUTHORIZEDMissing or invalid RapidAPI credentials.
404GAME_NOT_FOUNDNo live game or scratch ticket matches the given slug.
404DRAW_NOT_FOUND / STATS_NOT_FOUNDThe game exists but has no draw or statistics data.
429RATE_LIMIT_EXCEEDEDPlan 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.

See current pricing and subscribe on RapidAPI →

IndependentLottizen is an independent data provider — not a lottery operator, and not affiliated with OLG, BCLC, WCLC, ALC, Loto-Québec, MUSL, the NY Lottery, EuroMillions, EuroJackpot, or Allwyn/The National Lottery. Scratch data comes from each agency’s published remaining-prize data; draw results come from operator feeds and, for some older history, established results archives. See methodology.