Loading…
Reading the draws and working out what chance predicts.
Loading…
Reading the draws and working out what chance predicts.
Data · by machine
Everything the site shows can be taken away without scraping it: a feed for every game, its whole history as a CSV file, and the read-only JSON API the playground itself runs on. No key, no sign-up. The draws belong to the lotteries that held them; the record and the readings are LotteryOracle’s — a link back is appreciated.
Replace us_powerball with any game code from the games index (or from /api/v1/lotteries below). Each hub page also advertises its feeds to feed readers.
/games/us_powerball/feed.xmlRSS 2.0 · the last 20 drawsOne item per draw: the numbers in the title, the jackpot and the sources’ confidence in the description, the draw’s own page as the permalink. A sibling sub-game (Lotto Plus) is named in the title and linked with its slot.
/games/us_powerball/feed.jsonJSON Feed 1.1 · the last 20 drawsThe same items; each carries a _lotteryoracle extension with the raw fields — draw_date, draw_slot, draw_number, main_numbers, bonus_numbers, jackpot_amount, jackpot_currency, verification_status.
/games/us_powerball/draws.csvCSV · every draw on record, oldest firstColumns: draw_date, draw_slot, draw_number, main_numbers (space-separated), bonus_numbers, jackpot_amount, jackpot_currency, verification_status, rule_era — the era id, so a spreadsheet can keep eras apart the way the site does. Sub-games share the file, told apart by draw_slot.
draw_date,draw_slot,draw_number,main_numbers,bonus_numbers,jackpot_amount,jackpot_currency,verification_status,rule_era 2026-08-26,main,,12 32 45 50 58,2,97900000.00,USD,verified,1
/games/us_powerball/draws.icsiCalendar · every draw night, three weeks back and a year aheadSubscribe to it and the game’s draw nights appear in a calendar at the venue’s own clock time, converted to the reader’s — 22:59 in New York is one entry, whatever timezone you keep. Each event links to that night’s draw page, where the result appears once a source reports it. Games whose schedule we infer rather than know say so in the event title.
Two small pages built to be framed: the latest result, and the next draw counting down. Each is a single self-contained document — no fonts, no analytics, no cookies, no requests of any kind — so putting one on your page costs your visitors a few kilobytes and tells us nothing about them. Add ?theme=light for a light card; the default is dark.
<iframe src="https://lotteryoracle.com/embed/us_powerball/result"
width="380" height="180" style="border:0" loading="lazy"
title="Powerball — latest result"></iframe>/embed/us_powerball/resultthe latest draw, as a cardThe numbers in the game’s own colours, the date, and what its sources said about it. It needs 380×180 at that width; a wider frame simply gives the balls more room.
/embed/us_powerball/countdownthe next draw, tickingDays, hours, minutes, seconds to the next draw at the venue’s own time. The instant is baked into the page, so the clock needs no network and cannot drift with your visitor’s timezone. It needs 380×200.
Base path /api/v1. Every scoped endpoint takes ?lottery= (a game code) and optionally &era= (a rule era id from /lotteries); without era the current era is read. One era at a time is enforced here for the same reason it is everywhere on the site: a count that mixes two pools means nothing.
Every scoped response is the same envelope:
{
"data": …,
"meta": {
"scope": { "lottery": "us_powerball", "era": 1 },
"drawCount": 1399,
"generatedAt": "2026-08-28T09:00:00.000Z"
}
}drawCount rides along on every response because nearly every expectation needs D: a client with the counts but not the denominator cannot draw the honest comparison. Errors are problem JSON — { "type", "title", "detail" } with the HTTP status — and never carry database detail. Responses are sent with Cache-Control: s-maxage=3600, stale-while-revalidate=86400: draws land a few times a week and the analytics rebuild nightly, so an hour is never meaningfully stale. Please cache accordingly.
/api/v1/lotteriesevery game with its rule eras · not scopedThe bare list, since this is the call that says what scopes exist. Each game: code, name, countryCode, state, gameKind (ball or digit), timezone, isCurated (eras verified by hand), drawTotal, and eras[].
era.effectiveTo is null for the current era./api/v1/draws?lottery=us_powerballdraws in scope, newest first · paginatedFifty per page by default (limit up to 500). Pages are keyed, not offset: pass the last row’s date back as cursor=YYYY-MM-DD to get the draws before it; nextCursor is null on the last page. contains=7,19,42 narrows to draws holding all of those numbers (up to limit, no cursor).
main for nearly every game).verified, single_source, disputed or unverified — see the methodology.m4b1 is four main numbers and the bonus, m0b1 the bonus alone, m4b1.powerplay the same outcome bought with the add-on, total the table’s own summary row. b* means the bonus was irrelevant to that tier, which is not the same as zero. Null where the label defeated the parser; the reason is then in unknownReason, and /data reports the coverage./api/v1/number-stats?lottery=us_powerballevery number's count and wait, in one draw seriesA lottery can hold several draw series under one name — France’s Loto runs its main draw beside a 2nd tirage and a Super Loto; Italy’s Lotto is eleven city wheels; a hundred digit games are drawn at midday and again in the evening. Counting them together is meaningless, so these figures describe one series: main where the game has it, otherwise the busiest. Add &slot=venezia for another one.
meta.drawCount × k / N, never on its own./api/v1/pairs?lottery=us_powerballevery pair of main numbers that has shared a draw, in one seriesOne draw series, chosen the same way as /number-stats, and &slot= picks another: two numbers drawn in different series were never drawn together.
n1 < n2. Pairs that have never met are absent, not zero.D × C(k,2) / C(N,2) for every pair./api/v1/triplets?lottery=us_powerball&pair=7,19which third numbers have joined a pairFor a pair, every third number that has ever completed it. Computed on demand — a curiosity behind the harmony matrix, not a statistic.
number and together: the third number, and how many draws held all three./api/v1/economics?lottery=us_powerballwhat each draw cost its players, and what it paid backOldest first, up to limit (5,000 by default and at most).&slot= narrows to one draw series. None of this is published by an operator: it is read back out of the prize table, so a draw whose table never arrived is simply absent rather than zero.
bonus_only_tier is the crowd-free reading, taken from a tier whose winners chose their main numbers freely and matched none. multi_tier_median leans on tiers the crowd moves; fund divides a prize pool.The API returns observations. What makes them meaningful is the expectation beside them, and that is the caller’s to compute — meta.drawCount and the era’s k and N are always in reach. The methodology page sets out the thresholds the site uses for “ordinary”, “notable” and “beyond chance”, and the data page shows which games rest on a single source. Nothing here predicts a draw, and nothing built on it should claim to.